Add one general testing of resource_mapping

Each resource in Heat has resource_mapping fucntion for loading his type
in environment for futher using.
This method should be callable and should return dictionary, where
key is resource type and value is corresponding resource class.
More over resource_type should have format:
"Platform Type"/"Service type"/.../"Resource Name"

This patch adds common test for this method and check all modules in
heat.engine.resources sub-directories.
Duplicate useless tests were removed.

Change-Id: I8148811418c21277a4b732de98a53c5291f57f1f
This commit is contained in:
Sergey Kraynev 2016-02-18 06:33:13 -05:00
parent b8da6cf95e
commit 440a306216
45 changed files with 43 additions and 321 deletions

View File

@ -15,7 +15,6 @@ import mock
import six import six
from heat.common import exception from heat.common import exception
from heat.engine.resources.openstack.cinder import volume_type
from heat.engine import stack from heat.engine import stack
from heat.engine import template from heat.engine import template
from heat.tests import common from heat.tests import common
@ -57,14 +56,6 @@ class CinderVolumeTypeTest(common.HeatTestCase):
self.project_list = mock.MagicMock() self.project_list = mock.MagicMock()
keystoneclient.client.projects.get = self.project_list keystoneclient.client.projects.get = self.project_list
def test_resource_mapping(self):
mapping = volume_type.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(volume_type.CinderVolumeType,
mapping['OS::Cinder::VolumeType'])
self.assertIsInstance(self.my_volume_type,
volume_type.CinderVolumeType)
def _test_handle_create(self, is_public=True, projects=None): def _test_handle_create(self, is_public=True, projects=None):
value = mock.MagicMock() value = mock.MagicMock()
volume_type_id = '927202df-1afb-497f-8368-9c2d2f26e5db' volume_type_id = '927202df-1afb-497f-8368-9c2d2f26e5db'

View File

@ -13,7 +13,6 @@
import mock import mock
from heat.engine.resources.openstack.cinder import encrypted_volume_type
from heat.engine import stack from heat.engine import stack
from heat.engine import template from heat.engine import template
from heat.tests import common from heat.tests import common
@ -55,16 +54,6 @@ class CinderEncryptedVolumeTypeTest(common.HeatTestCase):
self.volume_encryption_types = ( self.volume_encryption_types = (
self.cinderclient.volume_encryption_types) self.cinderclient.volume_encryption_types)
def test_resource_mapping(self):
mapping = encrypted_volume_type.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(encrypted_volume_type.CinderEncryptedVolumeType,
mapping['OS::Cinder::EncryptedVolumeType'])
self.assertIsInstance(
self.my_encrypted_vol_type,
encrypted_volume_type.CinderEncryptedVolumeType
)
def test_handle_create(self): def test_handle_create(self):
value = mock.MagicMock() value = mock.MagicMock()
volume_type_id = '01bd581d-33fe-4d6d-bd7b-70ae076d39fb' volume_type_id = '01bd581d-33fe-4d6d-bd7b-70ae076d39fb'

View File

