]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Move resources into a separate sub-package
authorZane Bitter <zbitter@redhat.com>
Thu, 25 Oct 2012 18:44:20 +0000 (20:44 +0200)
committerZane Bitter <zbitter@redhat.com>
Thu, 25 Oct 2012 20:31:06 +0000 (22:31 +0200)
Change-Id: I5a6d74949b6f39a9df6c5077c2ff768f50fb3ac1
Signed-off-by: Zane Bitter <zbitter@redhat.com>
28 files changed:
heat/engine/manager.py
heat/engine/resources/__init__.py [new file with mode: 0644]
heat/engine/resources/autoscaling.py [moved from heat/engine/autoscaling.py with 97% similarity]
heat/engine/resources/cloud_watch.py [moved from heat/engine/cloud_watch.py with 93% similarity]
heat/engine/resources/dbinstance.py [moved from heat/engine/dbinstance.py with 99% similarity]
heat/engine/resources/eip.py [moved from heat/engine/eip.py with 91% similarity]
heat/engine/resources/instance.py [moved from heat/engine/instance.py with 98% similarity]
heat/engine/resources/loadbalancer.py [moved from heat/engine/loadbalancer.py with 99% similarity]
heat/engine/resources/register.py [moved from heat/engine/resource_types.py with 74% similarity]
heat/engine/resources/resource.py [moved from heat/engine/resources.py with 99% similarity]
heat/engine/resources/s3.py [moved from heat/engine/s3.py with 98% similarity]
heat/engine/resources/security_group.py [moved from heat/engine/security_group.py with 97% similarity]
heat/engine/resources/stack.py [moved from heat/engine/stack.py with 96% similarity]
heat/engine/resources/user.py [moved from heat/engine/user.py with 98% similarity]
heat/engine/resources/volume.py [moved from heat/engine/volume.py with 97% similarity]
heat/engine/resources/wait_condition.py [moved from heat/engine/wait_condition.py with 96% similarity]
heat/tests/test_autoscaling.py
heat/tests/test_dbinstance.py
heat/tests/test_eip.py
heat/tests/test_engine_manager.py
heat/tests/test_instance.py
heat/tests/test_loadbalancer.py
heat/tests/test_resource.py
heat/tests/test_s3.py
heat/tests/test_user.py
heat/tests/test_validate.py
heat/tests/test_volume.py
heat/tests/test_waitcondition.py

index 9ea57d771d56f3a7d675d37d8c79916ef63ce77b..9d16b3e21555e28dfc115bf6b155e1fdcb40b33c 100644 (file)
@@ -30,7 +30,6 @@ from heat.common import utils as heat_utils
 from heat.engine import api
 from heat.engine import identifier
 from heat.engine import parser
-from heat.engine import resources
 from heat.engine import watchrule
 from heat.engine import auth
 
diff --git a/heat/engine/resources/__init__.py b/heat/engine/resources/__init__.py
new file mode 100644 (file)
index 0000000..4ff0783
--- /dev/null
@@ -0,0 +1,16 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+from resource import Resource
similarity index 97%
rename from heat/engine/autoscaling.py
rename to heat/engine/resources/autoscaling.py
index 93982c21939731cfae153e4954dac4f786c8cfcd..189001c429cb334d77d9ba1fce2a161ac7776f68 100644 (file)
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from heat.engine import instance
-from heat.engine.resources import Resource
+from heat.engine.resources import instance
+from heat.engine.resources import resource
 
 from heat.openstack.common import log as logging
 
 logger = logging.getLogger('heat.engine.autoscaling')
 
 
