summaryrefslogtreecommitdiff
path: root/ironic/conductor
diff options
context:
space:
mode:
authorDerek Higgins <derekh@redhat.com>2020-12-01 09:11:41 +0000
committerJulia Kreger <juliaashleykreger@gmail.com>2021-01-08 15:16:53 +0000
commit7d85b35c8425f10a2fff64dfc82008a93c3a7b98 (patch)
treebbd5de7ae661f9028b2c7faa6a29f3c4e76c7ed1 /ironic/conductor
parentfcf029a0ad078d96ef0da8859d7f361b2d2cac88 (diff)
downloadironic-7d85b35c8425f10a2fff64dfc82008a93c3a7b98.tar.gz
Register all hardware_interfaces together
Prevent each driver comming online one at a time. So that /driver returns nothign until all interfaces are registered Story: #2008423 Task: #41368 Change-Id: I6ef3e6e36b96106faf4581509d9219e5c535a6d8
Diffstat (limited to 'ironic/conductor')
-rw-r--r--ironic/conductor/base_manager.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/ironic/conductor/base_manager.py b/ironic/conductor/base_manager.py
index d4361dfa9..53b2b48ae 100644
--- a/ironic/conductor/base_manager.py
+++ b/ironic/conductor/base_manager.py
@@ -12,6 +12,7 @@
"""Base conductor manager functionality."""
+import copy
import inspect
import threading
@@ -372,15 +373,21 @@ class BaseConductorManager(object):
# first unregister, in case we have cruft laying around
self.conductor.unregister_all_hardware_interfaces()
+ interfaces = []
for ht_name, ht in hardware_types.items():
interface_map = driver_factory.enabled_supported_interfaces(ht)
for interface_type, interface_names in interface_map.items():
default_interface = driver_factory.default_interface(
ht, interface_type, driver_name=ht_name)
- self.conductor.register_hardware_interfaces(ht_name,
- interface_type,
- interface_names,
- default_interface)
+ interface = {}
+ interface["hardware_type"] = ht_name
+ interface["interface_type"] = interface_type
+ for interface_name in interface_names:
+ interface["interface_name"] = interface_name
+ interface["default"] = \
+ (interface_name == default_interface)
+ interfaces.append(copy.copy(interface))
+ self.conductor.register_hardware_interfaces(interfaces)
# TODO(jroll) validate against other conductor, warn if different
# how do we do this performantly? :|