Merge "Add reource_name in action input parameter field"
This commit is contained in:
commit
a01b4ddc81
@ -60,6 +60,10 @@ class ChangeNovaServiceState(base.BaseAction):
|
||||
'type': 'string',
|
||||
"minlength": 1
|
||||
},
|
||||
'resource_name': {
|
||||
'type': 'string',
|
||||
"minlength": 1
|
||||
},
|
||||
'state': {
|
||||
'type': 'string',
|
||||
'enum': [element.ServiceState.ONLINE.value,
|
||||
|
@ -87,6 +87,10 @@ class Migrate(base.BaseAction):
|
||||
"([a-fA-F0-9]){4}-([a-fA-F0-9]){4}-"
|
||||
"([a-fA-F0-9]){12}$")
|
||||
},
|
||||
'resource_name': {
|
||||
'type': 'string',
|
||||
"minlength": 1
|
||||
},
|
||||
'source_node': {
|
||||
'type': 'string',
|
||||
"minLength": 1
|
||||
|
@ -46,6 +46,7 @@ class Instance(compute_resource.ComputeResource):
|
||||
# If the resource is excluded by the scope,
|
||||
# 'watcher_exclude' property will be set True.
|
||||
"watcher_exclude": wfields.BooleanField(default=False),
|
||||
"name": wfields.StringField(),
|
||||
"state": wfields.StringField(default=InstanceState.ACTIVE.value),
|
||||
"memory": wfields.NonNegativeIntegerField(),
|
||||
"disk": wfields.IntegerField(),
|
||||
|
@ -450,7 +450,8 @@ class BaseStrategy(loadable.Loadable):
|
||||
destination_node):
|
||||
parameters = {'migration_type': migration_type,
|
||||
'source_node': source_node.uuid,
|
||||
'destination_node': destination_node.uuid}
|
||||
'destination_node': destination_node.uuid,
|
||||
'resource_name': instance.name}
|
||||
self.solution.add_action(action_type=self.MIGRATION,
|
||||
resource_id=instance.uuid,
|
||||
input_parameters=parameters)
|
||||
|
@ -323,7 +323,8 @@ class BasicConsolidation(base.ServerConsolidationBaseStrategy):
|
||||
|
||||
def add_action_disable_node(self, node):
|
||||
parameters = {'state': element.ServiceState.DISABLED.value,
|
||||
'disabled_reason': self.REASON_FOR_DISABLE}
|
||||
'disabled_reason': self.REASON_FOR_DISABLE,
|
||||
'resource_name': node.hostname}
|
||||
self.solution.add_action(action_type=self.CHANGE_NOVA_SERVICE_STATE,
|
||||
resource_id=node.uuid,
|
||||
input_parameters=parameters)
|
||||
|
@ -185,7 +185,8 @@ class HostMaintenance(base.HostMaintenanceBaseStrategy):
|
||||
|
||||
def add_action_enable_compute_node(self, node):
|
||||
"""Add an action for node enabler into the solution."""
|
||||
params = {'state': element.ServiceState.ENABLED.value}
|
||||
params = {'state': element.ServiceState.ENABLED.value,
|
||||
'resource_name': node.hostname}
|
||||
self.solution.add_action(
|
||||
action_type=self.CHANGE_NOVA_SERVICE_STATE,
|
||||
resource_id=node.uuid,
|
||||
@ -194,7 +195,8 @@ class HostMaintenance(base.HostMaintenanceBaseStrategy):
|
||||
def add_action_maintain_compute_node(self, node):
|
||||
"""Add an action for node maintenance into the solution."""
|
||||
params = {'state': element.ServiceState.DISABLED.value,
|
||||
'disabled_reason': self.REASON_FOR_MAINTAINING}
|
||||
'disabled_reason': self.REASON_FOR_MAINTAINING,
|
||||
'resource_name': node.hostname}
|
||||
self.solution.add_action(
|
||||
action_type=self.CHANGE_NOVA_SERVICE_STATE,
|
||||
resource_id=node.uuid,
|
||||
@ -221,7 +223,8 @@ class HostMaintenance(base.HostMaintenanceBaseStrategy):
|
||||
migration_type = 'cold'
|
||||
|
||||
params = {'migration_type': migration_type,
|
||||
'source_node': src_node.uuid}
|
||||
'source_node': src_node.uuid,
|
||||
'resource_name': instance.name}
|
||||
if des_node:
|
||||
params['destination_node'] = des_node.uuid
|
||||
self.solution.add_action(action_type=self.INSTANCE_MIGRATION,
|
||||
|
@ -280,7 +280,8 @@ class NoisyNeighbor(base.NoisyNeighborBaseStrategy):
|
||||
mig_destination_node):
|
||||
parameters = {'migration_type': 'live',
|
||||
'source_node': mig_source_node.uuid,
|
||||
'destination_node': mig_destination_node.uuid}
|
||||
'destination_node': mig_destination_node.uuid,
|
||||
'resource_name': instance_to_migrate.name}
|
||||
self.solution.add_action(action_type=self.MIGRATION,
|
||||
resource_id=instance_to_migrate.uuid,
|
||||
input_parameters=parameters)
|
||||
|
@ -282,7 +282,8 @@ class OutletTempControl(base.ThermalOptimizationBaseStrategy):
|
||||
instance_src, mig_source_node, mig_destination_node):
|
||||
parameters = {'migration_type': 'live',
|
||||
'source_node': mig_source_node.uuid,
|
||||
'destination_node': mig_destination_node.uuid}
|
||||
'destination_node': mig_destination_node.uuid,
|
||||
'resource_name': instance_src.name}
|
||||
self.solution.add_action(action_type=self.MIGRATION,
|
||||
resource_id=instance_src.uuid,
|
||||
input_parameters=parameters)
|
||||
|
@ -165,7 +165,8 @@ class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
|
||||
:param node: node object
|
||||
:return: None
|
||||
"""
|
||||
params = {'state': element.ServiceState.ENABLED.value}
|
||||
params = {'state': element.ServiceState.ENABLED.value,
|
||||
'resource_name': node.hostname}
|
||||
self.solution.add_action(
|
||||
action_type=self.CHANGE_NOVA_SERVICE_STATE,
|
||||
resource_id=node.uuid,
|
||||
@ -179,7 +180,8 @@ class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
|
||||
:return: None
|
||||
"""
|
||||
params = {'state': element.ServiceState.DISABLED.value,
|
||||
'disabled_reason': self.REASON_FOR_DISABLE}
|
||||
'disabled_reason': self.REASON_FOR_DISABLE,
|
||||
'resource_name': node.hostname}
|
||||
self.solution.add_action(
|
||||
action_type=self.CHANGE_NOVA_SERVICE_STATE,
|
||||
resource_id=node.uuid,
|
||||
|
@ -83,6 +83,7 @@ class TestNovaClusterDataModelCollector(base.TestCase):
|
||||
tenant_id='ff560f7e-dbc8-771f-960c-164482fce21b',
|
||||
)
|
||||
setattr(fake_instance, 'OS-EXT-STS:vm_state', 'VM_STATE')
|
||||
setattr(fake_instance, 'name', 'fake_instance')
|
||||
# Returns the hypervisors with details (service) but no servers.
|
||||
m_nova_helper.get_compute_node_list.return_value = [fake_compute_node]
|
||||
# Returns the hypervisor with servers and details (service).
|
||||
|
@ -1,47 +1,47 @@
|
||||
<ModelRoot>
|
||||
<ComputeNode human_id="" uuid="Node_0" status="enabled" state="up" id="0" hostname="hostname_0" vcpus="40" disk="250" disk_capacity="250" memory="132">
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_0" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_1" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="26F03131-32CB-4697-9D61-9123F87A8147"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_0" uuid="INSTANCE_0" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_1" uuid="INSTANCE_1" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="26F03131-32CB-4697-9D61-9123F87A8147"/>
|
||||
</ComputeNode>
|
||||
<ComputeNode human_id="" uuid="Node_1" status="enabled" state="up" id="1" hostname="hostname_1" vcpus="40" disk="250" disk_capacity="250" memory="132">
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_2" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="109F7909-0607-4712-B32C-5CC6D49D2F15"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_2" uuid="INSTANCE_2" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="109F7909-0607-4712-B32C-5CC6D49D2F15"/>
|
||||
</ComputeNode>
|
||||
<ComputeNode human_id="" uuid="Node_2" status="enabled" state="up" id="2" hostname="hostname_2" vcpus="40" disk="250" disk_capacity="250" memory="132">
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_3" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_4" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_5" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_3" uuid="INSTANCE_3" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_4" uuid="INSTANCE_4" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_5" uuid="INSTANCE_5" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
</ComputeNode>
|
||||
<ComputeNode human_id="" uuid="Node_3" status="enabled" state="up" id="3" hostname="hostname_3" vcpus="40" disk="250" disk_capacity="250" memory="132">
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_6" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_6" uuid="INSTANCE_6" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
</ComputeNode>
|
||||
<ComputeNode human_id="" uuid="Node_4" status="enabled" state="up" id="4" hostname="hostname_4" vcpus="40" disk="250" disk_capacity="250" memory="132">
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_7" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_7" uuid="INSTANCE_7" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
</ComputeNode>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_10" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_11" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_12" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_13" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_14" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_15" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_16" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_17" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_18" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_19" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_20" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_21" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_22" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_23" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_24" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_25" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_26" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_27" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_28" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_29" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_30" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_31" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_32" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_33" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_34" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_8" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="" uuid="INSTANCE_9" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_10" uuid="INSTANCE_10" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_11" uuid="INSTANCE_11" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_12" uuid="INSTANCE_12" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_13" uuid="INSTANCE_13" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_14" uuid="INSTANCE_14" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_15" uuid="INSTANCE_15" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_16" uuid="INSTANCE_16" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_17" uuid="INSTANCE_17" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_18" uuid="INSTANCE_18" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_19" uuid="INSTANCE_19" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_20" uuid="INSTANCE_20" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_21" uuid="INSTANCE_21" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_22" uuid="INSTANCE_22" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_23" uuid="INSTANCE_23" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_24" uuid="INSTANCE_24" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_25" uuid="INSTANCE_25" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_26" uuid="INSTANCE_26" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_27" uuid="INSTANCE_27" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_28" uuid="INSTANCE_28" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_29" uuid="INSTANCE_29" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_30" uuid="INSTANCE_30" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_31" uuid="INSTANCE_31" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_32" uuid="INSTANCE_32" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_33" uuid="INSTANCE_33" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_34" uuid="INSTANCE_34" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_8" uuid="INSTANCE_8" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
<Instance watcher_exclude="False" state="active" human_id="" name="INSTANCE_9" uuid="INSTANCE_9" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
</ModelRoot>
|
||||
|
@ -99,6 +99,7 @@ class FakerModelCollector(base.BaseClusterDataModelCollector):
|
||||
project_id = "91FFFE30-78A0-4152-ACD2-8310FF274DC9"
|
||||
instance_attributes = {
|
||||
"uuid": instance_uuid,
|
||||
"name": instance_uuid,
|
||||
"memory": 2,
|
||||
"disk": 20,
|
||||
"disk_capacity": 20,
|
||||
|
@ -101,7 +101,8 @@ class TestHostMaintenance(TestBaseStrategy):
|
||||
expected = [{'action_type': 'change_nova_service_state',
|
||||
'input_parameters': {
|
||||
'state': 'enabled',
|
||||
'resource_id': 'Node_0'}}]
|
||||
'resource_id': 'Node_0',
|
||||
'resource_name': 'hostname_0'}}]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
|
||||
def test_add_action_maintain_compute_node(self):
|
||||
@ -113,7 +114,8 @@ class TestHostMaintenance(TestBaseStrategy):
|
||||
'input_parameters': {
|
||||
'state': 'disabled',
|
||||
'disabled_reason': 'watcher_maintaining',
|
||||
'resource_id': 'Node_0'}}]
|
||||
'resource_id': 'Node_0',
|
||||
'resource_name': 'hostname_0'}}]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
|
||||
def test_instance_migration(self):
|
||||
@ -128,7 +130,9 @@ class TestHostMaintenance(TestBaseStrategy):
|
||||
'input_parameters': {'destination_node': node_1.uuid,
|
||||
'source_node': node_0.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': instance_0.uuid}}]
|
||||
'resource_id': instance_0.uuid,
|
||||
'resource_name': instance_0.name
|
||||
}}]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
|
||||
def test_instance_migration_without_dest_node(self):
|
||||
@ -141,7 +145,9 @@ class TestHostMaintenance(TestBaseStrategy):
|
||||
expected = [{'action_type': 'migrate',
|
||||
'input_parameters': {'source_node': node_0.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': instance_0.uuid}}]
|
||||
'resource_id': instance_0.uuid,
|
||||
'resource_name': instance_0.name
|
||||
}}]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
|
||||
def test_host_migration(self):
|
||||
@ -157,12 +163,16 @@ class TestHostMaintenance(TestBaseStrategy):
|
||||
'input_parameters': {'destination_node': node_1.uuid,
|
||||
'source_node': node_0.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': instance_0.uuid}},
|
||||
'resource_id': instance_0.uuid,
|
||||
'resource_name': instance_0.name
|
||||
}},
|
||||
{'action_type': 'migrate',
|
||||
'input_parameters': {'destination_node': node_1.uuid,
|
||||
'source_node': node_0.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': instance_1.uuid}}]
|
||||
'resource_id': instance_1.uuid,
|
||||
'resource_name': instance_1.name
|
||||
}}]
|
||||
self.assertIn(expected[0], self.strategy.solution.actions)
|
||||
self.assertIn(expected[1], self.strategy.solution.actions)
|
||||
|
||||
@ -209,10 +219,12 @@ class TestHostMaintenance(TestBaseStrategy):
|
||||
expected = [{'action_type': 'change_nova_service_state',
|
||||
'input_parameters': {
|
||||
'resource_id': 'Node_3',
|
||||
'resource_name': 'hostname_3',
|
||||
'state': 'enabled'}},
|
||||
{'action_type': 'change_nova_service_state',
|
||||
'input_parameters': {
|
||||
'resource_id': 'Node_2',
|
||||
'resource_name': 'hostname_2',
|
||||
'state': 'disabled',
|
||||
'disabled_reason': 'watcher_maintaining'}},
|
||||
{'action_type': 'migrate',
|
||||
@ -220,7 +232,8 @@ class TestHostMaintenance(TestBaseStrategy):
|
||||
'destination_node': node_3.uuid,
|
||||
'source_node': node_2.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': instance_4.uuid}}]
|
||||
'resource_id': instance_4.uuid,
|
||||
'resource_name': instance_4.name}}]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
|
||||
result = self.strategy.post_execute()
|
||||
|
@ -127,7 +127,8 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
|
||||
'input_parameters': {'destination_node': n2.uuid,
|
||||
'source_node': n1.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': instance_uuid}}
|
||||
'resource_id': instance.uuid,
|
||||
'resource_name': instance.name}}
|
||||
self.assertEqual(expected, self.strategy.solution.actions[0])
|
||||
|
||||
def test_add_migration_with_paused_state(self):
|
||||
@ -149,7 +150,8 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
|
||||
'input_parameters': {'destination_node': n2.uuid,
|
||||
'source_node': n1.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': instance_uuid}}
|
||||
'resource_id': instance.uuid,
|
||||
'resource_name': instance.name}}
|
||||
self.assertEqual(expected, self.strategy.solution.actions[0])
|
||||
|
||||
def test_is_overloaded(self):
|
||||
@ -191,7 +193,8 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
|
||||
self.strategy.add_action_enable_compute_node(n)
|
||||
expected = [{'action_type': 'change_nova_service_state',
|
||||
'input_parameters': {'state': 'enabled',
|
||||
'resource_id': 'Node_0'}}]
|
||||
'resource_id': 'Node_0',
|
||||
'resource_name': 'hostname_0'}}]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
|
||||
def test_add_action_disable_node(self):
|
||||
@ -204,7 +207,8 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
|
||||
'input_parameters': {
|
||||
'state': 'disabled',
|
||||
'disabled_reason': 'watcher_disabled',
|
||||
'resource_id': 'Node_0'}}]
|
||||
'resource_id': 'Node_0',
|
||||
'resource_name': 'hostname_0'}}]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
|
||||
def test_disable_unused_nodes(self):
|
||||
@ -226,7 +230,8 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
|
||||
'input_parameters': {
|
||||
'state': 'disabled',
|
||||
'disabled_reason': 'watcher_disabled',
|
||||
'resource_id': 'Node_0'}}
|
||||
'resource_id': 'Node_0',
|
||||
'resource_name': 'hostname_0'}}
|
||||
self.assertEqual(2, len(self.strategy.solution.actions))
|
||||
self.assertEqual(expected, self.strategy.solution.actions[1])
|
||||
|
||||
@ -246,13 +251,15 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
|
||||
n1 = model.get_node_by_uuid('Node_0')
|
||||
n2 = model.get_node_by_uuid('Node_1')
|
||||
instance_uuid = 'INSTANCE_0'
|
||||
instance = model.get_instance_by_uuid(instance_uuid)
|
||||
cc = {'cpu': 1.0, 'ram': 1.0, 'disk': 1.0}
|
||||
self.strategy.consolidation_phase(cc)
|
||||
expected = [{'action_type': 'migrate',
|
||||
'input_parameters': {'destination_node': n2.uuid,
|
||||
'source_node': n1.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': instance_uuid}}]
|
||||
'resource_id': instance.uuid,
|
||||
'resource_name': instance.name}}]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
|
||||
def test_strategy(self):
|
||||
@ -266,32 +273,39 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
|
||||
n1 = model.get_node_by_uuid('Node_0')
|
||||
self.strategy.get_relative_cluster_utilization = mock.MagicMock()
|
||||
self.strategy.do_execute()
|
||||
n2 = self.strategy.solution.actions[0][
|
||||
n2_uuid = self.strategy.solution.actions[0][
|
||||
'input_parameters']['destination_node']
|
||||
n3 = self.strategy.solution.actions[2][
|
||||
n2 = model.get_node_by_uuid(n2_uuid)
|
||||
n3_uuid = self.strategy.solution.actions[2][
|
||||
'input_parameters']['resource_id']
|
||||
n4 = self.strategy.solution.actions[3][
|
||||
n3 = model.get_node_by_uuid(n3_uuid)
|
||||
n4_uuid = self.strategy.solution.actions[3][
|
||||
'input_parameters']['resource_id']
|
||||
n4 = model.get_node_by_uuid(n4_uuid)
|
||||
expected = [{'action_type': 'migrate',
|
||||
'input_parameters': {'destination_node': n2,
|
||||
'input_parameters': {'destination_node': n2.uuid,
|
||||
'source_node': n1.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': 'INSTANCE_3'}},
|
||||
'resource_id': 'INSTANCE_3',
|
||||
'resource_name': ''}},
|
||||
{'action_type': 'migrate',
|
||||
'input_parameters': {'destination_node': n2,
|
||||
'input_parameters': {'destination_node': n2.uuid,
|
||||
'source_node': n1.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': 'INSTANCE_1'}},
|
||||
'resource_id': 'INSTANCE_1',
|
||||
'resource_name': ''}},
|
||||
{'action_type': 'change_nova_service_state',
|
||||
'input_parameters': {'state': 'disabled',
|
||||
'disabled_reason':
|
||||
'watcher_disabled',
|
||||
'resource_id': n3}},
|
||||
'resource_id': n3.uuid,
|
||||
'resource_name': n3.hostname}},
|
||||
{'action_type': 'change_nova_service_state',
|
||||
'input_parameters': {'state': 'disabled',
|
||||
'disabled_reason':
|
||||
'watcher_disabled',
|
||||
'resource_id': n4}}]
|
||||
'resource_id': n4.uuid,
|
||||
'resource_name': n4.hostname}}]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
|
||||
compute_nodes_count = len(self.strategy.get_available_compute_nodes())
|
||||
@ -319,16 +333,19 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
|
||||
'input_parameters': {'destination_node': n2.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': 'INSTANCE_6',
|
||||
'resource_name': '',
|
||||
'source_node': n1.uuid}},
|
||||
{'action_type': 'migrate',
|
||||
'input_parameters': {'destination_node': n2.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': 'INSTANCE_7',
|
||||
'resource_name': '',
|
||||
'source_node': n1.uuid}},
|
||||
{'action_type': 'migrate',
|
||||
'input_parameters': {'destination_node': n2.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': 'INSTANCE_8',
|
||||
'resource_name': '',
|
||||
'source_node': n1.uuid}}]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
self.strategy.consolidation_phase(cc)
|
||||
@ -336,6 +353,7 @@ class TestVMWorkloadConsolidation(TestBaseStrategy):
|
||||
'input_parameters': {'destination_node': n1.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': 'INSTANCE_7',
|
||||
'resource_name': '',
|
||||
'source_node': n2.uuid}})
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
self.strategy.optimize_solution()
|
||||
|
Loading…
x
Reference in New Issue
Block a user