]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/orchestrator: add 'labels' property to InventoryNode
authorSage Weil <sage@redhat.com>
Mon, 25 Nov 2019 14:44:37 +0000 (08:44 -0600)
committerSage Weil <sage@redhat.com>
Tue, 26 Nov 2019 14:01:26 +0000 (08:01 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
src/pybind/mgr/orchestrator.py

index 46caf9e739809e78fe5b4dd833a53e3c4ace2d57..4cbac143145cc17914d10c4e6eb11478023970f0 100644 (file)
@@ -965,17 +965,22 @@ class InventoryNode(object):
     When fetching inventory, all Devices are groups inside of an
     InventoryNode.
     """
-    def __init__(self, name, devices=None):
-        # type: (str, inventory.Devices) -> None
+    def __init__(self, name, devices=None, labels=None):
+        # type: (str, inventory.Devices, List[str]) -> None
         if devices is None:
             devices = inventory.Devices([])
         assert isinstance(devices, inventory.Devices)
 
         self.name = name  # unique within cluster.  For example a hostname.
         self.devices = devices
+        self.labels = labels
 
     def to_json(self):
-        return {'name': self.name, 'devices': self.devices.to_json()}
+        return {
+            'name': self.name,
+            'devices': self.devices.to_json(),
+            'labels': self.labels,
+        }
 
     @classmethod
     def from_json(cls, data):
@@ -986,7 +991,8 @@ class InventoryNode(object):
             if _data:
                 error_msg = 'Unknown key(s) in Inventory: {}'.format(','.join(_data.keys()))
                 raise OrchestratorValidationError(error_msg)
-            return cls(name, devices)
+            labels = _data.get('labels', list())
+            return cls(name, devices, labels)
         except KeyError as e:
             error_msg = '{} is required for {}'.format(e, cls.__name__)
             raise OrchestratorValidationError(error_msg)