summaryrefslogtreecommitdiff
path: root/ironic/objects/conductor.py
diff options
context:
space:
mode:
authorJim Rollenhagen <jim@jimrollenhagen.com>2016-12-19 17:12:01 -0500
committerJim Rollenhagen <jim@jimrollenhagen.com>2017-01-19 11:28:30 +0000
commitb7e6b737d7aea841e718d66776894986dbcab2a2 (patch)
tree3e94fcb50267ba74d760eb1b62255cb3bff5a9ba /ironic/objects/conductor.py
parentc1c86e81afa9d14ffd474684046e5759d923b34a (diff)
downloadironic-b7e6b737d7aea841e718d66776894986dbcab2a2.tar.gz
Register/unregister hardware interfaces for conductors
This registers the intersection of supported and enabled interfaces for each hardware type enabled in the conductor at conductor startup, and unregisters them at conductor shutdown. Validation is left as a todo for now. Change-Id: I14e88bfc304de9414de008d1cc8568dda9115ecc Partial-Bug: #1524745
Diffstat (limited to 'ironic/objects/conductor.py')
-rw-r--r--ironic/objects/conductor.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/ironic/objects/conductor.py b/ironic/objects/conductor.py
index 18831a3ae..dba3712d1 100644
--- a/ironic/objects/conductor.py
+++ b/ironic/objects/conductor.py
@@ -27,7 +27,9 @@ class Conductor(base.IronicObject, object_base.VersionedObjectDictCompat):
# Version 1.0: Initial version
# Version 1.1: Add register() and unregister(), make the context parameter
# to touch() optional.
- VERSION = '1.1'
+ # Version 1.2: Add register_hardware_interfaces() and
+ # unregister_all_hardware_interfaces()
+ VERSION = '1.2'
dbapi = db_api.get_instance()
@@ -115,4 +117,25 @@ class Conductor(base.IronicObject, object_base.VersionedObjectDictCompat):
# @object_base.remotable
def unregister(self, context=None):
"""Remove this conductor from the service registry."""
+ self.unregister_all_hardware_interfaces()
self.dbapi.unregister_conductor(self.hostname)
+
+ def register_hardware_interfaces(self, hardware_type, interface_type,
+ interfaces, default_interface):
+ """Register hardware interfaces with the conductor.
+
+ :param hardware_type: Name of hardware type for the interfaces.
+ :param interface_type: Type of interfaces, e.g. 'deploy' or 'boot'.
+ :param interfaces: List of interface names to register.
+ :param default_interface: String, the default interface for this
+ hardware type and interface type.
+ """
+ self.dbapi.register_conductor_hardware_interfaces(self.id,
+ hardware_type,
+ interface_type,
+ interfaces,
+ default_interface)
+
+ def unregister_all_hardware_interfaces(self):
+ """Unregister all hardware interfaces for this conductor."""
+ self.dbapi.unregister_conductor_hardware_interfaces(self.id)