Addresses #153 by adding a maintenance_info property onto node-like objects; see test/slice_topology_test.py line 644 for how to use
Example of how to use it. maintenance_info propery is valid for NetworkNodes and CompositeNodes (within a Topology object):
# maintenance mode - the object needs to be constructed prior to being assigned to the property
# along with the state (MaintenanceState) you can specify datetime deadline and expected_end (presumed in UTC)
minfo = MaintenanceInfo()
minfo.add(name=n1.name, minfo=MaintenanceEntry(state=MaintenanceState.PreMaint, deadline=datetime.now(), expected_end=datetime.now() + timedelta(days=1))
n1.maintenance_info = minfo
self.assertEqual(n1.maintenance_info.get(n1.name).state, MaintenanceState.PreMaint)
# check it is finalized
self.assertEqual(n1.maintenance_info._lock, True)
# try to modify after assignment
with self.assertRaises(MaintenanceModeException):
n1.maintenance_info.add(name='n3', minfo=MaintenanceEntry(state=MaintenanceState.PreMaint,
deadline=datetime.datetime.now()))
if you are operating on slivers, you can do this:
minfo = MaintenanceInfo()
minfo.add('node1', minfo=MaintenanceEntry(state=MaintenanceState.Active))
ns = NodeSliver()
ns.set_properties(name='node1', type=NodeType.Server,
management_ip='192.168.1.1',
maintenance_info=minfo)
with self.assertRaises(ValueError) as ve:
ns.set_property('management_ip', '192.168.1.x')
self.assertEqual(ns.get_maintenance_info().get('node1').state, MaintenanceState.Active)
maintenance_info property on NetworkNodes and CompositeNodes carries a dictionary keyed by node name so it looks like this:
class MaintenanceEntry:
state: MaintenanceState
deadline: datetime = None # when it starts
expected_end: datetime = None # how long it may be
minfo = MaintenanceInfo()
minfo.add(name='node1', minfo=MaintenanceEntry(state=MaintenanceState.PreMaint, deadline=datetime.now(), expected_end=datetime.now() + timedelta(days=1))
minfo.add(name='node2', minfo=MaintenanceEntry(state=MaintenanceState.PreMaint, deadline=datetime.now(), expected_end=datetime.now() + timedelta(days=1))
minfo.add(name='node3', minfo=MaintenanceEntry(state=MaintenanceState.PreMaint, deadline=datetime.now(), expected_end=datetime.now() + timedelta(days=1))
minfo.add(name='node4', minfo=MaintenanceEntry(state=MaintenanceState.PreMaint, deadline=datetime.now(), expected_end=datetime.now() + timedelta(days=1))
composite_node.maintenance_info = minfo
Addresses #153 by adding a maintenance_info property onto node-like objects; see test/slice_topology_test.py line 644 for how to use
Example of how to use it.
maintenance_info
propery is valid for NetworkNodes and CompositeNodes (within a Topology object):if you are operating on slivers, you can do this:
maintenance_info
property on NetworkNodes and CompositeNodes carries a dictionary keyed by node name so it looks like this:In PyPi as
fabric_fim==1.4.0rc5