Esempio n. 1
0
 def _update_local_agent_resource_versions(self, context, agent_state):
     resource_versions_dict = agent_state.get('resource_versions', {})
     version_manager.update_versions(
         version_manager.AgentConsumer(agent_type=agent_state['agent_type'],
                                       host=agent_state['host']),
         resource_versions_dict)
     # report other neutron-servers about this quickly
     self.server_versions_rpc.report_agent_resource_versions(
         context, agent_state['agent_type'], agent_state['host'],
         resource_versions_dict)
Esempio n. 2
0
    def get_agents_resource_versions(self, tracker):
        """Get the known agent resource versions and update the tracker.

        This function looks up into the database and updates every agent
        resource versions.
        This method is called from version_manager when the cached information
        has passed TTL.

        :param tracker: receives a version_manager.ResourceConsumerTracker
        """
        for agent in self._get_agents_considered_for_versions():
            resource_versions = agent.get('resource_versions', {})
            consumer = version_manager.AgentConsumer(
                agent_type=agent['agent_type'], host=agent['host'])
            tracker.set_versions(consumer, resource_versions)
Esempio n. 3
0
    def _get_agents_resource_versions(self, tracker):
        """Get the known agent resource versions and update the tracker.

        Receives a version_manager.ResourceConsumerTracker instance and it's
        expected to look up in to the database and update every agent resource
        versions.
        This method is called from version_manager when the cached information
        has passed TTL.
        """
        for agent in self._get_agents_considered_for_versions():
            resource_versions = agent.get('resource_versions', {})
            consumer = version_manager.AgentConsumer(
                agent_type=agent['agent_type'], host=agent['host'])
            LOG.debug("Update consumer %(consumer)s versions to: "
                      "%(versions)s", {'consumer': consumer,
                                       'versions': resource_versions})
            tracker.set_versions(consumer, resource_versions)
    def test_compatibility_liberty_sriov_and_ovs_agents(self):
        def _fake_local_versions(self):
            local_versions = collections.defaultdict(set)
            local_versions[resources.QOS_POLICY].add('1.11')
            return local_versions

        for agent_type in version_manager.NON_REPORTING_AGENT_TYPES:
            consumer_id = version_manager.AgentConsumer(
                agent_type, AGENT_HOST_1)

            cv = version_manager.ResourceConsumerTracker()
            cv._get_local_resource_versions = _fake_local_versions
            cv._versions = _fake_local_versions(mock.ANY)

            cv.set_versions(consumer_id, {})

            self.assertEqual(set(['1.0', '1.11']),
                             cv.get_resource_versions(resources.QOS_POLICY))
Esempio n. 5
0
 def report_agent_resource_versions(self, context, agent_type, agent_host,
                                    version_map):
     consumer_id = version_manager.AgentConsumer(agent_type=agent_type,
                                                 host=agent_host)
     version_manager.update_versions(consumer_id, version_map)
from neutron.api.rpc.callbacks import resources
from neutron.api.rpc.callbacks import version_manager
from neutron.db import agents_db
from neutron.tests import base

TEST_RESOURCE_TYPE = 'TestResourceType'
TEST_VERSION_A = '1.11'
TEST_VERSION_B = '1.12'

TEST_RESOURCE_TYPE_2 = 'AnotherResource'

AGENT_HOST_1 = 'host-1'
AGENT_HOST_2 = 'host-2'
AGENT_TYPE_1 = 'dhcp-agent'
AGENT_TYPE_2 = 'openvswitch-agent'
CONSUMER_1 = version_manager.AgentConsumer(AGENT_TYPE_1, AGENT_HOST_1)
CONSUMER_2 = version_manager.AgentConsumer(AGENT_TYPE_2, AGENT_HOST_2)


class ResourceConsumerTrackerTest(base.BaseTestCase):
    def test_consumer_set_versions(self):
        cv = version_manager.ResourceConsumerTracker()

        cv.set_versions(CONSUMER_1, {TEST_RESOURCE_TYPE: TEST_VERSION_A})
        self.assertIn(TEST_VERSION_A,
                      cv.get_resource_versions(TEST_RESOURCE_TYPE))

    def test_consumer_updates_version(self):
        cv = version_manager.ResourceConsumerTracker()

        for version in [TEST_VERSION_A, TEST_VERSION_B]: