def test_get_endpoints_with_defaults(self):
        expected_endpoints = {
            "endpoints": {
                "https://cloud.example.org:8787/": {
                    "compute_api_type": "OCCI",
                    "compute_api_version": "UNKNOWN",
                    "compute_middleware": "ooi",
                    "compute_middleware_version": "UNKNOWN",
                    "compute_middleware_developer": "CSIC",
                    "endpoint_issuer": "foo",
                    "endpoint_trusted_cas": [],
                    "compute_endpoint_id": "03e087c8fb3b495c9a360bcba3abf914",
                    "compute_endpoint_url": "https://cloud.example.org:8787/",
                },
            },
            "compute_service_name": "http://foo.example.org:5000/v2",
        }

        with utils.nested(
            mock.patch.object(self.provider.static, "get_compute_endpoint_defaults"),
            mock.patch.object(self.provider, "get_goc_info"),
        ) as (m_get_endpoint_defaults, m_get_goc_info):
            m_get_endpoint_defaults.return_value = {}
            m_get_goc_info.return_value = {"gocfoo": "baz"}
            r = mock.Mock()
            r.service_catalog = FAKES.catalog
            self.provider.auth_plugin.get_access.return_value = r
            endpoints = self.provider.get_compute_endpoints(
                **{"auth": {"project_id": None}}
            )
            self.assertTrue(m_get_endpoint_defaults.called)
            m_get_goc_info.assert_called_with("https://cloud.example.org:8787/", False)

        self.assertEqual("baz", endpoints.pop("gocfoo"))
        self.assertDictEqual(expected_endpoints, endpoints)
    def test_get_public_templates(self):
        """Tests that only public templates/flavors are returned"""
        expected_templates = {}
        url = "http://schemas.openstack.org/template/resource"
        for f in FAKES.flavors:
            if not f.is_public:
                continue

            expected_templates[f.id] = {
                "template_memory": f.ram,
                "template_cpu": f.vcpus,
                "template_id": "%s#%s" % (url, f.id),
                "template_native_id": "%s" % f.id,
                "template_platform": "i686",
                "template_network": "private",
                "template_disk": f.disk,
                "template_ephemeral": f.ephemeral,
            }

        self.provider.select_flavors = "public"
        with utils.nested(
            mock.patch.object(self.provider.static, "get_template_defaults"),
            mock.patch.object(self.provider.nova.flavors, "list"),
        ) as (m_get_template_defaults, m_flavors_list):
            m_get_template_defaults.return_value = {"template_platform": "i686"}
            m_flavors_list.return_value = FAKES.flavors
            templates = self.provider.get_templates(**{"auth": {"project_id": None}})
            self.assertTrue(m_get_template_defaults.called)

        # Extract required fields from compute.ldif template excluding fields
        # extracted that are not related to the flavors
        self.assert_resources(
            expected_templates,
            templates,
            template="compute.ldif",
            ignored_fields=[
                "compute_service_name",
                "compute_hypervisor",
                "compute_api_authn_method",
                "compute_total_ram",
                "image_marketplace_id",
                "compute_middleware_developer",
                "compute_production_level",
                "compute_production_level",
                "compute_api_type",
                "compute_api_endpoint_technology",
                "compute_api_version",
                "compute_endpoint_url",
                "compute_service_production_level",
                "compute_capabilities",
                "compute_total_cores",
                "compute_middleware",
                "compute_hypervisor_version",
                "compute_middleware_version",
                "image_description",
                "image_id",
                "image_name",
                "image_version",
            ],
        )
    def test_get_info_from_providers(self):
        cases = (
            ({}, {}, {}),
            (
                {
                    "foo": "bar"
                },
                {
                    "bar": "bazonk"
                },
                {
                    "foo": "bar",
                    "bar": "bazonk"
                },
            ),
            (
                {
                    "foo": "bar"
                },
                {
                    "foo": "bazonk"
                },
                {
                    "foo": "bazonk"
                },
            ),
            (
                {},
                {
                    "foo": "bazonk"
                },
                {
                    "foo": "bazonk"
                },
            ),
            (
                {
                    "foo": "bar"
                },
                {},
                {
                    "foo": "bar"
                },
            ),
        )

        # pylint: disable=abstract-class-instantiated
        base = cloud_info_provider.collectors.base.BaseCollector(
            self.opts, self.providers, None)

        for s, d, e in cases:
            with utils.nested(
                    mock.patch.object(base.static_provider, "method"),
                    mock.patch.object(base.dynamic_provider, "method"),
            ) as (m_static, m_dynamic):
                m_static.return_value = s
                m_dynamic.return_value = d

                self.assertEqual(e, base._get_info_from_providers("method"))
    def test_get_all_templates(self):
        """Tests that all templates/flavors are returned"""
        expected_templates = {}
        url = 'http://schemas.openstack.org/template/resource'
        for f in FAKES.flavors:
            expected_templates[f.id] = {
                'template_memory': f.ram,
                'template_cpu': f.vcpus,
                'template_id': '%s#%s' % (url, f.id),
                'template_native_id': "%s" % f.id,
                'template_platform': 'i686',
                'template_network': 'private',
                'template_disk': f.disk,
                'template_ephemeral': f.ephemeral
            }

        self.provider.select_flavors = 'all'
        with utils.nested(
                mock.patch.object(self.provider.static,
                                  'get_template_defaults'),
                mock.patch.object(self.provider.nova.flavors, 'list'),
        ) as (m_get_template_defaults, m_flavors_list):
            m_get_template_defaults.return_value = {
                'template_platform': 'i686'
            }
            m_flavors_list.return_value = FAKES.flavors
            templates = self.provider.get_templates(**{
                'auth': {'project_id': None}})
            self.assertTrue(m_get_template_defaults.called)

        # Extract required fields from compute.ldif template excluding fields
        # extracted that are not related to the flavors
        self.assert_resources(expected_templates,
                              templates,
                              template="compute.ldif",
                              ignored_fields=[
                                  "compute_service_name",
                                  "compute_hypervisor",
                                  "compute_api_authn_method",
                                  "compute_total_ram",
                                  "image_marketplace_id",
                                  "compute_middleware_developer",
                                  "compute_production_level",
                                  "compute_production_level",
                                  "compute_api_type",
                                  "compute_api_endpoint_technology",
                                  "compute_api_version",
                                  "compute_endpoint_url",
                                  "compute_service_production_level",
                                  "compute_capabilities",
                                  "compute_total_cores",
                                  "compute_middleware",
                                  "compute_hypervisor_version",
                                  "compute_middleware_version",
                                  "image_description",
                                  "image_id",
                                  "image_name",
                                  "image_version",
                              ])
