diff options
author | Jim Rollenhagen <jim@jimrollenhagen.com> | 2016-12-19 17:12:01 -0500 |
---|---|---|
committer | Jim Rollenhagen <jim@jimrollenhagen.com> | 2017-01-19 11:28:30 +0000 |
commit | b7e6b737d7aea841e718d66776894986dbcab2a2 (patch) | |
tree | 3e94fcb50267ba74d760eb1b62255cb3bff5a9ba /ironic/objects/conductor.py | |
parent | c1c86e81afa9d14ffd474684046e5759d923b34a (diff) | |
download | ironic-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.py | 25 |
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) |