From: Zane Bitter Date: Thu, 25 Oct 2012 18:44:20 +0000 (+0200) Subject: Move resources into a separate sub-package X-Git-Tag: 2014.1~1266 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=ffd410dab5bd5d8a05c8eb1772765af45a602792;p=openstack-build%2Fheat-build.git Move resources into a separate sub-package Change-Id: I5a6d74949b6f39a9df6c5077c2ff768f50fb3ac1 Signed-off-by: Zane Bitter --- diff --git a/heat/engine/manager.py b/heat/engine/manager.py index 9ea57d77..9d16b3e2 100644 --- a/heat/engine/manager.py +++ b/heat/engine/manager.py @@ -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 index 00000000..4ff07839 --- /dev/null +++ b/heat/engine/resources/__init__.py @@ -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 diff --git a/heat/engine/autoscaling.py b/heat/engine/resources/autoscaling.py similarity index 97% rename from heat/engine/autoscaling.py rename to heat/engine/resources/autoscaling.py index 93982c21..189001c4 100644 --- a/heat/engine/autoscaling.py +++ b/heat/engine/resources/autoscaling.py @@ -13,15 +13,15 @@ # 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}, diff --git a/heat/engine/cloud_watch.py b/heat/engine/resources/cloud_watch.py similarity index 93% rename from heat/engine/cloud_watch.py rename to heat/engine/resources/cloud_watch.py index 22747cb6..3feff0c3 100644 --- a/heat/engine/cloud_watch.py +++ b/heat/engine/resources/cloud_watch.py @@ -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'), diff --git a/heat/engine/dbinstance.py b/heat/engine/resources/dbinstance.py similarity index 99% rename from heat/engine/dbinstance.py rename to heat/engine/resources/dbinstance.py index 0529986b..0f36a8f5 100644 --- a/heat/engine/dbinstance.py +++ b/heat/engine/resources/dbinstance.py @@ -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 diff --git a/heat/engine/eip.py b/heat/engine/resources/eip.py similarity index 91% rename from heat/engine/eip.py rename to heat/engine/resources/eip.py index 4b9e59d4..0990ee63 100644 --- a/heat/engine/eip.py +++ b/heat/engine/resources/eip.py @@ -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)' % diff --git a/heat/engine/instance.py b/heat/engine/resources/instance.py similarity index 98% rename from heat/engine/instance.py rename to heat/engine/resources/instance.py index 9c00c506..865d1548 100644 --- a/heat/engine/instance.py +++ b/heat/engine/resources/instance.py @@ -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')) diff --git a/heat/engine/loadbalancer.py b/heat/engine/resources/loadbalancer.py similarity index 99% rename from heat/engine/loadbalancer.py rename to heat/engine/resources/loadbalancer.py index 28ba01f4..0d7cec47 100644 --- a/heat/engine/loadbalancer.py +++ b/heat/engine/resources/loadbalancer.py @@ -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 diff --git a/heat/engine/resource_types.py b/heat/engine/resources/register.py similarity index 74% rename from heat/engine/resource_types.py rename to heat/engine/resources/register.py index 4126e965..c626f1f3 100644 --- a/heat/engine/resource_types.py +++ b/heat/engine/resources/register.py @@ -17,21 +17,18 @@ 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) diff --git a/heat/engine/resources.py b/heat/engine/resources/resource.py similarity index 99% rename from heat/engine/resources.py rename to heat/engine/resources/resource.py index 2b15e2a7..7555f0a3 100644 --- a/heat/engine/resources.py +++ b/heat/engine/resources/resource.py @@ -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): diff --git a/heat/engine/s3.py b/heat/engine/resources/s3.py similarity index 98% rename from heat/engine/s3.py rename to heat/engine/resources/s3.py index 7dcebc52..5daa71bf 100644 --- a/heat/engine/s3.py +++ b/heat/engine/resources/s3.py @@ -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': { diff --git a/heat/engine/security_group.py b/heat/engine/resources/security_group.py similarity index 97% rename from heat/engine/security_group.py rename to heat/engine/resources/security_group.py index b9986cdc..970cd08b 100644 --- a/heat/engine/security_group.py +++ b/heat/engine/resources/security_group.py @@ -16,14 +16,14 @@ 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', diff --git a/heat/engine/stack.py b/heat/engine/resources/stack.py similarity index 96% rename from heat/engine/stack.py rename to heat/engine/resources/stack.py index 189f5b82..40614d28 100644 --- a/heat/engine/stack.py +++ b/heat/engine/resources/stack.py @@ -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): diff --git a/heat/engine/user.py b/heat/engine/resources/user.py similarity index 98% rename from heat/engine/user.py rename to heat/engine/resources/user.py index 83c827cb..968eaab0 100644 --- a/heat/engine/user.py +++ b/heat/engine/resources/user.py @@ -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', diff --git a/heat/engine/volume.py b/heat/engine/resources/volume.py similarity index 97% rename from heat/engine/volume.py rename to heat/engine/resources/volume.py index 6a8e399f..090daf2e 100644 --- a/heat/engine/volume.py +++ b/heat/engine/resources/volume.py @@ -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', diff --git a/heat/engine/wait_condition.py b/heat/engine/resources/wait_condition.py similarity index 96% rename from heat/engine/wait_condition.py rename to heat/engine/resources/wait_condition.py index fe55fa71..13b541e1 100644 --- a/heat/engine/wait_condition.py +++ b/heat/engine/resources/wait_condition.py @@ -16,14 +16,14 @@ 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', diff --git a/heat/tests/test_autoscaling.py b/heat/tests/test_autoscaling.py index 32156c0d..76f71aa4 100644 --- a/heat/tests/test_autoscaling.py +++ b/heat/tests/test_autoscaling.py @@ -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 diff --git a/heat/tests/test_dbinstance.py b/heat/tests/test_dbinstance.py index 092ddce6..95057ecb 100644 --- a/heat/tests/test_dbinstance.py +++ b/heat/tests/test_dbinstance.py @@ -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']) diff --git a/heat/tests/test_eip.py b/heat/tests/test_eip.py index abb19e09..4a417e9e 100644 --- a/heat/tests/test_eip.py +++ b/heat/tests/test_eip.py @@ -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 diff --git a/heat/tests/test_engine_manager.py b/heat/tests/test_engine_manager.py index 7e2ef5cd..cdb33afd 100644 --- a/heat/tests/test_engine_manager.py +++ b/heat/tests/test_engine_manager.py @@ -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 diff --git a/heat/tests/test_instance.py b/heat/tests/test_instance.py index b9ad04fd..3b730c7c 100644 --- a/heat/tests/test_instance.py +++ b/heat/tests/test_instance.py @@ -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 diff --git a/heat/tests/test_loadbalancer.py b/heat/tests/test_loadbalancer.py index bc60458f..0ad4f25f 100644 --- a/heat/tests/test_loadbalancer.py +++ b/heat/tests/test_loadbalancer.py @@ -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() diff --git a/heat/tests/test_resource.py b/heat/tests/test_resource.py index 875e975d..200ff12f 100644 --- a/heat/tests/test_resource.py +++ b/heat/tests/test_resource.py @@ -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() diff --git a/heat/tests/test_s3.py b/heat/tests/test_s3.py index 552b8742..f1cf2fd3 100644 --- a/heat/tests/test_s3.py +++ b/heat/tests/test_s3.py @@ -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 diff --git a/heat/tests/test_user.py b/heat/tests/test_user.py index f26e2811..35dd9d2b 100644 --- a/heat/tests/test_user.py +++ b/heat/tests/test_user.py @@ -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 diff --git a/heat/tests/test_validate.py b/heat/tests/test_validate.py index 4f64a5aa..1ef43cb8 100644 --- a/heat/tests/test_validate.py +++ b/heat/tests/test_validate.py @@ -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 diff --git a/heat/tests/test_volume.py b/heat/tests/test_volume.py index 8c60ce3e..c127d2c1 100644 --- a/heat/tests/test_volume.py +++ b/heat/tests/test_volume.py @@ -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 diff --git a/heat/tests/test_waitcondition.py b/heat/tests/test_waitcondition.py index 5307f214..570a4d79 100644 --- a/heat/tests/test_waitcondition.py +++ b/heat/tests/test_waitcondition.py @@ -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')