Exemplo n.º 5
0
    def test_get_info_from_providers(self):
        cases = (
            ({}, {}, {}),
            (
                {
                    'foo': 'bar'
                },
                {
                    'bar': 'bazonk'
                },
                {
                    'foo': 'bar',
                    'bar': 'bazonk'
                },
            ),
            (
                {
                    'foo': 'bar'
                },
                {
                    'foo': 'bazonk'
                },
                {
                    'foo': 'bazonk'
                },
            ),
            (
                {},
                {
                    'foo': 'bazonk'
                },
                {
                    'foo': 'bazonk'
                },
            ),
            (
                {
                    'foo': 'bar'
                },
                {},
                {
                    'foo': 'bar'
                },
            ),
        )

        base = cloud_info_provider.collectors.base.BaseCollector(
            self.opts, self.providers)

        for s, d, e in cases:
            with utils.nested(
                    mock.patch.object(base.static_provider, 'method'),
                    mock.patch.object(base.dynamic_provider,
                                      'method')) as (m_static, m_dynamic):
                m_static.return_value = s
                m_dynamic.return_value = d

                self.assertEqual(e, base._get_info_from_providers('method'))
Exemplo n.º 6
0
    def test_get_all_templates(self):
        """Tests that all templates/flavors are returned"""
        expected_templates = {}
        url = 'http://schemas.openstack.org/template/resource'
        for f in FAKES.flavors:
            expected_templates[f.id] = {
                'template_memory': f.ram,
                'template_cpu': f.vcpus,
                'template_id': '%s#%s' % (url, f.id),
                'template_native_id': "%s" % f.id,
                'template_platform': 'i686',
                'template_network': 'private',
                'template_disk': f.disk,
                'template_ephemeral': f.ephemeral
            }

        self.provider.select_flavors = 'all'
        with utils.nested(
                mock.patch.object(self.provider.static,
                                  'get_template_defaults'),
                mock.patch.object(self.provider.nova.flavors, 'list'),
        ) as (m_get_template_defaults, m_flavors_list):
            m_get_template_defaults.return_value = {
                'template_platform': 'i686'
            }
            m_flavors_list.return_value = FAKES.flavors
            templates = self.provider.get_templates()
            assert m_get_template_defaults.called

        # Extract required fields from compute.ldif template excluding fields
        # extracted that are not related to the flavors
        self.assert_resources(expected_templates,
                              templates,
                              template="compute.ldif",
                              ignored_fields=[
                                  "compute_service_name",
                                  "compute_hypervisor",
                                  "compute_api_authn_method",
                                  "compute_total_ram",
                                  "image_marketplace_id",
                                  "compute_middleware_developer",
                                  "compute_production_level",
                                  "compute_production_level",
                                  "compute_api_type",
                                  "compute_api_endpoint_technology",
                                  "compute_api_version",
                                  "compute_endpoint_url",
                                  "compute_service_production_level",
                                  "compute_capabilities",
                                  "compute_total_cores",
                                  "compute_middleware",
                                  "compute_hypervisor_version",
                                  "compute_middleware_version",
                                  "image_description",
                                  "image_id",
                                  "image_name",
                                  "image_version",
                              ])
 def test_get_shares(self):
     with utils.nested(
         mock.patch.object(self.provider.static, "get_compute_shares"),
     ) as (m_get_compute_shares,):
         m_get_compute_shares.return_value = {
             "vo1": {"auth": {"project_id": "foobar"}}
         }
         shares = self.provider.get_compute_shares(**{"auth": {"project_id": None}})
         self.assertEqual("foobar", shares["vo1"]["project"])
         self.assertTrue(m_get_compute_shares.called)
 def test_get_shares(self):
     with utils.nested(
             mock.patch.object(self.provider.static, 'get_compute_shares'),
     ) as (m_get_compute_shares, ):
         m_get_compute_shares.return_value = {
             'vo1': {'auth': {'project_id': 'foobar'}}
         }
         shares = self.provider.get_compute_shares(**{
             'auth': {'project_id': None}})
         self.assertEqual('foobar', shares['vo1']['project'])
         self.assertTrue(m_get_compute_shares.called)
 def test_rescope_simple(self):
     self.provider.auth_refresher = None
     with utils.nested(
         mock.patch("keystoneauth1.loading." "load_auth_from_argparse_arguments"),
         mock.patch("keystoneauth1.loading." "load_session_from_argparse_arguments"),
     ) as (_, m_load_session):
         session = mock.Mock()
         session.get_project_id.return_value = "foo"
         m_load_session.return_value = session
         self.provider._rescope_project("foo", "bar")
         self.assertEqual("foo", self.provider.project_id)
 def test_get_templates_with_defaults(self):
     expected_templates = {}
     url = "http://schemas.openstack.org/template/resource"
     for f in FAKES.flavors:
         expected_templates[f.id] = {
             "template_memory": f.ram,
             "template_cpu": f.vcpus,
             "template_id": "%s#%s" % (url, f.id),
             "template_native_id": "%s" % f.id,
             "template_platform": "amd64",
             "template_network": "private",
             "template_disk": f.disk,
             "template_ephemeral": f.ephemeral,
         }
     with utils.nested(
         mock.patch.object(self.provider.static, "get_template_defaults"),
         mock.patch.object(self.provider.nova.flavors, "list"),
     ) as (m_get_template_defaults, m_flavors_list):
         m_get_template_defaults.return_value = {}
         m_flavors_list.return_value = FAKES.flavors
         templates = self.provider.get_templates(**{"auth": {"project_id": None}})
         self.assertTrue(m_get_template_defaults.called)
     self.assert_resources(
         expected_templates,
         templates,
         template="compute.ldif",
         ignored_fields=[
             "compute_api_type",
             "compute_api_version",
             "compute_api_endpoint_technology",
             "compute_capabilities",
             "compute_endpoint_url",
             "compute_hypervisor",
             "compute_hypervisor_version",
             "compute_middleware",
             "compute_middleware_developer",
             "compute_middleware_version",
             "compute_production_level",
             "compute_api_authn_method",
             "compute_service_name",
             "compute_service_production_level",
             "compute_total_cores",
             "compute_total_ram",
             "image_id",
             "image_name",
             "image_os_family",
             "image_os_name",
             "image_os_version",
             "image_platform",
             "image_version",
             "image_description",
             "image_marketplace_id",
         ],
     )
    def test_load_templates(self):
        self.opts.template_dir = "foobar"
        tpls = ("foo", "bar")
        expected_tpls = {
            "foo": "foobar/foo.%s" % self.opts.template_extension,
            "bar": "foobar/bar.%s" % self.opts.template_extension,
        }

        base = cloud_info_provider.formatters.base.BaseFormatter()
        with utils.nested(mock.patch.object(base, "templates", tpls)):
            base._load_templates(self.opts.template_dir)
            templates_files = base.__dict__["templates_files"]
            self.assertEqual(templates_files, expected_tpls)
