Add node transition state to table

Change-Id: I21f2c161521766048ad74f961a0bf29ef66b248a
This commit is contained in:
Tzu-Mainn Chen 2014-09-03 05:24:13 +02:00
parent 7d16f7d30e
commit c4175bad8f
3 changed files with 27 additions and 11 deletions

View File

@ -63,7 +63,8 @@ def image_get(request, image_id):
class IronicNode(base.APIResourceWrapper):
_attrs = ('id', 'uuid', 'instance_uuid', 'driver', 'driver_info',
'properties', 'power_state', 'maintenance')
'properties', 'power_state', 'target_power_state',
'maintenance')
def __init__(self, apiresource, request=None):
super(IronicNode, self).__init__(apiresource)
@ -390,6 +391,10 @@ class BareMetalNode(base.APIResourceWrapper):
}
return task_state_dict.get(self.task_state, 'off')
@cached_property
def target_power_state(self):
return None
@cached_property
def driver(self):
"""Return driver for this BareMetalNode
@ -444,8 +449,8 @@ class NodeClient(object):
class Node(base.APIResourceWrapper):
_attrs = ('id', 'uuid', 'instance_uuid', 'driver', 'driver_info',
'power_state', 'addresses', 'maintenance', 'cpus',
'memory_mb', 'local_gb', 'cpu_arch')
'power_state', 'target_power_state', 'addresses', 'maintenance',
'cpus', 'memory_mb', 'local_gb', 'cpu_arch')
def __init__(self, apiresource, request=None, **kwargs):
"""Initialize a Node

View File

@ -109,6 +109,14 @@ def get_role_link(datum):
kwargs={'role_id': datum.role_id})
def get_power_state_with_transition(node):
if node.target_power_state and (
node.power_state != node.target_power_state):
return "{0} -> {1}".format(
node.power_state, node.target_power_state)
return node.power_state
class RegisteredNodesTable(tables.DataTable):
node = tables.Column('uuid',
link="horizon:infrastructure:nodes:detail",
@ -121,14 +129,8 @@ class RegisteredNodesTable(tables.DataTable):
role_name = tables.Column('role_name',
link=get_role_link,
verbose_name=_("Deployment Role"))
power_state = tables.Column("power_state",
verbose_name=_("Power"),
status=True,
status_choices=(
('on', True),
('off', False),
('rebooting', None)
))
power_state = tables.Column(get_power_state_with_transition,
verbose_name=_("Power"))
class Meta:
name = "nodes_table"

View File

@ -134,6 +134,7 @@ def data(TEST):
'cpu_arch': 'x86_64',
},
'power_state': 'on',
'target_power_state': 'on',
'maintenance': None,
'newly_discovered': None,
})
@ -156,6 +157,7 @@ def data(TEST):
'cpu_arch': 'x86_64',
},
'power_state': 'on',
'target_power_state': 'on',
'maintenance': None,
'newly_discovered': None,
})
@ -178,6 +180,7 @@ def data(TEST):
'cpu_arch': 'x86_64',
},
'power_state': 'rebooting',
'target_power_state': 'on',
'maintenance': None,
'newly_discovered': None,
})
@ -200,6 +203,7 @@ def data(TEST):
'cpu_arch': 'x86_64',
},
'power_state': 'on',
'target_power_state': 'on',
'maintenance': None,
'newly_discovered': None,
})
@ -222,6 +226,7 @@ def data(TEST):
'cpu_arch': 'x86_64',
},
'power_state': 'error',
'target_power_state': 'on',
'maintenance': None,
'newly_discovered': None,
})
@ -244,6 +249,7 @@ def data(TEST):
'cpu_arch': 'x86_64',
},
'power_state': 'on',
'target_power_state': 'on',
'maintenance': None,
'newly_discovered': None,
})
@ -266,6 +272,7 @@ def data(TEST):
'cpu_arch': 'x86_64',
},
'power_state': 'off',
'target_power_state': 'on',
'maintenance': True,
'newly_discovered': None,
})
@ -288,6 +295,7 @@ def data(TEST):
'cpu_arch': 'x86_64',
},
'power_state': 'on',
'target_power_state': 'on',
'maintenance': True,
'newly_discovered': True,
})
@ -310,6 +318,7 @@ def data(TEST):
'cpu_arch': 'x86_64',
},
'power_state': 'on',
'target_power_state': 'on',
'maintenance': True,
'newly_discovered': True,
})