def type(self):
return self.t['Type']
+ def has_interface(self, resource_type):
+ """Check to see if this resource is either mapped to resource_type
+ or is a "resource_type".
+ """
+ if self.type() == resource_type:
+ return True
+ ri = self.stack.env.get_resource_info(self.type(),
+ self.name)
+ return ri.name == resource_type
+
def identifier(self):
'''Return an identifier for this resource.'''
return identifier.ResourceIdentifier(resource_name=self.name,
for resource in self.stack.resources.itervalues():
# depend on any RouterInterface in this template with the same
# router_id as this router_id
- if ((resource.type() == 'OS::Neutron::RouterInterface' or
- resource.type() == 'OS::Quantum::RouterInterface') and
+ if (resource.has_interface('OS::Neutron::RouterInterface') and
resource.properties.get('router_id') ==
self.properties.get('router_id')):
deps += (self, resource)
# depend on any subnet in this template with the same network_id
# as this network_id, as the gateway implicitly creates a port
# on that subnet
- elif ((resource.type() == 'OS::Neutron::Subnet' or
- resource.type() == 'OS::Quantum::Subnet') and
+ elif (resource.has_interface('OS::Neutron::Subnet') and
resource.properties.get('network_id') ==
self.properties.get('network_id')):
deps += (self, resource)
from heat.engine import parser
from heat.engine import resource
from heat.engine import scheduler
+from heat.engine import environment
from heat.openstack.common import uuidutils
import heat.db.api as db_api
def setUp(self):
super(ResourceTest, self).setUp()
utils.setup_dummy_db()
- self.stack = parser.Stack(utils.dummy_context(), 'test_stack',
- parser.Template({}),
- stack_id=uuidutils.generate_uuid())
resource._register_class('GenericResourceType',
generic_rsrc.GenericResource)
+ env = environment.Environment()
+ env.load({u'resource_registry':
+ {u'OS::Test::GenericResource': u'GenericResourceType'}})
+
+ self.stack = parser.Stack(utils.dummy_context(), 'test_stack',
+ parser.Template({}), env=env,
+ stack_id=uuidutils.generate_uuid())
+
def test_get_class_ok(self):
cls = resource.get_class('GenericResourceType')
self.assertEqual(cls, generic_rsrc.GenericResource)
res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
self.assertEqual(res.type(), 'Foo')
+ def test_has_interface_direct_match(self):
+ tmpl = {'Type': 'GenericResourceType'}
+ res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
+ self.assertTrue(res.has_interface('GenericResourceType'))
+
+ def test_has_interface_no_match(self):
+ tmpl = {'Type': 'GenericResourceType'}
+ res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
+ self.assertFalse(res.has_interface('LookingForAnotherType'))
+
+ def test_has_interface_mapping(self):
+ tmpl = {'Type': 'OS::Test::GenericResource'}
+ res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
+ self.assertTrue(res.has_interface('GenericResourceType'))
+
def test_created_time(self):
tmpl = {'Type': 'Foo'}
res = generic_rsrc.GenericResource('test_res_new', tmpl, self.stack)