Exemplo n.º 12
0
    def test_load_templates(self):
        self.opts.template_dir = 'foobar'
        tpls = ('foo', 'bar')
        expected_tpls = {
            'foo': 'foobar/foo.%s' % self.opts.template_extension,
            'bar': 'foobar/bar.%s' % self.opts.template_extension
        }

        bdii = cloud_info_provider.core.BaseBDII(self.opts)
        with utils.nested(mock.patch.object(bdii, 'templates', tpls)):
            bdii.load_templates()
            templates_files = bdii.__dict__['templates_files']
            self.assertEqual(templates_files, expected_tpls)
    def test_load_templates(self):
        self.opts.template_dir = 'foobar'
        tpls = ('foo', 'bar')
        expected_tpls = {
            'foo': 'foobar/foo.%s' % self.opts.template_extension,
            'bar': 'foobar/bar.%s' % self.opts.template_extension
        }

        base = cloud_info_provider.formatters.base.BaseFormatter()
        with utils.nested(
                mock.patch.object(base, 'templates', tpls)):
            base._load_templates(self.opts.template_dir)
            templates_files = base.__dict__['templates_files']
            self.assertEqual(templates_files, expected_tpls)
    def test_get_markeplace_images(self):
        expected_images = ['foo.id']

        self.provider.all_images = False
        with utils.nested(
                mock.patch.object(self.provider.static, 'get_image_defaults'),
                mock.patch.object(self.provider.glance.images, 'list'),
        ) as (m_get_image_defaults, m_images_list):
            m_get_image_defaults.return_value = {}
            m_images_list.return_value = FAKES.images

            images = self.provider.get_images(**{'auth': {'project_id': None}})
            self.assertTrue(m_get_image_defaults.called)

        self.assertItemsEqual(images.keys(), expected_images)
Exemplo n.º 15
0
    def test_get_markeplace_images(self):
        expected_images = ['foo.id']

        self.provider.all_images = False
        with utils.nested(
                mock.patch.object(self.provider.static, 'get_image_defaults'),
                mock.patch.object(self.provider.glance.images, 'list'),
        ) as (m_get_image_defaults, m_images_list):
            m_get_image_defaults.return_value = {}
            m_images_list.return_value = FAKES.images

            images = self.provider.get_images(**{'auth': {'project_id': None}})
            self.assertTrue(m_get_image_defaults.called)

        self.assertItemsEqual(images.keys(), expected_images)
    def test_format_template(self):
        self.opts.template_dir = 'foobar'
        tpl_contents = 'foo ${attributes["fobble"]}'
        tpl_files = {
            'foo': 'foobar/foo.%s' % self.opts.template_extension,
            'bar': 'foobar/bar.%s' % self.opts.template_extension
        }
        info = {'fobble': 'burble', 'brongle': 'farbla'}
        expected = 'foo burble'

        base = cloud_info_provider.formatters.base.BaseFormatter()
        with utils.nested(
                mock.patch.object(base, 'templates_files', tpl_files),
                mock.patch('mako.util.open',
                           mock.mock_open(read_data=tpl_contents), create=True)
        ):
            self.assertEqual(expected, base._format_template('foo', info))
    def test_get_templates_with_defaults_from_static(self):
        expected_templates = {}
        url = 'http://schemas.openstack.org/template/resource'
        for f in FAKES.flavors:
            expected_templates[f.id] = {
                'template_memory': f.ram,
                'template_cpu': f.vcpus,
                'template_id': '%s#%s' % (url, f.id),
                'template_native_id': "%s" % f.id,
                'template_platform': 'i686',
                'template_network': 'private',
                'template_disk': f.disk,
                'template_ephemeral': f.ephemeral,
            }

        with utils.nested(
                mock.patch.object(self.provider.static,
                                  'get_template_defaults'),
                mock.patch.object(self.provider.nova.flavors, 'list'),
        ) as (m_get_template_defaults, m_flavors_list):
            m_get_template_defaults.return_value = {
                'template_platform': 'i686'
            }
            m_flavors_list.return_value = FAKES.flavors
            templates = self.provider.get_templates(
                **{'auth': {
                    'project_id': None
                }})
            self.assertTrue(m_get_template_defaults.called)

        self.assert_resources(
            expected_templates,
            templates,
            template="compute.ldif",
            ignored_fields=[
                "compute_api_type", "compute_api_version",
                "compute_api_endpoint_technology", "compute_capabilities",
                "compute_endpoint_url", "compute_hypervisor",
                "compute_hypervisor_version", "compute_middleware",
                "compute_middleware_developer", "compute_middleware_version",
                "compute_production_level", "compute_api_authn_method",
                "compute_service_name", "compute_service_production_level",
                "compute_total_cores", "compute_total_ram", "image_id",
                "image_name", "image_version", "image_description",
                "image_marketplace_id"
            ])
Exemplo n.º 18
0
    def test_main(self):
        with utils.nested(
                mock.patch.object(cloud_info_provider.core, 'parse_opts'),
                mock.patch('cloud_info_provider.core.CloudBDII'),
                mock.patch('cloud_info_provider.core.ComputeBDII'),
                mock.patch('cloud_info_provider.core.StorageBDII')) as (m0, m1,
                                                                        m2,
                                                                        m3):
            m0.return_value = None
            for i in (m1, m2, m3):
                i = i.return_value
                i.render.return_value = 'foo'

            self.assertIsNone(cloud_info_provider.core.main())

            for i in (m0, m1, m2, m3):
                assert i.called
 def test_get_shares(self):
     with utils.nested(
             mock.patch.object(
                 self.provider.static,
                 'get_compute_shares'), ) as (m_get_compute_shares, ):
         m_get_compute_shares.return_value = {
             'vo1': {
                 'auth': {
                     'project_id': 'foobar'
                 }
             }
         }
         shares = self.provider.get_compute_shares(
             **{'auth': {
                 'project_id': None
             }})
         self.assertEqual('foobar', shares['vo1']['project'])
         self.assertTrue(m_get_compute_shares.called)
    def test_format_template(self):
        self.opts.template_dir = "foobar"
        tpl_contents = 'foo ${attributes["fobble"]}'
        tpl_files = {
            "foo": "foobar/foo.%s" % self.opts.template_extension,
            "bar": "foobar/bar.%s" % self.opts.template_extension,
        }
        info = {"fobble": "burble", "brongle": "farbla"}
        expected = "foo burble"

        base = cloud_info_provider.formatters.base.BaseFormatter()
        with utils.nested(
            mock.patch.object(base, "templates_files", tpl_files),
            mock.patch(
                "mako.util.open", mock.mock_open(read_data=tpl_contents), create=True
            ),
        ):
            self.assertEqual(expected, base._format_template("foo", info))