@ -159,12 +159,6 @@ class DesignateDomainTest(common.HeatTestCase):
self.test_resource.resource_id self.test_resource.resource_id
) )
def test_resource_mapping(self):
mapping = domain.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(domain.DesignateDomain, mapping[RESOURCE_TYPE])
self.assertIsInstance(self.test_resource, domain.DesignateDomain)
def test_resource_show_resource(self): def test_resource_show_resource(self):
args = dict( args = dict(
name='test', name='test',

View File

@ -226,12 +226,6 @@ class DesignateRecordTest(common.HeatTestCase):
mock_record_delete.side_effect = designate_exception.NotFound mock_record_delete.side_effect = designate_exception.NotFound
self.assertIsNone(self.test_resource.handle_delete()) self.assertIsNone(self.test_resource.handle_delete())
def test_resource_mapping(self):
mapping = record.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(record.DesignateRecord, mapping[RESOURCE_TYPE])
self.assertIsInstance(self.test_resource, record.DesignateRecord)
def test_resource_show_resource(self): def test_resource_show_resource(self):
args = dict( args = dict(
name='test-record.com', name='test-record.com',

View File

@ -16,7 +16,6 @@ import six
from heat.common import exception from heat.common import exception
from heat.common import template_format from heat.common import template_format
from heat.engine.resources.openstack.glance import image as gi
from heat.engine import stack as parser from heat.engine import stack as parser
from heat.engine import template from heat.engine import template
from heat.tests import common from heat.tests import common
@ -79,12 +78,6 @@ class GlanceImageTest(common.HeatTestCase):
resource.validate) resource.validate)
self.assertIn(error_msg, six.text_type(exc)) self.assertIn(error_msg, six.text_type(exc))
def test_resource_mapping(self):
mapping = gi.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(gi.GlanceImage, mapping['OS::Glance::Image'])
self.assertIsInstance(self.my_image, gi.GlanceImage)
def test_invalid_min_disk(self): def test_invalid_min_disk(self):
# invalid 'min_disk' # invalid 'min_disk'
tpl = template_format.parse(image_template_validate) tpl = template_format.parse(image_template_validate)

View File

@ -15,7 +15,6 @@ import uuid
import mock import mock
from heat.engine.resources.openstack.heat import cloud_config
from heat.engine import stack from heat.engine import stack
from heat.engine import template from heat.engine import template
from heat.tests import common from heat.tests import common
@ -43,13 +42,6 @@ class CloudConfigTest(common.HeatTestCase):
self.rpc_client = mock.MagicMock() self.rpc_client = mock.MagicMock()
self.config._rpc_client = self.rpc_client self.config._rpc_client = self.rpc_client
def test_resource_mapping(self):
mapping = cloud_config.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(cloud_config.CloudConfig,
mapping['OS::Heat::CloudConfig'])
self.assertIsInstance(self.config, cloud_config.CloudConfig)
def test_handle_create(self): def test_handle_create(self):
config_id = 'c8a19429-7fde-47ea-a42f-40045488226c' config_id = 'c8a19429-7fde-47ea-a42f-40045488226c'
value = {'id': config_id} value = {'id': config_id}

View File

@ -17,7 +17,6 @@ import uuid
import mock import mock
from heat.common import exception as exc from heat.common import exception as exc
from heat.engine.resources.openstack.heat import multi_part as mp
from heat.engine import stack as parser from heat.engine import stack as parser
from heat.engine import template from heat.engine import template
from heat.tests import common from heat.tests import common
@ -47,13 +46,6 @@ class MultipartMimeTest(common.HeatTestCase):
self.rpc_client = mock.MagicMock() self.rpc_client = mock.MagicMock()
self.config._rpc_client = self.rpc_client self.config._rpc_client = self.rpc_client
def test_resource_mapping(self):
mapping = mp.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(mp.MultipartMime,
mapping['OS::Heat::MultipartMime'])
self.assertIsInstance(self.config, mp.MultipartMime)
def test_handle_create(self): def test_handle_create(self):
config_id = 'c8a19429-7fde-47ea-a42f-40045488226c' config_id = 'c8a19429-7fde-47ea-a42f-40045488226c'
sc = {'id': config_id} sc = {'id': config_id}

View File

@ -197,10 +197,6 @@ class ResourceChainTests(common.HeatTestCase):
chain = self._create_chain(TEMPLATE) chain = self._create_chain(TEMPLATE)
self.assertEqual({}, chain.child_params()) self.assertEqual({}, chain.child_params())
def test_resource_mapping(self):
found = resource_chain.resource_mapping()['OS::Heat::ResourceChain']
self.assertEqual(found, resource_chain.ResourceChain)
def _create_chain(self, t): def _create_chain(self, t):
self.stack = utils.parse_stack(t) self.stack = utils.parse_stack(t)
snip = self.stack.t.resource_definitions(self.stack)['test-chain'] snip = self.stack.t.resource_definitions(self.stack)['test-chain']

View File

@ -16,7 +16,6 @@ import six
from heat.common import exception as exc from heat.common import exception as exc
from heat.common import template_format from heat.common import template_format
from heat.engine.resources.openstack.heat import software_component as sc
from heat.engine import stack from heat.engine import stack
from heat.engine import template from heat.engine import template
from heat.tests import common from heat.tests import common
@ -60,13 +59,6 @@ class SoftwareComponentTest(common.HeatTestCase):
self.rpc_client = mock.MagicMock() self.rpc_client = mock.MagicMock()
self.component._rpc_client = self.rpc_client self.component._rpc_client = self.rpc_client
def test_resource_mapping(self):
mapping = sc.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(sc.SoftwareComponent,
mapping['OS::Heat::SoftwareComponent'])
self.assertIsInstance(self.component, sc.SoftwareComponent)
def test_handle_create(self): def test_handle_create(self):
config_id = 'c8a19429-7fde-47ea-a42f-40045488226c' config_id = 'c8a19429-7fde-47ea-a42f-40045488226c'
value = {'id': config_id} value = {'id': config_id}

View File

@ -14,7 +14,6 @@
import mock import mock
from heat.common import exception as exc from heat.common import exception as exc
from heat.engine.resources.openstack.heat import software_config as sc
from heat.engine import stack from heat.engine import stack
from heat.engine import template from heat.engine import template
from heat.tests import common from heat.tests import common
@ -46,13 +45,6 @@ class SoftwareConfigTest(common.HeatTestCase):
self.rpc_client = mock.MagicMock() self.rpc_client = mock.MagicMock()
self.config._rpc_client = self.rpc_client self.config._rpc_client = self.rpc_client
def test_resource_mapping(self):
mapping = sc.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(sc.SoftwareConfig,
mapping['OS::Heat::SoftwareConfig'])
self.assertIsInstance(self.config, sc.SoftwareConfig)
def test_handle_create(self): def test_handle_create(self):
config_id = 'c8a19429-7fde-47ea-a42f-40045488226c' config_id = 'c8a19429-7fde-47ea-a42f-40045488226c'
value = {'id': config_id} value = {'id': config_id}

View File

@ -214,10 +214,6 @@ class SoftwareDeploymentTest(common.HeatTestCase):
"SOFTWARE_CONFIG since there are " "SOFTWARE_CONFIG since there are "
"software deployments on it.", six.text_type(err)) "software deployments on it.", six.text_type(err))
def test_resource_mapping(self):
self._create_stack(self.template)
self.assertIsInstance(self.deployment, sd.SoftwareDeployment)
def mock_software_config(self): def mock_software_config(self):
config = { config = {
'id': '48e8ade1-9196-42d5-89a2-f709fde42632', 'id': '48e8ade1-9196-42d5-89a2-f709fde42632',

View File

@ -133,19 +133,6 @@ class StructuredConfigTestJSON(common.HeatTestCase):
self.rpc_client = mock.MagicMock() self.rpc_client = mock.MagicMock()
self.config._rpc_client = self.rpc_client self.config._rpc_client = self.rpc_client
def test_resource_mapping(self):
mapping = sc.resource_mapping()
self.assertEqual(4, len(mapping))
self.assertEqual(sc.StructuredConfig,
mapping['OS::Heat::StructuredConfig'])
self.assertEqual(sc.StructuredDeployment,
mapping['OS::Heat::StructuredDeployment'])
self.assertEqual(sc.StructuredDeploymentGroup,
mapping['OS::Heat::StructuredDeploymentGroup'])
self.assertEqual(sc.StructuredDeployments,
mapping['OS::Heat::StructuredDeployments'])
self.assertIsInstance(self.config, sc.StructuredConfig)
def test_handle_create(self): def test_handle_create(self):
config_id = 'c8a19429-7fde-47ea-a42f-40045488226c' config_id = 'c8a19429-7fde-47ea-a42f-40045488226c'
value = {'id': config_id} value = {'id': config_id}

View File

@ -213,13 +213,6 @@ class KeystoneEndpointTest(common.HeatTestCase):
enabled=prop_diff[endpoint.KeystoneEndpoint.ENABLED] enabled=prop_diff[endpoint.KeystoneEndpoint.ENABLED]
) )
def test_resource_mapping(self):
rsrc = self._setup_endpoint_resource('test_resource_mapping')
mapping = endpoint.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(endpoint.KeystoneEndpoint, mapping[RESOURCE_TYPE])
self.assertIsInstance(rsrc, endpoint.KeystoneEndpoint)
def test_properties_title(self): def test_properties_title(self):
property_title_map = { property_title_map = {
endpoint.KeystoneEndpoint.SERVICE: 'service', endpoint.KeystoneEndpoint.SERVICE: 'service',

View File

@ -75,12 +75,6 @@ class KeystoneGroupTest(common.HeatTestCase):
return value return value
def test_resource_mapping(self):
mapping = group.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(group.KeystoneGroup, mapping[RESOURCE_TYPE])
self.assertIsInstance(self.test_group, group.KeystoneGroup)
def test_properties_title(self): def test_properties_title(self):
property_title_map = { property_title_map = {
group.KeystoneGroup.NAME: 'name', group.KeystoneGroup.NAME: 'name',

View File

@ -76,12 +76,6 @@ class KeystoneProjectTest(common.HeatTestCase):
return value return value
def test_resource_mapping(self):
mapping = project.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(project.KeystoneProject, mapping[RESOURCE_TYPE])
self.assertIsInstance(self.test_project, project.KeystoneProject)
def test_project_handle_create(self): def test_project_handle_create(self):
mock_project = self._get_mock_project() mock_project = self._get_mock_project()
self.projects.create.return_value = mock_project self.projects.create.return_value = mock_project

View File

@ -68,12 +68,6 @@ class KeystoneRegionTest(common.HeatTestCase):
return value return value
def test_resource_mapping(self):
mapping = region.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(region.KeystoneRegion, mapping[RESOURCE_TYPE])
self.assertIsInstance(self.test_region, region.KeystoneRegion)
def test_region_handle_create(self): def test_region_handle_create(self):
mock_region = self._get_mock_region() mock_region = self._get_mock_region()
self.regions.create.return_value = mock_region self.regions.create.return_value = mock_region

View File

@ -59,12 +59,6 @@ class KeystoneRoleTest(common.HeatTestCase):
return value return value
def test_resource_mapping(self):
mapping = role.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(role.KeystoneRole, mapping[RESOURCE_TYPE])
self.assertIsInstance(self.test_role, role.KeystoneRole)
def test_role_handle_create(self): def test_role_handle_create(self):
mock_role = self._get_mock_role() mock_role = self._get_mock_role()
self.roles.create.return_value = mock_role self.roles.create.return_value = mock_role

View File

@ -95,14 +95,6 @@ class KeystoneRoleAssignmentMixinTest(common.HeatTestCase):
(self.test_role_assignment.client_plugin. (self.test_role_assignment.client_plugin.
return_value) = self.keystone_client_plugin return_value) = self.keystone_client_plugin
def test_resource_mapping(self):
mapping = role_assignments.resource_mapping()
self.assertEqual(2, len(mapping))
self.assertEqual(role_assignments.KeystoneUserRoleAssignment,
mapping['OS::Keystone::UserRoleAssignment'])
self.assertEqual(role_assignments.KeystoneGroupRoleAssignment,
mapping['OS::Keystone::GroupRoleAssignment'])
def test_properties_title(self): def test_properties_title(self):
property_title_map = {MixinClass.ROLES: 'roles'} property_title_map = {MixinClass.ROLES: 'roles'}

View File

@ -196,14 +196,6 @@ class KeystoneServiceTest(common.HeatTestCase):
enabled=prop_diff[service.KeystoneService.ENABLED] enabled=prop_diff[service.KeystoneService.ENABLED]
) )
def test_resource_mapping(self):
rsrc = self._setup_service_resource(
'test_resource_mapping')
mapping = service.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(service.KeystoneService, mapping[RESOURCE_TYPE])
self.assertIsInstance(rsrc, service.KeystoneService)
def test_properties_title(self): def test_properties_title(self):
property_title_map = { property_title_map = {
service.KeystoneService.NAME: 'name', service.KeystoneService.NAME: 'name',

View File

@ -83,12 +83,6 @@ class KeystoneUserTest(common.HeatTestCase):
return value return value
def test_resource_mapping(self):
mapping = user.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(user.KeystoneUser, mapping[RESOURCE_TYPE])
self.assertIsInstance(self.test_user, user.KeystoneUser)
def test_user_handle_create(self): def test_user_handle_create(self):
mock_user = self._get_mock_user() mock_user = self._get_mock_user()
self.users.create.return_value = mock_user self.users.create.return_value = mock_user

View File

@ -144,11 +144,6 @@ class TestMagnumBay(common.HeatTestCase):
self.assertEqual((b.DELETE, b.COMPLETE), b.state) self.assertEqual((b.DELETE, b.COMPLETE), b.state)
self.assertEqual(2, self.client.bays.get.call_count) self.assertEqual(2, self.client.bays.get.call_count)
def test_resource_mapping(self):
mapping = bay.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(mapping[RESOURCE_TYPE], bay.Bay)
class BaymodelConstraintTest(common.HeatTestCase): class BaymodelConstraintTest(common.HeatTestCase):
def setUp(self): def setUp(self):

View File

@ -90,11 +90,6 @@ class TestMagnumBayModel(common.HeatTestCase):
self.assertEqual((bm.CREATE, bm.COMPLETE), bm.state) self.assertEqual((bm.CREATE, bm.COMPLETE), bm.state)
self.client.baymodels.create.assert_called_once_with(**self.expected) self.client.baymodels.create.assert_called_once_with(**self.expected)
def test_resource_mapping(self):
mapping = baymodel.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(baymodel.BayModel, mapping[RESOURCE_TYPE])
class TestMagnumBayModelWithAddedProperties(TestMagnumBayModel): class TestMagnumBayModelWithAddedProperties(TestMagnumBayModel):
magnum_template = ''' magnum_template = '''

View File

@ -117,12 +117,6 @@ class ManilaSecurityServiceTest(common.HeatTestCase):
self.assertIn('Exception: resources.security_service: error', self.assertIn('Exception: resources.security_service: error',
six.text_type(exc)) six.text_type(exc))
def test_resource_mapping(self):
mapping = security_service.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(security_service.SecurityService,
mapping['OS::Manila::SecurityService'])
def test_update(self): def test_update(self):
ss = self._create_resource('security_service', self.rsrc_defn, ss = self._create_resource('security_service', self.rsrc_defn,
self.stack) self.stack)

View File

@ -193,9 +193,3 @@ class ManilaShareNetworkTest(common.HeatTestCase):
self.assertEqual('3', net.FnGetAtt('cidr')) self.assertEqual('3', net.FnGetAtt('cidr'))
self.assertEqual('5', net.FnGetAtt('ip_version')) self.assertEqual('5', net.FnGetAtt('ip_version'))
self.assertEqual('6', net.FnGetAtt('network_type')) self.assertEqual('6', net.FnGetAtt('network_type'))
def test_resource_mapping(self):
mapping = share_network.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(share_network.ManilaShareNetwork,
mapping['OS::Manila::ShareNetwork'])

View File

@ -82,12 +82,6 @@ class MistralCronTriggerTest(common.HeatTestCase):
expected_state = (ct.CREATE, ct.COMPLETE) expected_state = (ct.CREATE, ct.COMPLETE)
self.assertEqual(expected_state, ct.state) self.assertEqual(expected_state, ct.state)
def test_resource_mapping(self):
mapping = cron_trigger.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(cron_trigger.CronTrigger,
mapping['OS::Mistral::CronTrigger'])
def test_attributes(self): def test_attributes(self):
ct = self._create_resource('trigger', self.rsrc_defn, self.stack) ct = self._create_resource('trigger', self.rsrc_defn, self.stack)
self.assertEqual('2015-03-01 00:00:00', self.assertEqual('2015-03-01 00:00:00',

View File

@ -536,12 +536,6 @@ class TestMistralWorkflow(common.HeatTestCase):
self.assertEqual(2, self.mistral.executions.delete.call_count) self.assertEqual(2, self.mistral.executions.delete.call_count)
data_delete.assert_called_once_with('executions') data_delete.assert_called_once_with('executions')
def test_resource_mapping(self):
mapping = workflow.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(workflow.Workflow,
mapping['OS::Mistral::Workflow'])
def test_signal_failed(self): def test_signal_failed(self):
tmpl = template_format.parse(workflow_template_full) tmpl = template_format.parse(workflow_template_full)
stack = utils.parse_stack(tmpl) stack = utils.parse_stack(tmpl)

View File

@ -222,14 +222,6 @@ class MonascaAlarmDefinitionTest(common.HeatTestCase):
mock_alarm_delete.side_effect = client_plugin.monasca_exc.NotFound mock_alarm_delete.side_effect = client_plugin.monasca_exc.NotFound
self.assertIsNone(self.test_resource.handle_delete()) self.assertIsNone(self.test_resource.handle_delete())
def test_resource_mapping(self):
mapping = alarm_definition.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(alarm_definition.MonascaAlarmDefinition,
mapping[RESOURCE_TYPE])
self.assertIsInstance(self.test_resource,
alarm_definition.MonascaAlarmDefinition)
def test_resource_show_resource(self): def test_resource_show_resource(self):
mock_notification_get = self.test_client.alarm_definitions.get mock_notification_get = self.test_client.alarm_definitions.get
mock_notification_get.return_value = {} mock_notification_get.return_value = {}

View File

@ -168,14 +168,6 @@ class MonascaNotificationTest(common.HeatTestCase):
self.assertIsNone(self.test_resource.handle_delete()) self.assertIsNone(self.test_resource.handle_delete())
def test_resource_mapping(self):
mapping = notification.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(notification.MonascaNotification,
mapping[RESOURCE_TYPE])
self.assertIsInstance(self.test_resource,
notification.MonascaNotification)
def test_resource_show_resource(self): def test_resource_show_resource(self):
mock_notification_get = self.test_client.notifications.get mock_notification_get = self.test_client.notifications.get
mock_notification_get.return_value = {} mock_notification_get.return_value = {}

View File

@ -15,7 +15,6 @@ import mock
from heat.common import template_format from heat.common import template_format
from heat.engine.clients.os import neutron from heat.engine.clients.os import neutron
from heat.engine.resources.openstack.neutron import address_scope
from heat.engine import rsrc_defn from heat.engine import rsrc_defn
from heat.engine import stack from heat.engine import stack
from heat.engine import template from heat.engine import template
@ -56,13 +55,6 @@ class NeutronAddressScopeTest(common.HeatTestCase):
self.my_address_scope.client = mock.MagicMock( self.my_address_scope.client = mock.MagicMock(
return_value=self.neutronclient) return_value=self.neutronclient)
def test_resource_mapping(self):
mapping = address_scope.resource_mapping()
self.assertEqual(address_scope.AddressScope,
mapping['OS::Neutron::AddressScope'])
self.assertIsInstance(self.my_address_scope,
address_scope.AddressScope)
def test_address_scope_handle_create(self): def test_address_scope_handle_create(self):
addrs = { addrs = {
'address_scope': { 'address_scope': {

View File

@ -19,7 +19,6 @@ from neutronclient.common import exceptions
from heat.common import exception from heat.common import exception
from heat.common import template_format from heat.common import template_format
from heat.engine.resources.openstack.neutron import rbac_policy
from heat.tests import common from heat.tests import common
from heat.tests.openstack.neutron import inline_templates from heat.tests.openstack.neutron import inline_templates
from heat.tests import utils from heat.tests import utils
@ -27,11 +26,6 @@ from heat.tests import utils
class RBACPolicyTest(common.HeatTestCase): class RBACPolicyTest(common.HeatTestCase):
def test_resource_mapping(self):
mapping = rbac_policy.resource_mapping()
self.assertEqual(rbac_policy.RBACPolicy,
mapping['OS::Neutron::RBACPolicy'])
@mock.patch('heat.engine.clients.os.neutron.' @mock.patch('heat.engine.clients.os.neutron.'
'NeutronClientPlugin.has_extension', return_value=True) 'NeutronClientPlugin.has_extension', return_value=True)
def _create_stack(self, ext_func, tmpl=inline_templates.RBAC_TEMPLATE): def _create_stack(self, ext_func, tmpl=inline_templates.RBAC_TEMPLATE):

View File

@ -63,16 +63,6 @@ class NeutronSubnetPoolTest(common.HeatTestCase):
self.assertEqual((rsrc.CREATE, status), rsrc.state) self.assertEqual((rsrc.CREATE, status), rsrc.state)
return rsrc return rsrc
def test_resource_mapping(self):
self.t = template_format.parse(inline_templates.SPOOL_TEMPLATE)
self.stack = utils.parse_stack(self.t)
rsrc = self.stack['sub_pool']
mapping = subnetpool.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(subnetpool.SubnetPool,
mapping['OS::Neutron::SubnetPool'])
self.assertIsInstance(rsrc, subnetpool.SubnetPool)
def test_validate_prefixlen_min_gt_max(self): def test_validate_prefixlen_min_gt_max(self):
self.t = template_format.parse(inline_templates.SPOOL_TEMPLATE) self.t = template_format.parse(inline_templates.SPOOL_TEMPLATE)
props = self.t['resources']['sub_pool']['properties'] props = self.t['resources']['sub_pool']['properties']

View File

@ -15,7 +15,6 @@ import mock
from heat.common import template_format from heat.common import template_format
from heat.engine.clients.os import neutron from heat.engine.clients.os import neutron
from heat.engine.resources.openstack.neutron import qos
from heat.engine import rsrc_defn from heat.engine import rsrc_defn
from heat.engine import stack from heat.engine import stack
from heat.engine import template from heat.engine import template
@ -70,11 +69,6 @@ class NeutronQoSPolicyTest(common.HeatTestCase):
self.my_qos_policy.client = mock.MagicMock( self.my_qos_policy.client = mock.MagicMock(
return_value=self.neutronclient) return_value=self.neutronclient)
def test_resource_mapping(self):
mapping = qos.resource_mapping()
self.assertEqual(qos.QoSPolicy, mapping['OS::Neutron::QoSPolicy'])
self.assertIsInstance(self.my_qos_policy, qos.QoSPolicy)
def test_qos_policy_handle_create(self): def test_qos_policy_handle_create(self):
policy = { policy = {
'policy': { 'policy': {
@ -192,14 +186,6 @@ class NeutronQoSBandwidthLimitRuleTest(common.HeatTestCase):
self.policy_id = '477e8273-60a7-4c41-b683-fdb0bc7cd151' self.policy_id = '477e8273-60a7-4c41-b683-fdb0bc7cd151'
self.find_mock.return_value = self.policy_id self.find_mock.return_value = self.policy_id
def test_resource_mapping(self):
mapping = qos.resource_mapping()
self.assertEqual(2, len(mapping))
self.assertEqual(qos.QoSBandwidthLimitRule,
mapping['OS::Neutron::QoSBandwidthLimitRule'])
self.assertIsInstance(self.bandwidth_limit_rule,
qos.QoSBandwidthLimitRule)
def test_rule_handle_create(self): def test_rule_handle_create(self):
rule = { rule = {
'bandwidth_limit_rule': { 'bandwidth_limit_rule': {

View File

@ -14,7 +14,6 @@
import mock import mock
from heat.engine.clients.os import nova as novac from heat.engine.clients.os import nova as novac
from heat.engine.resources.openstack.nova import flavor
from heat.engine import stack from heat.engine import stack
from heat.engine import template from heat.engine import template
from heat.tests import common from heat.tests import common
@ -58,12 +57,6 @@ class NovaFlavorTest(common.HeatTestCase):
nova.return_value = self.novaclient nova.return_value = self.novaclient
self.flavors = self.novaclient.flavors self.flavors = self.novaclient.flavors
def test_resource_mapping(self):
mapping = flavor.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(flavor.NovaFlavor, mapping['OS::Nova::Flavor'])
self.assertIsInstance(self.my_flavor, flavor.NovaFlavor)
def test_flavor_handle_create(self): def test_flavor_handle_create(self):
value = mock.MagicMock() value = mock.MagicMock()
flavor_id = '927202df-1afb-497f-8368-9c2d2f26e5db' flavor_id = '927202df-1afb-497f-8368-9c2d2f26e5db'

View File

@ -14,7 +14,6 @@
import mock import mock
from heat.engine.clients.os import nova from heat.engine.clients.os import nova
from heat.engine.resources.openstack.nova import host_aggregate
from heat.engine import stack from heat.engine import stack
from heat.engine import template from heat.engine import template
from heat.tests import common from heat.tests import common
@ -57,14 +56,6 @@ class NovaHostAggregateTest(common.HeatTestCase):
nova_client.return_value = self.novaclient nova_client.return_value = self.novaclient
self.aggregates = self.novaclient.aggregates self.aggregates = self.novaclient.aggregates
def test_resource_mapping(self):
mapping = host_aggregate.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(host_aggregate.HostAggregate,
mapping['OS::Nova::HostAggregate'])
self.assertIsInstance(self.my_aggregate,
host_aggregate.HostAggregate)
def test_aggregate_handle_create(self): def test_aggregate_handle_create(self):
value = mock.MagicMock() value = mock.MagicMock()
aggregate_id = '927202df-1afb-497f-8368-9c2d2f26e5db' aggregate_id = '927202df-1afb-497f-8368-9c2d2f26e5db'

View File

@ -158,14 +158,6 @@ class SaharaClusterTest(common.HeatTestCase):
self.assertEqual({"cluster": "info"}, cluster.FnGetAtt('show')) self.assertEqual({"cluster": "info"}, cluster.FnGetAtt('show'))
self.assertEqual(3, self.cl_mgr.get.call_count) self.assertEqual(3, self.cl_mgr.get.call_count)
def test_cluster_resource_mapping(self):
cluster = self._init_cluster(self.t)
mapping = sc.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(sc.SaharaCluster,
mapping['OS::Sahara::Cluster'])
self.assertIsInstance(cluster, sc.SaharaCluster)
def test_cluster_create_no_image_anywhere_fails(self): def test_cluster_create_no_image_anywhere_fails(self):
self.t['resources']['super-cluster']['properties'].pop( self.t['resources']['super-cluster']['properties'].pop(
'default_image_id') 'default_image_id')

View File

@ -72,12 +72,6 @@ class SaharaDataSourceTest(common.HeatTestCase):
expected_state = (ds.CREATE, ds.COMPLETE) expected_state = (ds.CREATE, ds.COMPLETE)
self.assertEqual(expected_state, ds.state) self.assertEqual(expected_state, ds.state)
def test_resource_mapping(self):
mapping = data_source.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(data_source.DataSource,
mapping['OS::Sahara::DataSource'])
def test_update(self): def test_update(self):
ds = self._create_resource('data-source', self.rsrc_defn, ds = self._create_resource('data-source', self.rsrc_defn,
self.stack) self.stack)

View File

@ -105,9 +105,3 @@ class SaharaImageTest(common.HeatTestCase):
value.to_dict.return_value = {'img': 'info'} value.to_dict.return_value = {'img': 'info'}
self.client.images.get.return_value = value self.client.images.get.return_value = value
self.assertEqual({'img': 'info'}, img.FnGetAtt('show')) self.assertEqual({'img': 'info'}, img.FnGetAtt('show'))
def test_resource_mapping(self):
mapping = image.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(image.SaharaImageRegistry,
mapping['OS::Sahara::ImageRegistry'])

View File

@ -71,12 +71,6 @@ class SaharaJobBinaryTest(common.HeatTestCase):
expected_state = (jb.CREATE, jb.COMPLETE) expected_state = (jb.CREATE, jb.COMPLETE)
self.assertEqual(expected_state, jb.state) self.assertEqual(expected_state, jb.state)
def test_resource_mapping(self):
mapping = job_binary.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(job_binary.JobBinary,
mapping['OS::Sahara::JobBinary'])
def test_update(self): def test_update(self):
jb = self._create_resource('job-binary', self.rsrc_defn, jb = self._create_resource('job-binary', self.rsrc_defn,
self.stack) self.stack)

View File

@ -132,14 +132,6 @@ class SaharaNodeGroupTemplateTest(common.HeatTestCase):
self.stack = utils.parse_stack(template) self.stack = utils.parse_stack(template)
return self.stack['node-group'] return self.stack['node-group']
def test_ngt_resource_mapping(self):
ngt = self._init_ngt(self.t)
mapping = st.resource_mapping()
self.assertEqual(st.SaharaNodeGroupTemplate,
mapping['OS::Sahara::NodeGroupTemplate'])
self.assertIsInstance(ngt,
st.SaharaNodeGroupTemplate)
def _create_ngt(self, template): def _create_ngt(self, template):
ngt = self._init_ngt(template) ngt = self._init_ngt(template)
self.ngt_mgr.create.return_value = self.fake_ngt self.ngt_mgr.create.return_value = self.fake_ngt
@ -312,14 +304,6 @@ class SaharaClusterTemplateTest(common.HeatTestCase):
self.stack = utils.parse_stack(template) self.stack = utils.parse_stack(template)
return self.stack['cluster-template'] return self.stack['cluster-template']
def test_ct_resource_mapping(self):
ct = self._init_ct(self.t)
mapping = st.resource_mapping()
self.assertEqual(st.SaharaClusterTemplate,
mapping['OS::Sahara::ClusterTemplate'])
self.assertIsInstance(ct,
st.SaharaClusterTemplate)
def _create_ct(self, template): def _create_ct(self, template):
ct = self._init_ct(template) ct = self._init_ct(template)
self.ct_mgr.create.return_value = self.fake_ct self.ct_mgr.create.return_value = self.fake_ct

View File

@ -101,12 +101,6 @@ class SenlinClusterTest(common.HeatTestCase):
self.assertEqual(self.fake_cl.id, cluster.resource_id) self.assertEqual(self.fake_cl.id, cluster.resource_id)
return cluster return cluster
def test_resource_mapping(self):
mapping = sc.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(sc.Cluster,
mapping['OS::Senlin::Cluster'])
def test_cluster_create_success(self): def test_cluster_create_success(self):
self._create_cluster(self.t) self._create_cluster(self.t)
expect_kwargs = { expect_kwargs = {

View File

@ -181,9 +181,3 @@ class SenlinPolicyTest(common.HeatTestCase):
policy = self._create_policy(self.t) policy = self._create_policy(self.t)
self.senlin_mock.get_policy.return_value = FakePolicy() self.senlin_mock.get_policy.return_value = FakePolicy()
self.assertEqual(excepted_show, policy._show_resource()) self.assertEqual(excepted_show, policy._show_resource())
def test_resource_mapping(self):
mapping = policy.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(policy.Policy,
mapping['OS::Senlin::Policy'])

View File

@ -113,9 +113,3 @@ class SenlinProfileTest(common.HeatTestCase):
prop_diff=prop_diff) prop_diff=prop_diff)
self.senlin_mock.update_profile.assert_called_once_with( self.senlin_mock.update_profile.assert_called_once_with(
profile.resource_id, **prop_diff) profile.resource_id, **prop_diff)
def test_resource_mapping(self):
mapping = sp.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(sp.Profile,
mapping['OS::Senlin::Profile'])

View File

@ -113,12 +113,6 @@ class SenlinReceiverTest(common.HeatTestCase):
self.senlin_mock.delete_receiver.assert_called_once_with( self.senlin_mock.delete_receiver.assert_called_once_with(
recv.resource_id) recv.resource_id)
def test_resource_mapping(self):
mapping = sr.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(sr.Receiver,
mapping['OS::Senlin::Receiver'])
def test_cluster_resolve_attribute(self): def test_cluster_resolve_attribute(self):
excepted_show = { excepted_show = {
'id': 'some_id', 'id': 'some_id',

View File

@ -117,12 +117,6 @@ class TroveClusterTest(common.HeatTestCase):
tc.resource_id) tc.resource_id)
self.assertEqual('clusters', tc.entity) self.assertEqual('clusters', tc.entity)
def test_resource_mapping(self):
mapping = cluster.resource_mapping()
self.assertEqual(1, len(mapping))
self.assertEqual(cluster.TroveCluster,
mapping['OS::Trove::Cluster'])
def test_attributes(self): def test_attributes(self):
tc = self._create_resource('cluster', self.rsrc_defn, self.stack) tc = self._create_resource('cluster', self.rsrc_defn, self.stack)
self.assertEqual(['10.0.0.1'], tc.FnGetAtt('ip')) self.assertEqual(['10.0.0.1'], tc.FnGetAtt('ip'))

View File

@ -33,6 +33,7 @@ from heat.engine import clients
from heat.engine import constraints from heat.engine import constraints
from heat.engine import dependencies from heat.engine import dependencies
from heat.engine import environment from heat.engine import environment
from heat.engine import plugin_manager
from heat.engine import properties from heat.engine import properties
from heat.engine import resource from heat.engine import resource
from heat.engine import resources from heat.engine import resources
@ -3747,3 +3748,45 @@ class ResourceUpdateRestrictionTest(common.HeatTestCase):
self.new_stack)) self.new_stack))
self.assertIn('requires replacement', six.text_type(error)) self.assertIn('requires replacement', six.text_type(error))
ev.assert_not_called() ev.assert_not_called()
class TestResourceMapping(common.HeatTestCase):
def _check_mapping_func(self, func, module):
self.assertTrue(callable(func))
res = func()
self.assertIsInstance(res, collections.Mapping)
for r_type, r_class in six.iteritems(res):
self.assertIsInstance(r_type, six.string_types)
type_elements = r_type.split('::')
# type has fixed format
# Platform type::Service/Type::Optional Sub-sections::Name
self.assertTrue(len(type_elements) >= 3)
# type should be OS or AWS
self.assertIn(type_elements[0], ('AWS', 'OS'))
# check that value is a class object
self.assertIsInstance(r_class, six.class_types)
# check that class is subclass of Resource base class
self.assertTrue(issubclass(r_class, resource.Resource))
# check that mentioned class is presented in the same module
self.assertTrue(hasattr(module, six.text_type(r_class.__name__)))
return len(res)
def test_resource_mappings(self):
# use plugin manager for loading all resources
# use the same approach like and in heat.engine.resources.__init__
manager = plugin_manager.PluginManager('heat.engine.resources')
num_of_types = 0
for module in manager.modules:
# check for both potential mappings
for name in ('resource_mapping', 'available_resource_mapping'):
mapping_func = getattr(module, name, None)
if mapping_func:
num_of_types += self._check_mapping_func(
mapping_func, module)
# check number of registred resource types to make sure,
# that there is no regressions
# It's soft check and should not be a cause of the merge conflict
# Feel free to update it in some separate patch
self.assertTrue(num_of_types >= 137)