-class AutoScalingGroup(Resource):
+class AutoScalingGroup(resource.Resource):
     tags_schema = {'Key': {'Type': 'String',
                            'Required': True},
                    'Value': {'Type': 'String',
@@ -145,7 +145,7 @@ class AutoScalingGroup(Resource):
         return unicode(self.name)
 
 
-class LaunchConfiguration(Resource):
+class LaunchConfiguration(resource.Resource):
     tags_schema = {'Key': {'Type': 'String',
                            'Required': True},
                    'Value': {'Type': 'String',
@@ -172,7 +172,7 @@ class LaunchConfiguration(Resource):
         super(LaunchConfiguration, self).__init__(name, json_snippet, stack)
 
 
-class ScalingPolicy(Resource):
+class ScalingPolicy(resource.Resource):
     properties_schema = {
         'AutoScalingGroupName': {'Type': 'String',
                                  'Required': True},
similarity index 93%
rename from heat/engine/cloud_watch.py
rename to heat/engine/resources/cloud_watch.py
index 22747cb699c18b7ee2f6542708c6781f76d1bb40..3feff0c3054e2818110de803cf93d870ab38010c 100644 (file)
@@ -19,7 +19,7 @@ import os
 
 from heat.common import exception
 from heat.engine import watchrule
-from heat.engine.resources import Resource
+from heat.engine.resources import resource
 from heat.db import api as db_api
 
 from heat.openstack.common import log as logging
@@ -27,7 +27,7 @@ from heat.openstack.common import log as logging
 logger = logging.getLogger('heat.engine.cloud_watch')
 
 
-class CloudWatchAlarm(Resource):
+class CloudWatchAlarm(resource.Resource):
     properties_schema = {'ComparisonOperator': {'Type': 'String',
                          'AllowedValues': ['GreaterThanOrEqualToThreshold',
                          'GreaterThanThreshold', 'LessThanThreshold',
@@ -57,12 +57,6 @@ class CloudWatchAlarm(Resource):
 
     strict_dependency = False
 
-    def validate(self):
-        '''
-        Validate the Properties
-        '''
-        return Resource.validate(self)
-
     def handle_create(self):
         wr = watchrule.WatchRule(context=self.context, watch_name=self.name,
                                  rule=self.parsed_template('Properties'),
similarity index 99%
rename from heat/engine/dbinstance.py
rename to heat/engine/resources/dbinstance.py
index 0529986b795d29d6704878f627800438231bf318..0f36a8f5e464f833bd3ae1752a0598c14f72f570 100644 (file)
@@ -16,7 +16,7 @@
 import json
 
 from heat.common import exception
-from heat.engine import stack
+from heat.engine.resources import stack
 
 from heat.openstack.common import log as logging
 
similarity index 91%
rename from heat/engine/eip.py
rename to heat/engine/resources/eip.py
index 4b9e59d4c9a51fe357e0dc3d910cb574f3ddbad9..0990ee63fd55c9795495f247de6fc2b763f2e100 100644 (file)
@@ -14,7 +14,7 @@
 #    under the License.
 
 from heat.common import exception
-from heat.engine.resources import Resource
+from heat.engine.resources import resource
 from novaclient.exceptions import NotFound
 
 from heat.openstack.common import log as logging
@@ -22,7 +22,7 @@ from heat.openstack.common import log as logging
 logger = logging.getLogger('heat.engine.eip')
 
 
-class ElasticIp(Resource):
+class ElasticIp(resource.Resource):
     properties_schema = {'Domain': {'Type': 'String',
                                     'Implemented': False},
                          'InstanceId': {'Type': 'String'}}
@@ -52,12 +52,6 @@ class ElasticIp(Resource):
     def handle_update(self):
         return self.UPDATE_REPLACE
 
-    def validate(self):
-        '''
-        Validate the ip address here
-        '''
-        return Resource.validate(self)
-
     def handle_delete(self):
         """De-allocate a floating IP."""
         if self.instance_id is not None:
@@ -74,7 +68,7 @@ class ElasticIp(Resource):
                                                      key=key)
 
 
-class ElasticIpAssociation(Resource):
+class ElasticIpAssociation(resource.Resource):
     properties_schema = {'InstanceId': {'Type': 'String',
                                         'Required': True},
                          'EIP': {'Type': 'String'},
@@ -87,12 +81,6 @@ class ElasticIpAssociation(Resource):
     def FnGetRefId(self):
         return unicode(self.properties.get('EIP', '0.0.0.0'))
 
-    def validate(self):
-        '''
-        Validate the ip address here
-        '''
-        return Resource.validate(self)
-
     def handle_create(self):
         """Add a floating IP address to a server."""
         logger.debug('ElasticIpAssociation %s.add_floating_ip(%s)' %
similarity index 98%
rename from heat/engine/instance.py
rename to heat/engine/resources/instance.py
index 9c00c506aff55a7a3e3a2f07bf24063ce8e88b80..865d1548916b82aecc6c5a747f763762ed90272e 100644 (file)
@@ -22,7 +22,7 @@ from email.mime.text import MIMEText
 from novaclient.exceptions import NotFound
 
 import heat
-from heat.engine import resources
+from heat.engine.resources import resource
 from heat.common import exception
 
 from heat.openstack.common import log as logging
@@ -30,7 +30,7 @@ from heat.openstack.common import log as logging
 logger = logging.getLogger('heat.engine.instance')
 
 
-class Restarter(resources.Resource):
+class Restarter(resource.Resource):
     properties_schema = {'InstanceId': {'Type': 'String',
                                         'Required': True}}
 
@@ -58,7 +58,7 @@ class Restarter(resources.Resource):
         self.stack.restart_resource(victim.name)
 
 
-class Instance(resources.Resource):
+class Instance(resource.Resource):
     # AWS does not require KeyName and InstanceType but we seem to
     tags_schema = {'Key': {'Type': 'String',
                            'Required': True},
@@ -176,7 +176,7 @@ class Instance(resources.Resource):
                 attachments.append((json.dumps(self.metadata),
                                     'cfn-init-data', 'x-cfninitdata'))
 
-            metadata_server = resources.Metadata.server()
+            metadata_server = resource.Metadata.server()
             if metadata_server is not None:
                 attachments.append((metadata_server,
                                     'cfn-metadata-server', 'x-cfninitdata'))
similarity index 99%
rename from heat/engine/loadbalancer.py
rename to heat/engine/resources/loadbalancer.py
index 28ba01f45d133394487862532747139ad594d3c8..0d7cec47a79f284f17c84fb66d17283d49249bd1 100644 (file)
@@ -17,7 +17,7 @@ import urllib2
 import json
 
 from heat.common import exception
-from heat.engine import stack
+from heat.engine.resources import stack
 from heat.db import api as db_api
 from heat.engine import parser
 from novaclient.exceptions import NotFound
similarity index 74%
rename from heat/engine/resource_types.py
rename to heat/engine/resources/register.py
index 4126e965724d7886f4362b162dc8f56f3b4f7fea..c626f1f3d8d8f757b161759d106435c26a66ad68 100644 (file)
 Register of resource types and their mapping to Resource classes.
 """
 
-
-from heat.engine import resources
-
-from heat.engine import autoscaling
-from heat.engine import cloud_watch
-from heat.engine import dbinstance
-from heat.engine import eip
-from heat.engine import instance
-from heat.engine import loadbalancer
-from heat.engine import s3
-from heat.engine import security_group
-from heat.engine import stack
-from heat.engine import user
-from heat.engine import volume
-from heat.engine import wait_condition
+from heat.engine.resources import autoscaling
+from heat.engine.resources import cloud_watch
+from heat.engine.resources import dbinstance
+from heat.engine.resources import eip
+from heat.engine.resources import instance
+from heat.engine.resources import loadbalancer
+from heat.engine.resources import s3
+from heat.engine.resources import security_group
+from heat.engine.resources import stack
+from heat.engine.resources import user
+from heat.engine.resources import volume
+from heat.engine.resources import wait_condition
 
 
 _resource_classes = {
@@ -58,6 +55,5 @@ _resource_classes = {
 }
 
 
-def getClass(resource_type):
-    """Return the appropriate Resource class for the resource type."""
-    return _resource_classes.get(resource_type, resources.GenericResource)
+def get_class(resource_type):
+    return _resource_classes.get(resource_type)
similarity index 99%
rename from heat/engine/resources.py
rename to heat/engine/resources/resource.py
index 2b15e2a7727dfa03c529ce80375d30cd3e72ad54..7555f0a3ed60a7470c3f0716743c40b0aa863340 100644 (file)
@@ -108,8 +108,8 @@ class Resource(object):
             return super(Resource, cls).__new__(cls)
 
         # Select the correct subclass to instantiate
-        import resource_types
-        ResourceClass = resource_types.getClass(json['Type'])
+        from heat.engine.resources import register
+        ResourceClass = register.get_class(json['Type']) or GenericResource
         return ResourceClass(name, json, stack)
 
     def __init__(self, name, json_snippet, stack):
similarity index 98%
rename from heat/engine/s3.py
rename to heat/engine/resources/s3.py
index 7dcebc52af420f04ba54ca4120a1bf6eabdaeb1c..5daa71bf9af995c74fe2fba05bd5d8146fbdf0f3 100644 (file)
@@ -18,7 +18,7 @@ import os
 from urlparse import urlparse
 
 from heat.common import exception
-from heat.engine.resources import Resource
+from heat.engine.resources import resource
 from heat.openstack.common import log as logging
 try:
     from swiftclient.client import ClientException
@@ -29,7 +29,7 @@ except ImportError:
 logger = logging.getLogger('heat.engine.s3')
 
 
-class S3Bucket(Resource):
+class S3Bucket(resource.Resource):
     website_schema = {'IndexDocument': {'Type': 'String'},
                       'ErrorDocument': {'Type': 'String'}}
     properties_schema = {'AccessControl': {
similarity index 97%
rename from heat/engine/security_group.py
rename to heat/engine/resources/security_group.py
index b9986cdc9857ff80e9f88dfddcadf5879bb3d624..970cd08b0a255c04ea116b4099162abe132cb47a 100644 (file)
 from novaclient.exceptions import BadRequest
 from novaclient.exceptions import NotFound
 from heat.common import exception
-from heat.engine.resources import Resource
+from heat.engine.resources import resource
 
 from heat.openstack.common import log as logging
 
 logger = logging.getLogger('heat.engine.security_group')
 
 
-class SecurityGroup(Resource):
+class SecurityGroup(resource.Resource):
     properties_schema = {'GroupDescription': {'Type': 'String',
                                               'Required': True},
                          'VpcId': {'Type': 'String',
similarity index 96%
rename from heat/engine/stack.py
rename to heat/engine/resources/stack.py
index 189f5b8216ceab859225fc2d25affd318f7d6aeb..40614d283fc34ba9580298685f9c95d58a565c5b 100644 (file)
@@ -17,7 +17,7 @@ import urllib2
 import json
 
 from heat.common import exception
-from heat.engine.resources import Resource
+from heat.engine.resources import resource
 from heat.db import api as db_api
 from heat.engine import parser
 
@@ -31,14 +31,14 @@ logger = logging.getLogger(__file__)
  PROP_PARAMETERS) = ('TemplateURL', 'TimeoutInMinutes', 'Parameters')
 
 
-class Stack(Resource):
+class Stack(resource.Resource):
     properties_schema = {PROP_TEMPLATE_URL: {'Type': 'String',
                                              'Required': True},
                          PROP_TIMEOUT_MINS: {'Type': 'Number'},
                          PROP_PARAMETERS: {'Type': 'Map'}}
 
     def __init__(self, name, json_snippet, stack):
-        Resource.__init__(self, name, json_snippet, stack)
+        super(Stack, self).__init__(name, json_snippet, stack)
         self._nested = None
 
     def _params(self):
similarity index 98%
rename from heat/engine/user.py
rename to heat/engine/resources/user.py
index 83c827cb3dbbc65dc48bb984dfeb70f30e6b05a2..968eaab07c0aebd8bed9dd0eb25dbb2474681357 100644 (file)
@@ -16,7 +16,7 @@
 import eventlet
 from heat.common import exception
 from heat.openstack.common import cfg
-from heat.engine.resources import Resource
+from heat.engine.resources import resource
 
 from heat.openstack.common import log as logging
 
@@ -37,7 +37,7 @@ class DummyId:
         return self.id == other.id
 
 
-class User(Resource):
+class User(resource.Resource):
     properties_schema = {'Path': {'Type': 'String'},
                          'Groups': {'Type': 'CommaDelimitedList'},
                          'LoginProfile': {'Type': 'List'},
@@ -125,7 +125,7 @@ class User(Resource):
                 resource=self.physical_resource_name(), key=key)
 
 
-class AccessKey(Resource):
+class AccessKey(resource.Resource):
     properties_schema = {'Serial': {'Type': 'Integer',
                                     'Implemented': False},
                          'UserName': {'Type': 'String',
similarity index 97%
rename from heat/engine/volume.py
rename to heat/engine/resources/volume.py
index 6a8e399f2c8db8597f754bec05c6af0f2520b498..090daf2e6648cb353548f6b89310d5a643f0260b 100644 (file)
@@ -17,13 +17,13 @@ import eventlet
 from heat.openstack.common import log as logging
 
 from heat.common import exception
-from heat.engine.resources import Resource
+from heat.engine.resources import resource
 from novaclient.exceptions import NotFound
 
 logger = logging.getLogger('heat.engine.volume')
 
 
-class Volume(Resource):
+class Volume(resource.Resource):
     properties_schema = {'AvailabilityZone': {'Type': 'String',
                                               'Required': True},
                          'Size': {'Type': 'Number'},
@@ -59,7 +59,7 @@ class Volume(Resource):
             self.nova('volume').volumes.delete(self.instance_id)
 
 
-class VolumeAttachment(Resource):
+class VolumeAttachment(resource.Resource):
     properties_schema = {'InstanceId': {'Type': 'String',
                                         'Required': True},
                          'VolumeId': {'Type': 'String',
similarity index 96%
rename from heat/engine/wait_condition.py
rename to heat/engine/resources/wait_condition.py
index fe55fa71cd797dbfe134d98b7084ef00e0024dac..13b541e1d935383ca38d5e19e89291611db5818d 100644 (file)
 import eventlet
 
 from heat.common import exception
-from heat.engine import resources
+from heat.engine.resources import resource
 
 from heat.openstack.common import log as logging
 
 logger = logging.getLogger('heat.engine.wait_condition')
 
 
-class WaitConditionHandle(resources.Resource):
+class WaitConditionHandle(resource.Resource):
     '''
     the main point of this class is to :
     have no dependancies (so the instance can reference it)
@@ -38,7 +38,7 @@ class WaitConditionHandle(resources.Resource):
 
     def handle_create(self):
         self.instance_id = '%s/stacks/%s/resources/%s' % \
-                           (resources.Metadata.server(),
+                           (resource.Metadata.server(),
                             self.stack.id,
                             self.name)
 
@@ -56,7 +56,7 @@ WAIT_STATUSES = (
 )
 
 
-class WaitCondition(resources.Resource):
+class WaitCondition(resource.Resource):
     properties_schema = {'Handle': {'Type': 'String',
                                     'Required': True},
                          'Timeout': {'Type': 'Number',
index 32156c0d62ba6e485e2e3d78b19ac171efb7d0e7..76f71aa4b0771e2fad049d101b399e5bcb7b6d11 100644 (file)
@@ -23,8 +23,8 @@ import json
 
 from nose.plugins.attrib import attr
 
-from heat.engine import autoscaling as asc
-from heat.engine import loadbalancer
+from heat.engine.resources import autoscaling as asc
+from heat.engine.resources import loadbalancer
 from heat.engine import parser
 
 
index 092ddce6fdd47b273c8d1dafc962a5af8b32735f..95057ecb08fd197a685bb07fbe1a9e29be8aa8b4 100644 (file)
@@ -24,9 +24,9 @@ import json
 from nose.plugins.attrib import attr
 
 from heat.common import exception
-from heat.engine import dbinstance as dbi
 from heat.engine import parser
-from heat.engine import stack
+from heat.engine.resources import stack
+from heat.engine.resources import dbinstance as dbi
 
 
 @attr(tag=['unit', 'resource'])
index abb19e09ab3251435a36ed7d609a3d34d5cbabd8..4a417e9e2325d741e85890a8be35a282c1d402c9 100644 (file)
@@ -23,7 +23,7 @@ import json
 
 from nose.plugins.attrib import attr
 
-from heat.engine import eip
+from heat.engine.resources import eip
 from heat.engine import parser
 from heat.tests.v1_1 import fakes
 
index 7e2ef5cd8db1bd7d1fcc69fb4fe7a9a409b852d6..cdb33afdd2f665294f67ef800fd6b11388d7617c 100644 (file)
@@ -27,11 +27,11 @@ from nose import with_setup
 from heat.common import context
 from heat.tests.v1_1 import fakes
 import heat.engine.api as engine_api
-from heat.engine import instance as instances
 import heat.db as db_api
 from heat.engine import parser
 from heat.engine import manager
 from heat.engine import auth
+from heat.engine.resources import instance as instances
 from heat.engine import watchrule
 
 
index b9ad04fdc26449584db89432a08a7fa38e8c0e0b..3b730c7c7072559e1822286926df1dd805c454d5 100644 (file)
@@ -26,7 +26,7 @@ from nose.plugins.attrib import attr
 from nose import with_setup
 
 from heat.tests.v1_1 import fakes
-from heat.engine import instance as instances
+from heat.engine.resources import instance as instances
 import heat.db as db_api
 from heat.engine import parser
 
index bc60458fe108d2dbf47d2b81d5ea99db1f74f100..0ad4f25f2bff87a62b2c9011aa4a588dd92e8557 100644 (file)
@@ -25,11 +25,11 @@ import json
 from nose.plugins.attrib import attr
 
 from heat.common import exception
-from heat.engine import instance
-from heat.engine import loadbalancer as lb
 from heat.engine import parser
-from heat.engine import resources
-from heat.engine import stack
+from heat.engine.resources import instance
+from heat.engine.resources import loadbalancer as lb
+from heat.engine.resources.resource import Metadata
+from heat.engine.resources import stack
 from heat.tests.v1_1 import fakes
 
 
@@ -43,7 +43,7 @@ class LoadBalancerTest(unittest.TestCase):
         self.m.StubOutWithMock(lb.LoadBalancer, 'nova')
         self.m.StubOutWithMock(instance.Instance, 'nova')
         self.m.StubOutWithMock(self.fc.servers, 'create')
-        self.m.StubOutWithMock(resources.Metadata, '__set__')
+        self.m.StubOutWithMock(Metadata, '__set__')
 
     def tearDown(self):
         self.m.UnsetStubs()
@@ -90,8 +90,8 @@ class LoadBalancerTest(unittest.TestCase):
                    scheduler_hints=None, userdata=mox.IgnoreArg(),
                    security_groups=None).AndReturn(self.fc.servers.list()[1])
         #stack.Stack.create_with_template(mox.IgnoreArg()).AndReturn(None)
-        resources.Metadata.__set__(mox.IgnoreArg(),
-                                   mox.IgnoreArg()).AndReturn(None)
+        Metadata.__set__(mox.IgnoreArg(),
+                         mox.IgnoreArg()).AndReturn(None)
 
         lb.LoadBalancer.nova().MultipleTimes().AndReturn(self.fc)
         self.m.ReplayAll()
index 875e975de4e82680c901ae3a9f53a19c6a8f5209..200ff12ff9b9ab4afcbf32510df585d29e9c69f9 100644 (file)
@@ -21,7 +21,7 @@ import mox
 import json
 from heat.common import context
 from heat.engine import parser
-from heat.engine import resources
+from heat.engine.resources import resource
 
 
 @attr(tag=['unit', 'resource'])
@@ -33,32 +33,32 @@ class ResourceTest(unittest.TestCase):
 
     def test_state_defaults(self):
         tmpl = {'Type': 'Foo'}
-        res = resources.GenericResource('test_res_def', tmpl, self.stack)
+        res = resource.GenericResource('test_res_def', tmpl, self.stack)
         self.assertEqual(res.state, None)
         self.assertEqual(res.state_description, '')
 
     def test_state(self):
         tmpl = {'Type': 'Foo'}
-        res = resources.GenericResource('test_resource', tmpl, self.stack)
+        res = resource.GenericResource('test_resource', tmpl, self.stack)
         res.state_set('bar')
         self.assertEqual(res.state, 'bar')
 
     def test_state_description(self):
         tmpl = {'Type': 'Foo'}
-        res = resources.GenericResource('test_resource', tmpl, self.stack)
+        res = resource.GenericResource('test_resource', tmpl, self.stack)
         res.state_set('blarg', 'wibble')
         self.assertEqual(res.state_description, 'wibble')
 
     def test_created_time(self):
         tmpl = {'Type': 'Foo'}
-        res = resources.GenericResource('test_res_new', tmpl, self.stack)
+        res = resource.GenericResource('test_res_new', tmpl, self.stack)
         self.assertEqual(res.created_time, None)
         res._store()
         self.assertNotEqual(res.created_time, None)
 
     def test_updated_time(self):
         tmpl = {'Type': 'Foo'}
-        res = resources.GenericResource('test_res_upd', tmpl, self.stack)
+        res = resource.GenericResource('test_res_upd', tmpl, self.stack)
         res._store()
         stored_time = res.updated_time
         res.state_set(res.CREATE_IN_PROGRESS, 'testing')
@@ -70,7 +70,7 @@ class ResourceTest(unittest.TestCase):
             'Type': 'Foo',
             'foo': {'Fn::Join': [' ', ['bar', 'baz', 'quux']]}
         }
-        res = resources.GenericResource('test_resource', tmpl, self.stack)
+        res = resource.GenericResource('test_resource', tmpl, self.stack)
 
         parsed_tmpl = res.parsed_template()
         self.assertEqual(parsed_tmpl['Type'], 'Foo')
@@ -81,13 +81,13 @@ class ResourceTest(unittest.TestCase):
 
     def test_parsed_template_default(self):
         tmpl = {'Type': 'Foo'}
-        res = resources.GenericResource('test_resource', tmpl, self.stack)
+        res = resource.GenericResource('test_resource', tmpl, self.stack)
         self.assertEqual(res.parsed_template('foo'), {})
         self.assertEqual(res.parsed_template('foo', 'bar'), 'bar')
 
     def test_metadata_default(self):
         tmpl = {'Type': 'Foo'}
-        res = resources.GenericResource('test_resource', tmpl, self.stack)
+        res = resource.GenericResource('test_resource', tmpl, self.stack)
         self.assertEqual(res.metadata, {})
 
 
@@ -105,7 +105,7 @@ class MetadataTest(unittest.TestCase):
         ctx.username = 'metadata_test_user'
         self.stack = parser.Stack(ctx, 'test_stack', parser.Template({}))
         self.stack.store()
-        self.res = resources.GenericResource('metadata_resource',
+        self.res = resource.GenericResource('metadata_resource',
                                              tmpl, self.stack)
         self.res.create()
 
index 552b8742aa3d85eb54cc95fde443de6c02786afa..f1cf2fd3659162b6b3a27131a3d43c0893e2ea33 100644 (file)
@@ -24,7 +24,7 @@ import json
 
 from nose.plugins.attrib import attr
 
-from heat.engine import s3
+from heat.engine.resources import s3
 from heat.engine import parser
 from utils import skip_if
 
index f26e2811f31c9d464a708db215b5ebbae320eb59..35dd9d2bd2cafb6b03ddcc245a6a9d7d155ef5d9 100644 (file)
@@ -27,7 +27,7 @@ from nose.plugins.attrib import attr
 from heat.common import exception
 from heat.common import config
 from heat.engine import parser
-from heat.engine import user
+from heat.engine.resources import user
 from heat.tests.v1_1 import fakes
 from keystoneclient.v2_0 import users
 from keystoneclient.v2_0 import roles
index 4f64a5aa3681fa1740b7084f14386a5a9083445f..1ef43cb88858ae4d90e628741a193fad1a23a575 100644 (file)
@@ -26,8 +26,8 @@ from nose.plugins.attrib import attr
 from nose import with_setup
 
 from heat.tests.v1_1 import fakes
-from heat.engine import instance as instances
-from heat.engine import volume as volumes
+from heat.engine.resources import instance as instances
+from heat.engine.resources import volume as volumes
 from heat.engine import manager as managers
 import heat.db as db_api
 from heat.engine import parser
index 8c60ce3e19d05a152f18e4db204d0e446713ff7f..c127d2c106a1ebf74c09f89f0ef9973a6c25f6ad 100644 (file)
@@ -25,7 +25,7 @@ import unittest
 from nose.plugins.attrib import attr
 
 from heat.engine import parser
-from heat.engine import volume as vol
+from heat.engine.resources import volume as vol
 from heat.tests.v1_1 import fakes
 
 
index 5307f214ed44c241843edb62018f45b6529d8632..570a4d796cdc27eb1d3fd9646a5aceafa658de7f 100644 (file)
@@ -25,7 +25,7 @@ from nose.plugins.attrib import attr
 
 import heat.db as db_api
 from heat.engine import parser
-from heat.engine import wait_condition as wc
+from heat.engine.resources import wait_condition as wc
 from heat.common import context
 
 logger = logging.getLogger('test_waitcondition')