Exemplo n.º 21
0
    def test_get_endpoints_with_defaults_from_static(self):
        expected_endpoints = {
            'endpoints': {
                'http://foo.example.org:5000/v2': {
                    'compute_api_type': 'OpenStack',
                    # As version is extracted from the URL default is not used
                    'compute_api_version': 'v2',
                    'compute_endpoint_id': '1b7f14c87d8c42ad962f4d3a5fd13a77',
                    'compute_nova_endpoint_url':
                        'https://cloud.example.org:8774/v1.1/ce2d',
                    'compute_nova_api_version': 'v1.1',
                    'compute_endpoint_url':
                        'http://foo.example.org:5000/v2'}
            },
            'compute_middleware_developer': 'OpenStack',
            'compute_middleware': 'OpenStack Nova',
            'compute_service_name': 'http://foo.example.org:5000/v2',
        }

        with utils.nested(
                mock.patch.object(self.provider.static,
                                  'get_compute_endpoint_defaults'),
                mock.patch('cloud_info_provider.providers.gocdb.get_goc_info'),
        ) as (m_get_endpoint_defaults, m_get_goc_info):
            m_get_endpoint_defaults.return_value = {
                'compute_occi_api_version': '11.11',
                'compute_compute_api_version': '99.99',
            }
            m_get_goc_info.return_value = {'gocfoo': 'baz'}
            r = mock.Mock()
            r.service_catalog = FAKES.catalog
            self.provider.auth_plugin.get_access.return_value = r
            endpoints = self.provider.get_compute_endpoints(**{
                'auth': {'project_id': None}})
            self.assertTrue(m_get_endpoint_defaults.called)
            m_get_goc_info.assert_called_with(
                'http://foo.example.org:5000/v2',
                'org.openstack.nova',
                False)
        self.assertEqual('baz', endpoints.pop('gocfoo'))
        for k, v in expected_endpoints['endpoints'].items():
            self.assertDictContainsSubset(v, endpoints['endpoints'].get(k, {}))
    def test_get_endpoints_with_defaults_from_static(self):
        expected_endpoints = {
            'endpoints': {
                'http://foo.example.org:5000/v2': {
                    'compute_api_type': 'OpenStack',
                    # As version is extracted from the URL default is not used
                    'compute_api_version': 'v2',
                    'compute_endpoint_id': '1b7f14c87d8c42ad962f4d3a5fd13a77',
                    'compute_nova_endpoint_url':
                    'https://cloud.example.org:8774/v1.1/ce2d',
                    'compute_nova_api_version': 'v1.1',
                    'compute_endpoint_url': 'http://foo.example.org:5000/v2'
                }
            },
            'compute_middleware_developer': 'OpenStack',
            'compute_middleware': 'OpenStack Nova',
            'compute_service_name': 'http://foo.example.org:5000/v2',
        }

        with utils.nested(
                mock.patch.object(self.provider.static,
                                  'get_compute_endpoint_defaults'),
                mock.patch('cloud_info_provider.providers.gocdb.get_goc_info'),
        ) as (m_get_endpoint_defaults, m_get_goc_info):
            m_get_endpoint_defaults.return_value = {
                'compute_occi_api_version': '11.11',
                'compute_compute_api_version': '99.99',
            }
            m_get_goc_info.return_value = {'gocfoo': 'baz'}
            r = mock.Mock()
            r.service_catalog = FAKES.catalog
            self.provider.auth_plugin.get_access.return_value = r
            endpoints = self.provider.get_compute_endpoints(
                **{'auth': {
                    'project_id': None
                }})
            self.assertTrue(m_get_endpoint_defaults.called)
            m_get_goc_info.assert_called_with('http://foo.example.org:5000/v2',
                                              'org.openstack.nova', False)
        self.assertEqual('baz', endpoints.pop('gocfoo'))
        for k, v in expected_endpoints['endpoints'].items():
            self.assertDictContainsSubset(v, endpoints['endpoints'].get(k, {}))
