Exemplo n.º 1
0
    def test_instance_update_node_notfound_set_unmapped(
            self, m_nova_helper_cls):
        m_get_compute_node_by_hostname = mock.Mock(
            side_effect=exception.ComputeNodeNotFound(name="TEST"))
        m_nova_helper_cls.return_value = mock.Mock(
            get_compute_node_by_hostname=m_get_compute_node_by_hostname,
            name='m_nova_helper')

        compute_model = self.fake_cdmc.generate_scenario_3_with_2_nodes()
        self.fake_cdmc.cluster_data_model = compute_model
        handler = novanotification.InstanceUpdated(self.fake_cdmc)

        instance0_uuid = '9966d6bd-a45c-4e1c-9d57-3054899a3ec7'

        message = self.load_message('scenario3_notfound_instance-update.json')

        handler.info(
            ctxt=self.context,
            publisher_id=message['publisher_id'],
            event_type=message['event_type'],
            payload=message['payload'],
            metadata=self.FAKE_METADATA,
        )

        instance0 = compute_model.get_instance_by_uuid(instance0_uuid)

        self.assertEqual(element.InstanceState.PAUSED.value, instance0.state)
        self.assertEqual(1, instance0.vcpus)
        self.assertEqual(1, instance0.disk)
        self.assertEqual(1, instance0.disk_capacity)
        self.assertEqual(512, instance0.memory)

        m_get_compute_node_by_hostname.assert_any_call('Node_2')
        self.assertRaises(exception.ComputeNodeNotFound,
                          compute_model.get_node_by_uuid, 'Node_2')
Exemplo n.º 2
0
    def __init__(self):
        self.api_version = self.API_VERSION
        self.service_name = None

        # fake cluster instead on Nova CDM
        self.fake_cdmc = faker_cluster_state.FakerModelCollector()

        self.publisher_id = 'test_publisher_id'
        self.conductor_topic = 'test_conductor_topic'
        self.status_topic = 'test_status_topic'
        self.notification_topics = ['nova']

        self.conductor_endpoints = []  # Disable audit endpoint
        self.status_endpoints = []

        self.notification_endpoints = [
            novanotification.ServiceUpdated(self.fake_cdmc),
            novanotification.InstanceCreated(self.fake_cdmc),
            novanotification.InstanceUpdated(self.fake_cdmc),
            novanotification.InstanceDeletedEnd(self.fake_cdmc),
            novanotification.LegacyInstanceCreatedEnd(self.fake_cdmc),
            novanotification.LegacyInstanceUpdated(self.fake_cdmc),
            novanotification.LegacyLiveMigratedEnd(self.fake_cdmc),
            novanotification.LegacyInstanceDeletedEnd(self.fake_cdmc),
        ]
Exemplo n.º 3
0
 def notification_endpoints(self):
     return [
         novanotification.ServiceUpdated(self.fake_cdmc),
         novanotification.InstanceCreated(self.fake_cdmc),
         novanotification.InstanceUpdated(self.fake_cdmc),
         novanotification.InstanceDeletedEnd(self.fake_cdmc),
         novanotification.LegacyInstanceCreatedEnd(self.fake_cdmc),
         novanotification.LegacyInstanceUpdated(self.fake_cdmc),
         novanotification.LegacyLiveMigratedEnd(self.fake_cdmc),
         novanotification.LegacyInstanceDeletedEnd(self.fake_cdmc),
     ]
Exemplo n.º 4
0
    def test_nova_instance_update_notfound_still_creates(
            self, m_nova_helper_cls):
        m_get_compute_node_by_hostname = mock.Mock(
            side_effect=lambda uuid: mock.Mock(
                name='m_get_compute_node_by_hostname',
                id=3,
                uuid=uuid,
                memory_mb=7777,
                vcpus=42,
                free_disk_gb=974,
                local_gb=1337))
        m_nova_helper_cls.return_value = mock.Mock(
            get_compute_node_by_hostname=m_get_compute_node_by_hostname,
            name='m_nova_helper')

        compute_model = self.fake_cdmc.generate_scenario_3_with_2_nodes()
        self.fake_cdmc.cluster_data_model = compute_model
        handler = novanotification.InstanceUpdated(self.fake_cdmc)

        instance0_uuid = '9966d6bd-a45c-4e1c-9d57-3054899a3ec7'

        message = self.load_message('scenario3_notfound_instance-update.json')

        handler.info(
            ctxt=self.context,
            publisher_id=message['publisher_id'],
            event_type=message['event_type'],
            payload=message['payload'],
            metadata=self.FAKE_METADATA,
        )

        instance0 = compute_model.get_instance_by_uuid(instance0_uuid)
        cpu_capacity = compute_model.get_resource_by_uuid(
            element.ResourceType.cpu_cores)
        disk = compute_model.get_resource_by_uuid(element.ResourceType.disk)
        disk_capacity = compute_model.get_resource_by_uuid(
            element.ResourceType.disk_capacity)
        memory_capacity = compute_model.get_resource_by_uuid(
            element.ResourceType.memory)

        self.assertEqual(element.InstanceState.PAUSED.value, instance0.state)
        self.assertEqual(1, cpu_capacity.get_capacity(instance0))
        self.assertEqual(1, disk_capacity.get_capacity(instance0))
        self.assertEqual(512, memory_capacity.get_capacity(instance0))

        m_get_compute_node_by_hostname.assert_called_once_with('Node_2')
        node_2 = compute_model.get_node_by_uuid('Node_2')
        self.assertEqual(7777, memory_capacity.get_capacity(node_2))
        self.assertEqual(42, cpu_capacity.get_capacity(node_2))
        self.assertEqual(974, disk.get_capacity(node_2))
        self.assertEqual(1337, disk_capacity.get_capacity(node_2))
Exemplo n.º 5
0
    def notification_endpoints(self):
        """Associated notification endpoints

        :return: Associated notification endpoints
        :rtype: List of :py:class:`~.EventsNotificationEndpoint` instances
        """
        return [
            nova.ServiceUpdated(self),
            nova.InstanceCreated(self),
            nova.InstanceUpdated(self),
            nova.InstanceDeletedEnd(self),
            nova.LegacyInstanceCreatedEnd(self),
            nova.LegacyInstanceUpdated(self),
            nova.LegacyInstanceDeletedEnd(self),
            nova.LegacyLiveMigratedEnd(self),
        ]
Exemplo n.º 6
0
    def test_nova_instance_update(self):
        compute_model = self.fake_cdmc.generate_scenario_3_with_2_nodes()
        self.fake_cdmc.cluster_data_model = compute_model
        handler = novanotification.InstanceUpdated(self.fake_cdmc)

        instance0_uuid = '73b09e16-35b7-4922-804e-e8f5d9b740fc'
        instance0 = compute_model.get_instance_by_uuid(instance0_uuid)

        message = self.load_message('scenario3_instance-update.json')

        self.assertEqual(element.InstanceState.ACTIVE.value, instance0.state)

        handler.info(
            ctxt=self.context,
            publisher_id=message['publisher_id'],
            event_type=message['event_type'],
            payload=message['payload'],
            metadata=self.FAKE_METADATA,
        )

        self.assertEqual(element.InstanceState.PAUSED.value, instance0.state)