Exemplo n.º 23
0
    def test_get_endpoints_with_defaults(self):
        expected_endpoints = {
            'endpoints': {
                'http://foo.example.org:5000/v2': {
                    'compute_api_type': 'OpenStack',
                    'compute_api_version': 'v2',
                    'compute_nova_endpoint_url':
                        'https://cloud.example.org:8774/v1.1/ce2d',
                    'compute_nova_api_version': 'v1.1',
                    'compute_middleware': 'OpenStack Nova',
                    'compute_middleware_version': 'UNKNOWN',
                    'compute_middleware_developer': 'OpenStack Foundation',
                    'endpoint_issuer': self.provider.keystone_cert_issuer,
                    'endpoint_trusted_cas': [],
                    'compute_endpoint_id': '1b7f14c87d8c42ad962f4d3a5fd13a77',
                    'compute_endpoint_url':
                        'http://foo.example.org:5000/v2'}
            },
            'compute_service_name': 'http://foo.example.org:5000/v2',
        }

        with utils.nested(
                mock.patch.object(self.provider.static,
                                  'get_compute_endpoint_defaults'),
                mock.patch('cloud_info_provider.providers.gocdb.get_goc_info'),
        ) as (m_get_endpoint_defaults, m_get_goc_info):
            m_get_endpoint_defaults.return_value = {}
            m_get_goc_info.return_value = {'gocfoo': 'baz'}
            r = mock.Mock()
            r.service_catalog = FAKES.catalog
            self.provider.auth_plugin.get_access.return_value = r
            endpoints = self.provider.get_compute_endpoints(**{
                'auth': {'project_id': None}})
            self.assertTrue(m_get_endpoint_defaults.called)
            m_get_goc_info.assert_called_with(
                'http://foo.example.org:5000/v2',
                'org.openstack.nova',
                False)

        self.assertEqual('baz', endpoints.pop('gocfoo'))
        self.assertDictEqual(expected_endpoints, endpoints)
    def test_get_endpoints_with_defaults(self):
        expected_endpoints = {
            'endpoints': {
                'http://foo.example.org:5000/v2': {
                    'compute_api_type': 'OpenStack',
                    'compute_api_version': 'v2',
                    'compute_nova_endpoint_url':
                    'https://cloud.example.org:8774/v1.1/ce2d',
                    'compute_nova_api_version': 'v1.1',
                    'compute_middleware': 'OpenStack Nova',
                    'compute_middleware_version': 'UNKNOWN',
                    'compute_middleware_developer': 'OpenStack Foundation',
                    'endpoint_issuer': self.provider.keystone_cert_issuer,
                    'endpoint_trusted_cas': [],
                    'compute_endpoint_id': '1b7f14c87d8c42ad962f4d3a5fd13a77',
                    'compute_endpoint_url': 'http://foo.example.org:5000/v2'
                }
            },
            'compute_service_name': 'http://foo.example.org:5000/v2',
        }

        with utils.nested(
                mock.patch.object(self.provider.static,
                                  'get_compute_endpoint_defaults'),
                mock.patch('cloud_info_provider.providers.gocdb.get_goc_info'),
        ) as (m_get_endpoint_defaults, m_get_goc_info):
            m_get_endpoint_defaults.return_value = {}
            m_get_goc_info.return_value = {'gocfoo': 'baz'}
            r = mock.Mock()
            r.service_catalog = FAKES.catalog
            self.provider.auth_plugin.get_access.return_value = r
            endpoints = self.provider.get_compute_endpoints(
                **{'auth': {
                    'project_id': None
                }})
            self.assertTrue(m_get_endpoint_defaults.called)
            m_get_goc_info.assert_called_with('http://foo.example.org:5000/v2',
                                              'org.openstack.nova', False)

        self.assertEqual('baz', endpoints.pop('gocfoo'))
        self.assertDictEqual(expected_endpoints, endpoints)
    def test_get_endpoints_with_defaults_from_static(self):
        expected_endpoints = {
            'endpoints': {
                'https://cloud.example.org:8787/': {
                    'compute_api_type': 'OCCI',
                    'compute_api_version': '11.11',
                    'compute_endpoint_id': '03e087c8fb3b495c9a360bcba3abf914',
                    'compute_endpoint_url': 'https://cloud.example.org:8787/'
                },
            },
            'compute_middleware_developer': 'OpenStack',
            'compute_middleware': 'OpenStack Nova',
            'compute_service_name': 'http://foo.example.org:5000/v2',
        }

        with utils.nested(
                mock.patch.object(self.provider.static,
                                  'get_compute_endpoint_defaults'),
                mock.patch('cloud_info_provider.providers.gocdb.get_goc_info'),
        ) as (m_get_endpoint_defaults, m_get_goc_info):
            m_get_endpoint_defaults.return_value = {
                'compute_occi_api_version': '11.11',
                'compute_compute_api_version': '99.99',
            }
            m_get_goc_info.return_value = {'gocfoo': 'baz'}
            r = mock.Mock()
            r.service_catalog = FAKES.catalog
            self.provider.auth_plugin.get_access.return_value = r
            endpoints = self.provider.get_compute_endpoints(
                **{'auth': {
                    'project_id': None
                }})
            self.assertTrue(m_get_endpoint_defaults.called)
            m_get_goc_info.assert_called_with(
                'https://cloud.example.org:8787/',
                'eu.egi.cloud.vm-management.occi', False)

        self.assertEqual('baz', endpoints.pop('gocfoo'))
        for k, v in expected_endpoints['endpoints'].items():
            self.assertDictContainsSubset(v, endpoints['endpoints'].get(k, {}))
    def test_get_endpoints_with_defaults(self):
        expected_endpoints = {
            'endpoints': {
                'https://cloud.example.org:8787/': {
                    'compute_api_type': 'OCCI',
                    'compute_api_version': 'UNKNOWN',
                    'compute_middleware': 'ooi',
                    'compute_middleware_version': 'UNKNOWN',
                    'compute_middleware_developer': 'CSIC',
                    'endpoint_issuer': self.provider.keystone_cert_issuer,
                    'endpoint_trusted_cas': [],
                    'compute_endpoint_id': '03e087c8fb3b495c9a360bcba3abf914',
                    'compute_endpoint_url': 'https://cloud.example.org:8787/'
                },
            },
            'compute_service_name': 'http://foo.example.org:5000/v2',
        }

        with utils.nested(
                mock.patch.object(self.provider.static,
                                  'get_compute_endpoint_defaults'),
                mock.patch('cloud_info_provider.providers.gocdb.get_goc_info'),
        ) as (m_get_endpoint_defaults, m_get_goc_info):
            m_get_endpoint_defaults.return_value = {}
            m_get_goc_info.return_value = {'gocfoo': 'baz'}
            r = mock.Mock()
            r.service_catalog = FAKES.catalog
            self.provider.auth_plugin.get_access.return_value = r
            endpoints = self.provider.get_compute_endpoints(
                **{'auth': {
                    'project_id': None
                }})
            self.assertTrue(m_get_endpoint_defaults.called)
            m_get_goc_info.assert_called_with(
                'https://cloud.example.org:8787/',
                'eu.egi.cloud.vm-management.occi', False)

        self.assertEqual('baz', endpoints.pop('gocfoo'))
        self.assertDictEqual(expected_endpoints, endpoints)
Exemplo n.º 27
0
    def test_get_endpoints_with_defaults_from_static(self):
        expected_endpoints = {
            'endpoints': {
                'https://cloud.example.org:8787/': {
                    'compute_api_type': 'OCCI',
                    'compute_api_version': '11.11',
                    'compute_endpoint_id': '03e087c8fb3b495c9a360bcba3abf914',
                    'compute_endpoint_url': 'https://cloud.example.org:8787/'},
            },
            'compute_middleware_developer': 'OpenStack',
            'compute_middleware': 'OpenStack Nova',
            'compute_service_name': 'http://foo.example.org:5000/v2',
        }

        with utils.nested(
                mock.patch.object(self.provider.static,
                                  'get_compute_endpoint_defaults'),
                mock.patch('cloud_info_provider.providers.gocdb.get_goc_info'),
        ) as (m_get_endpoint_defaults, m_get_goc_info):
            m_get_endpoint_defaults.return_value = {
                'compute_occi_api_version': '11.11',
                'compute_compute_api_version': '99.99',
            }
            m_get_goc_info.return_value = {'gocfoo': 'baz'}
            r = mock.Mock()
            r.service_catalog = FAKES.catalog
            self.provider.auth_plugin.get_access.return_value = r
            endpoints = self.provider.get_compute_endpoints(**{
                'auth': {'project_id': None}})
            self.assertTrue(m_get_endpoint_defaults.called)
            m_get_goc_info.assert_called_with(
                'https://cloud.example.org:8787/',
                'eu.egi.cloud.vm-management.occi',
                False)

        self.assertEqual('baz', endpoints.pop('gocfoo'))
        for k, v in expected_endpoints['endpoints'].items():
            self.assertDictContainsSubset(v, endpoints['endpoints'].get(k, {}))
    def test_get_endpoints_with_defaults_from_static(self):
        expected_endpoints = {
            "endpoints": {
                "http://foo.example.org:5000/v2": {
                    "compute_api_type": "OpenStack",
                    # As version is extracted from the URL default is not used
                    "compute_api_version": "v2",
                    "compute_endpoint_id": "1b7f14c87d8c42ad962f4d3a5fd13a77",
                    "compute_nova_endpoint_url": "https://cloud.example.org:8774/v1.1/ce2d",
                    "compute_nova_api_version": "v1.1",
                    "compute_endpoint_url": "http://foo.example.org:5000/v2",
                }
            },
            "compute_middleware_developer": "OpenStack",
            "compute_middleware": "OpenStack Nova",
            "compute_service_name": "http://foo.example.org:5000/v2",
        }

        with utils.nested(
            mock.patch.object(self.provider.static, "get_compute_endpoint_defaults"),
            mock.patch.object(self.provider, "get_goc_info"),
        ) as (m_get_endpoint_defaults, m_get_goc_info):
            m_get_endpoint_defaults.return_value = {
                "compute_occi_api_version": "11.11",
                "compute_compute_api_version": "99.99",
            }
            m_get_goc_info.return_value = {"gocfoo": "baz"}
            r = mock.Mock()
            r.service_catalog = FAKES.catalog
            self.provider.auth_plugin.get_access.return_value = r
            endpoints = self.provider.get_compute_endpoints(
                **{"auth": {"project_id": None}}
            )
            self.assertTrue(m_get_endpoint_defaults.called)
            m_get_goc_info.assert_called_with("http://foo.example.org:5000/v2", False)
        self.assertEqual("baz", endpoints.pop("gocfoo"))
        for k, v in expected_endpoints["endpoints"].items():
            self.assertDictContainsSubset(v, endpoints["endpoints"].get(k, {}))
Exemplo n.º 29
0
    def test_get_endpoints_with_defaults(self):
        expected_endpoints = {
            'endpoints': {
                'https://cloud.example.org:8787/': {
                    'compute_api_type': 'OCCI',
                    'compute_api_version': 'UNKNOWN',
                    'compute_middleware': 'ooi',
                    'compute_middleware_version': 'UNKNOWN',
                    'compute_middleware_developer': 'CSIC',
                    'endpoint_issuer': self.provider.keystone_cert_issuer,
                    'endpoint_trusted_cas': [],
                    'compute_endpoint_id': '03e087c8fb3b495c9a360bcba3abf914',
                    'compute_endpoint_url': 'https://cloud.example.org:8787/'},
            },
            'compute_service_name': 'http://foo.example.org:5000/v2',
        }

        with utils.nested(
                mock.patch.object(self.provider.static,
                                  'get_compute_endpoint_defaults'),
                mock.patch('cloud_info_provider.providers.gocdb.get_goc_info'),
        ) as (m_get_endpoint_defaults, m_get_goc_info):
            m_get_endpoint_defaults.return_value = {}
            m_get_goc_info.return_value = {'gocfoo': 'baz'}
            r = mock.Mock()
            r.service_catalog = FAKES.catalog
            self.provider.auth_plugin.get_access.return_value = r
            endpoints = self.provider.get_compute_endpoints(**{
                'auth': {'project_id': None}})
            self.assertTrue(m_get_endpoint_defaults.called)
            m_get_goc_info.assert_called_with(
                'https://cloud.example.org:8787/',
                'eu.egi.cloud.vm-management.occi',
                False)

        self.assertEqual('baz', endpoints.pop('gocfoo'))
        self.assertDictEqual(expected_endpoints, endpoints)
    def test_get_endpoints_with_defaults(self):
        expected_endpoints = {
            "endpoints": {
                "http://foo.example.org:5000/v2": {
                    "compute_api_type": "OpenStack",
                    "compute_api_version": "v2",
                    "compute_nova_endpoint_url": "https://cloud.example.org:8774/v1.1/ce2d",
                    "compute_nova_api_version": "v1.1",
                    "compute_middleware": "OpenStack Nova",
                    "compute_middleware_version": "UNKNOWN",
                    "compute_middleware_developer": "OpenStack Foundation",
                    "endpoint_issuer": "foo",
                    "endpoint_trusted_cas": [],
                    "compute_endpoint_id": "1b7f14c87d8c42ad962f4d3a5fd13a77",
                    "compute_endpoint_url": "http://foo.example.org:5000/v2",
                }
            },
            "compute_service_name": "http://foo.example.org:5000/v2",
        }

        with utils.nested(
            mock.patch.object(self.provider.static, "get_compute_endpoint_defaults"),
            mock.patch.object(self.provider, "get_goc_info"),
        ) as (m_get_endpoint_defaults, m_get_goc_info):
            m_get_endpoint_defaults.return_value = {}
            m_get_goc_info.return_value = {"gocfoo": "baz"}
            r = mock.Mock()
            r.service_catalog = FAKES.catalog
            self.provider.auth_plugin.get_access.return_value = r
            endpoints = self.provider.get_compute_endpoints(
                **{"auth": {"project_id": None}}
            )
            self.assertTrue(m_get_endpoint_defaults.called)
            m_get_goc_info.assert_called_with("http://foo.example.org:5000/v2", False)

        self.assertEqual("baz", endpoints.pop("gocfoo"))
        self.assertDictEqual(expected_endpoints, endpoints)
    def test_get_endpoints_with_defaults_from_static(self):
        expected_endpoints = {
            "endpoints": {
                "https://cloud.example.org:8787/": {
                    "compute_api_type": "OCCI",
                    "compute_api_version": "11.11",
                    "compute_endpoint_id": "03e087c8fb3b495c9a360bcba3abf914",
                    "compute_endpoint_url": "https://cloud.example.org:8787/",
                },
            },
            "compute_middleware_developer": "OpenStack",
            "compute_middleware": "OpenStack Nova",
            "compute_service_name": "http://foo.example.org:5000/v2",
        }

        with utils.nested(
            mock.patch.object(self.provider.static, "get_compute_endpoint_defaults"),
            mock.patch.object(self.provider, "get_goc_info"),
        ) as (m_get_endpoint_defaults, m_get_goc_info):
            m_get_endpoint_defaults.return_value = {
                "compute_occi_api_version": "11.11",
                "compute_compute_api_version": "99.99",
            }
            m_get_goc_info.return_value = {"gocfoo": "baz"}
            r = mock.Mock()
            r.service_catalog = FAKES.catalog
            self.provider.auth_plugin.get_access.return_value = r
            endpoints = self.provider.get_compute_endpoints(
                **{"auth": {"project_id": None}}
            )
            self.assertTrue(m_get_endpoint_defaults.called)
            m_get_goc_info.assert_called_with("https://cloud.example.org:8787/", False)

        self.assertEqual("baz", endpoints.pop("gocfoo"))
        for k, v in expected_endpoints["endpoints"].items():
            self.assertDictContainsSubset(v, endpoints["endpoints"].get(k, {}))
Exemplo n.º 32
0
    def test_get_images(self):
        # XXX move this to a custom class?
        # XXX add docker information
        expected_images = {
            'bar id': {
                'name': 'barimage',
                'id': 'bar id',
                'metadata': {},
                'file': 'v2/bar id/file',
                'image_description': None,
                'image_name': 'barimage',
                'image_os_family': None,
                'image_os_name': None,
                'image_os_version': None,
                'image_platform': 'amd64',
                'image_version': None,
                'image_marketplace_id': "%s" % urljoin(self.provider.glance
                                                       .http_client
                                                       .get_endpoint(),
                                                       'v2/bar id/file'),
                'image_id': 'http://schemas.openstack.org/template/os#bar_id',
                'image_native_id': 'bar id',
                'image_accel_type': None,
                'image_access_info': 'none',
                'image_minimal_cpu': None,
                'image_minimal_ram': None,
                'image_minimal_accel': None,
                'image_recommended_cpu': None,
                'image_recommended_ram': None,
                'image_recommended_accel': None,
                'image_size': None,
                'image_software': [],
                'image_traffic_in': [],
                'image_traffic_out': [],
                'image_context_format': None,
                'other_info': [],
            },
            'foo.id': {
                'name': 'fooimage',
                'id': 'foo.id',
                'metadata': {},
                'marketplace': 'http://example.org/',
                'file': 'v2/foo.id/file',
                'image_description': None,
                'image_name': 'fooimage',
                'image_os_family': None,
                'image_os_name': None,
                'image_os_version': None,
                'image_platform': 'amd64',
                'image_version': None,
                'image_marketplace_id': 'http://example.org/',
                'image_id': 'http://schemas.openstack.org/template/os#foo-id',
                'image_native_id': 'foo.id',
                'image_accel_type': None,
                'image_access_info': 'none',
                'image_minimal_cpu': None,
                'image_minimal_ram': None,
                'image_minimal_accel': None,
                'image_recommended_cpu': None,
                'image_recommended_ram': None,
                'image_recommended_accel': None,
                'image_size': None,
                'image_software': [],
                'image_traffic_in': [],
                'image_traffic_out': [],
                'image_context_format': None,
                'other_info': ['base_mpuri=foobar'],
                'APPLIANCE_ATTRIBUTES': '{"ad:base_mpuri": "foobar"}',
            },
            'baz id': {
                'name': 'bazimage',
                'id': 'baz id',
                'file': 'v2/baz id/file',
                'image_description': None,
                'image_name': 'bazimage',
                'image_os_family': None,
                'image_os_name': None,
                'image_os_version': None,
                'image_platform': 'amd64',
                'image_version': None,
                'image_marketplace_id': "%s" % urljoin(self.provider.glance
                                                       .http_client
                                                       .get_endpoint(),
                                                       'v2/baz id/file'),
                'image_id': 'http://schemas.openstack.org/template/os#baz_id',
                'image_native_id': 'baz id',
                'docker_id': 'sha1:xxxxxxxxxxxxxxxxxxxxxxxxxx',
                'docker_tag': 'latest',
                'docker_name': 'test/image',
                'image_accel_type': None,
                'image_access_info': 'none',
                'image_minimal_cpu': None,
                'image_minimal_ram': None,
                'image_minimal_accel': None,
                'image_recommended_cpu': None,
                'image_recommended_ram': None,
                'image_recommended_accel': None,
                'image_size': None,
                'image_software': [],
                'image_traffic_in': [],
                'image_traffic_out': [],
                'image_context_format': None,
                'other_info': [],
            }
        }

        with utils.nested(
                mock.patch.object(self.provider.static, 'get_image_defaults'),
                mock.patch.object(self.provider.glance.images, 'list'),
        ) as (m_get_image_defaults, m_images_list):
            m_get_image_defaults.return_value = {}
            m_images_list.return_value = FAKES.images

            images = self.provider.get_images(**{'auth': {'project_id': None}})
            self.assertTrue(m_get_image_defaults.called)

        # Filter fields from the template that are not related to images
        self.assert_resources(expected_images,
                              images,
                              template="compute.ldif",
                              ignored_fields=["compute_service_name",
                                              "compute_api_type",
                                              "compute_api_version",
                                              ("compute_api_endpoint"
                                               "_technology"),
                                              "compute_capabilities",
                                              "compute_api_authn_method",
                                              "compute_total_ram",
                                              "compute_middleware",
                                              "compute_middleware_developer",
                                              "compute_middleware_version",
                                              "compute_endpoint_url",
                                              "compute_hypervisor",
                                              "compute_hypervisor_version",
                                              "compute_production_level",
                                              ("compute_service"
                                               "_production_level"),
                                              "compute_total_cores",
                                              "compute_total_ram",
                                              "template_platform",
                                              "template_cpu",
                                              "template_memory",
                                              "template_network",
                                              "template_disk",
                                              "template_ephemeral",
                                              "template_id"])
    def test_get_images(self):
        # XXX move this to a custom class?
        # XXX add docker information
        expected_images = {
            'bar id': {
                'name':
                'barimage',
                'id':
                'bar id',
                'metadata': {},
                'file':
                'v2/bar id/file',
                'image_description':
                None,
                'image_name':
                'barimage',
                'image_os_family':
                None,
                'image_os_name':
                None,
                'image_os_version':
                None,
                'image_platform':
                'amd64',
                'image_version':
                None,
                'image_marketplace_id':
                "%s" % urljoin(self.provider.glance.http_client.get_endpoint(),
                               'v2/bar id/file'),
                'image_id':
                'http://schemas.openstack.org/template/os#bar_id',
                'image_native_id':
                'bar id',
                'image_accel_type':
                None,
                'image_access_info':
                'none',
                'image_minimal_cpu':
                None,
                'image_minimal_ram':
                None,
                'image_minimal_accel':
                None,
                'image_recommended_cpu':
                None,
                'image_recommended_ram':
                None,
                'image_recommended_accel':
                None,
                'image_size':
                None,
                'image_software': [],
                'image_traffic_in': [],
                'image_traffic_out': [],
                'image_context_format':
                None,
                'other_info': [],
            },
            'foo.id': {
                'name': 'fooimage',
                'id': 'foo.id',
                'metadata': {},
                'marketplace': 'http://example.org/',
                'file': 'v2/foo.id/file',
                'image_description': None,
                'image_name': 'fooimage',
                'image_os_family': None,
                'image_os_name': None,
                'image_os_version': None,
                'image_platform': 'amd64',
                'image_version': None,
                'image_marketplace_id': 'http://example.org/',
                'image_id': 'http://schemas.openstack.org/template/os#foo-id',
                'image_native_id': 'foo.id',
                'image_accel_type': None,
                'image_access_info': 'none',
                'image_minimal_cpu': None,
                'image_minimal_ram': None,
                'image_minimal_accel': None,
                'image_recommended_cpu': None,
                'image_recommended_ram': None,
                'image_recommended_accel': None,
                'image_size': None,
                'image_software': [],
                'image_traffic_in': [],
                'image_traffic_out': [],
                'image_context_format': None,
                'other_info': ['base_mpuri=foobar'],
                'APPLIANCE_ATTRIBUTES': '{"ad:base_mpuri": "foobar"}',
            },
            'baz id': {
                'name':
                'bazimage',
                'id':
                'baz id',
                'file':
                'v2/baz id/file',
                'image_description':
                None,
                'image_name':
                'bazimage',
                'image_os_family':
                None,
                'image_os_name':
                None,
                'image_os_version':
                None,
                'image_platform':
                'amd64',
                'image_version':
                None,
                'image_marketplace_id':
                "%s" % urljoin(self.provider.glance.http_client.get_endpoint(),
                               'v2/baz id/file'),
                'image_id':
                'http://schemas.openstack.org/template/os#baz_id',
                'image_native_id':
                'baz id',
                'docker_id':
                'sha1:xxxxxxxxxxxxxxxxxxxxxxxxxx',
                'docker_tag':
                'latest',
                'docker_name':
                'test/image',
                'image_accel_type':
                None,
                'image_access_info':
                'none',
                'image_minimal_cpu':
                None,
                'image_minimal_ram':
                None,
                'image_minimal_accel':
                None,
                'image_recommended_cpu':
                None,
                'image_recommended_ram':
                None,
                'image_recommended_accel':
                None,
                'image_size':
                None,
                'image_software': [],
                'image_traffic_in': [],
                'image_traffic_out': [],
                'image_context_format':
                None,
                'other_info': [],
            }
        }

        with utils.nested(
                mock.patch.object(self.provider.static, 'get_image_defaults'),
                mock.patch.object(self.provider.glance.images, 'list'),
        ) as (m_get_image_defaults, m_images_list):
            m_get_image_defaults.return_value = {}
            m_images_list.return_value = FAKES.images

            images = self.provider.get_images(**{'auth': {'project_id': None}})
            self.assertTrue(m_get_image_defaults.called)

        # Filter fields from the template that are not related to images
        self.assert_resources(
            expected_images,
            images,
            template="compute.ldif",
            ignored_fields=[
                "compute_service_name", "compute_api_type",
                "compute_api_version", ("compute_api_endpoint"
                                        "_technology"), "compute_capabilities",
                "compute_api_authn_method", "compute_total_ram",
                "compute_middleware", "compute_middleware_developer",
                "compute_middleware_version", "compute_endpoint_url",
                "compute_hypervisor", "compute_hypervisor_version",
                "compute_production_level",
                ("compute_service"
                 "_production_level"), "compute_total_cores",
                "compute_total_ram", "template_platform", "template_cpu",
                "template_memory", "template_network", "template_disk",
                "template_ephemeral", "template_id"
            ])
    def test_get_images(self):
        # XXX move this to a custom class?
        # XXX add docker information
        expected_images = {
            "bar id": {
                "name": "barimage",
                "id": "bar id",
                "metadata": {},
                "file": "v2/bar id/file",
                "image_description": None,
                "image_name": "barimage",
                "image_os_family": None,
                "image_os_name": None,
                "image_os_version": None,
                "image_platform": "amd64",
                "image_version": None,
                "image_marketplace_id": "%s"
                % urljoin(
                    self.provider.glance.http_client.get_endpoint(), "v2/bar id/file"
                ),
                "image_id": "http://schemas.openstack.org/template/os#bar_id",
                "image_native_id": "bar id",
                "image_accel_type": None,
                "image_access_info": "none",
                "image_minimal_cpu": None,
                "image_minimal_ram": None,
                "image_minimal_accel": None,
                "image_recommended_cpu": None,
                "image_recommended_ram": None,
                "image_recommended_accel": None,
                "image_size": None,
                "image_software": [],
                "image_traffic_in": [],
                "image_traffic_out": [],
                "image_context_format": None,
                "other_info": [],
            },
            "foo.id": {
                "name": "fooimage",
                "id": "foo.id",
                "metadata": {},
                "marketplace": "http://example.org/",
                "file": "v2/foo.id/file",
                "image_description": None,
                "image_name": "fooimage",
                "image_os_family": None,
                "image_os_name": None,
                "image_os_version": None,
                "image_platform": "amd64",
                "image_version": None,
                "image_marketplace_id": "http://example.org/",
                "image_id": "http://schemas.openstack.org/template/os#foo-id",
                "image_native_id": "foo.id",
                "image_accel_type": None,
                "image_access_info": "none",
                "image_minimal_cpu": None,
                "image_minimal_ram": None,
                "image_minimal_accel": None,
                "image_recommended_cpu": None,
                "image_recommended_ram": None,
                "image_recommended_accel": None,
                "image_size": None,
                "image_software": [],
                "image_traffic_in": [],
                "image_traffic_out": [],
                "image_context_format": None,
                "other_info": ["base_mpuri=foobar"],
                "APPLIANCE_ATTRIBUTES": '{"ad:base_mpuri": "foobar"}',
            },
            "baz id": {
                "name": "bazimage",
                "id": "baz id",
                "file": "v2/baz id/file",
                "image_description": None,
                "image_name": "bazimage",
                "image_os_family": None,
                "image_os_name": None,
                "image_os_version": None,
                "image_platform": "amd64",
                "image_version": None,
                "image_marketplace_id": "%s"
                % urljoin(
                    self.provider.glance.http_client.get_endpoint(), "v2/baz id/file"
                ),
                "image_id": "http://schemas.openstack.org/template/os#baz_id",
                "image_native_id": "baz id",
                "docker_id": "sha1:xxxxxxxxxxxxxxxxxxxxxxxxxx",
                "docker_tag": "latest",
                "docker_name": "test/image",
                "image_accel_type": None,
                "image_access_info": "none",
                "image_minimal_cpu": None,
                "image_minimal_ram": None,
                "image_minimal_accel": None,
                "image_recommended_cpu": None,
                "image_recommended_ram": None,
                "image_recommended_accel": None,
                "image_size": None,
                "image_software": [],
                "image_traffic_in": [],
                "image_traffic_out": [],
                "image_context_format": None,
                "other_info": [],
            },
        }

        with utils.nested(
            mock.patch.object(self.provider.static, "get_image_defaults"),
            mock.patch.object(self.provider.glance.images, "list"),
        ) as (m_get_image_defaults, m_images_list):
            m_get_image_defaults.return_value = {}
            m_images_list.return_value = FAKES.images

            images = self.provider.get_images(**{"auth": {"project_id": None}})
            self.assertTrue(m_get_image_defaults.called)

        # Filter fields from the template that are not related to images
        self.assert_resources(
            expected_images,
            images,
            template="compute.ldif",
            ignored_fields=[
                "compute_service_name",
                "compute_api_type",
                "compute_api_version",
                ("compute_api_endpoint" "_technology"),
                "compute_capabilities",
                "compute_api_authn_method",
                "compute_total_ram",
                "compute_middleware",
                "compute_middleware_developer",
                "compute_middleware_version",
                "compute_endpoint_url",
                "compute_hypervisor",
                "compute_hypervisor_version",
                "compute_production_level",
                ("compute_service" "_production_level"),
                "compute_total_cores",
                "compute_total_ram",
                "template_platform",
                "template_cpu",
                "template_memory",
                "template_network",
                "template_disk",
                "template_ephemeral",
                "template_id",
            ],
        )