Allowed the database call to return no parsed template.
The database impl was raising an exception if no parsed template exists. The logic that was looking up the parsed template expects None to be returned if the template isn't stored. * I also fixed some pep8 errors.
This commit is contained in:
parent
3d5b05c50d
commit
d3bdddee68
@ -60,10 +60,6 @@ def raw_template_create(context, values):
|
||||
def parsed_template_get(context, template_id):
|
||||
result = model_query(context, models.ParsedTemplate).\
|
||||
filter_by(id=template_id).first()
|
||||
|
||||
if not result:
|
||||
raise Exception("parsed template with id %s not found" % template_id)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
|
@ -46,7 +46,8 @@ class API(wsgi.Router):
|
||||
controller=metadata_controller, action='create_stack',
|
||||
conditions=dict(method=['PUT']))
|
||||
mapper.connect('/stacks/:stack_name/resources/:resource_id',
|
||||
controller=metadata_controller, action='update_metadata',
|
||||
controller=metadata_controller,\
|
||||
action='update_metadata',
|
||||
conditions=dict(method=['PUT']))
|
||||
mapper.connect('/events/',
|
||||
controller=metadata_controller, action='create_event',
|
||||
|
@ -13,7 +13,6 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import logging
|
||||
import json
|
||||
|
||||
from webob.exc import Response
|
||||
@ -73,10 +72,10 @@ class MetadataController:
|
||||
if error:
|
||||
if error == 'stack':
|
||||
return json_error(404,
|
||||
'The stack "%s" does not exist.' % stack_name)
|
||||
'The stack "%s" does not exist.' % stack_name)
|
||||
else:
|
||||
return json_error(404,
|
||||
'The resource "%s" does not exist.' % resource_id)
|
||||
'The resource "%s" does not exist.' % resource_id)
|
||||
return metadata
|
||||
|
||||
def update_metadata(self, req, body, stack_name, resource_id):
|
||||
@ -89,10 +88,10 @@ class MetadataController:
|
||||
if error:
|
||||
if error == 'stack':
|
||||
return json_error(404,
|
||||
'The stack "%s" does not exist.' % stack_name)
|
||||
'The stack "%s" does not exist.' % stack_name)
|
||||
else:
|
||||
return json_error(404,
|
||||
'The resource "%s" does not exist.' % resource_id)
|
||||
'The resource "%s" does not exist.' % resource_id)
|
||||
return json_response(201, {
|
||||
'resource': resource_id,
|
||||
'metadata': body,
|
||||
|
@ -22,17 +22,19 @@ import shutil
|
||||
|
||||
from heat.db.sqlalchemy.session import get_engine
|
||||
|
||||
|
||||
def reset_db():
|
||||
if os.path.exists('heat-test.db'):
|
||||
os.remove('heat-test.db')
|
||||
|
||||
|
||||
|
||||
def setup():
|
||||
import mox # Fail fast if you don't have mox. Workaround for bug 810424
|
||||
|
||||
from heat import db
|
||||
from heat.db import migration
|
||||
reset_db()
|
||||
|
||||
reset_db()
|
||||
migration.db_sync()
|
||||
engine = get_engine()
|
||||
conn = engine.connect()
|
||||
|
||||
|
@ -117,7 +117,8 @@ runas=root
|
||||
|
||||
|
||||
def tearDown_metadata_files():
|
||||
shutil.rmtree('/tmp/_files_test_', ignore_errors=True)
|
||||
shutil.rmtree('/tmp/_files_test_',\
|
||||
ignore_errors=True)
|
||||
|
||||
|
||||
class PopenMock:
|
||||
|
@ -14,22 +14,22 @@ from heat.engine import instance as instances
|
||||
import heat.db as db_api
|
||||
from heat.engine import parser
|
||||
|
||||
|
||||
@attr(tag=['unit', 'resource'])
|
||||
@attr(speed='fast')
|
||||
class instancesTest(unittest.TestCase):
|
||||
class stacksTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.m = mox.Mox()
|
||||
self.fc = fakes.FakeClient()
|
||||
|
||||
def tearDown(self):
|
||||
self.m.UnsetStubs()
|
||||
print "instancesTest teardown complete"
|
||||
print "stackTest teardown complete"
|
||||
|
||||
def test_wordpress_single_instance_stack_create(self):
|
||||
f = open('../../templates/WordPress_Single_Instance_gold.template')
|
||||
t = json.loads(f.read())
|
||||
f.close()
|
||||
|
||||
params = {}
|
||||
parameters = {}
|
||||
params['KeyStoneCreds'] = None
|
||||
@ -40,15 +40,11 @@ class instancesTest(unittest.TestCase):
|
||||
instances.Instance.nova().AndReturn(self.fc)
|
||||
instances.Instance.nova().AndReturn(self.fc)
|
||||
instances.Instance.nova().AndReturn(self.fc)
|
||||
|
||||
#instance = instances.Instance('WebServer',\
|
||||
# t['Resources']['WebServer'], stack)
|
||||
instance = stack.resources['WebServer']
|
||||
instance.itype_oflavor['m1.large'] = 'm1.large'
|
||||
instance.stack.resolve_attributes(instance.t)
|
||||
instance.stack.resolve_joins(instance.t)
|
||||
instance.stack.resolve_base64(instance.t)
|
||||
|
||||
server_userdata = instance._build_userdata(\
|
||||
instance.t['Properties']['UserData'])
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
@ -57,17 +53,15 @@ class instancesTest(unittest.TestCase):
|
||||
userdata=server_userdata).\
|
||||
AndReturn(self.fc.servers.list()[1])
|
||||
self.m.ReplayAll()
|
||||
|
||||
stack.create_blocking()
|
||||
assert(stack.resources['WebServer'] != None)
|
||||
assert(stack.resources['WebServer'].instance_id > 0)
|
||||
assert(stack.resources['WebServer'].ipaddress != '0.0.0.0')
|
||||
|
||||
|
||||
def test_wordpress_single_instance_stack_delete(self):
|
||||
f = open('../../templates/WordPress_Single_Instance_gold.template')
|
||||
t = json.loads(f.read())
|
||||
f.close()
|
||||
|
||||
params = {}
|
||||
parameters = {}
|
||||
params['KeyStoneCreds'] = None
|
||||
@ -79,13 +73,11 @@ class instancesTest(unittest.TestCase):
|
||||
instances.Instance.nova().AndReturn(self.fc)
|
||||
instances.Instance.nova().AndReturn(self.fc)
|
||||
instances.Instance.nova().AndReturn(self.fc)
|
||||
|
||||
instance = stack.resources['WebServer']
|
||||
instance.itype_oflavor['m1.large'] = 'm1.large'
|
||||
instance.stack.resolve_attributes(instance.t)
|
||||
instance.stack.resolve_joins(instance.t)
|
||||
instance.stack.resolve_base64(instance.t)
|
||||
|
||||
server_userdata = instance._build_userdata(\
|
||||
instance.t['Properties']['UserData'])
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
@ -94,27 +86,22 @@ class instancesTest(unittest.TestCase):
|
||||
userdata=server_userdata).\
|
||||
AndReturn(self.fc.servers.list()[2])
|
||||
self.m.ReplayAll()
|
||||
|
||||
rt = {}
|
||||
rt['template'] = stack.t
|
||||
rt['stack_name'] = stack.name
|
||||
new_rt = db_api.raw_template_create(None, rt)
|
||||
|
||||
s = {}
|
||||
s['name'] = stack.name
|
||||
s['raw_template_id'] = new_rt.id
|
||||
new_s = db_api.stack_create(None, s)
|
||||
stack.id = new_s.id
|
||||
|
||||
pt = {}
|
||||
pt['template'] = stack.t
|
||||
pt['raw_template_id'] = new_rt.id
|
||||
new_pt = db_api.parsed_template_create(None, pt)
|
||||
|
||||
stack.create_blocking()
|
||||
assert(stack.resources['WebServer'] != None)
|
||||
assert(stack.resources['WebServer'].instance_id > 0)
|
||||
|
||||
stack.delete_blocking()
|
||||
assert(stack.resources['WebServer'].state == 'DELETE_COMPLETE')
|
||||
assert(stack.t['stack_status'] == 'DELETE_COMPLETE')
|
||||
|
@ -203,7 +203,7 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 9999,
|
||||
"id": 9999,
|
||||
"name": "sample-server3",
|
||||
"image": {
|
||||
"id": 3,
|
||||
@ -307,7 +307,6 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
def delete_servers_9999_metadata_key2(self, **kw):
|
||||
return (204, None)
|
||||
|
||||
|
||||
def post_servers_9999_metadata(self, **kw):
|
||||
return (204, {'metadata': {'test_key': 'test_value'}})
|
||||
|
||||
|
@ -55,6 +55,7 @@ i = 1
|
||||
while True:
|
||||
pool.spawn_n(monitor, '192.168.122.238', 'root', i)
|
||||
i = i + 1
|
||||
if i > 800: break
|
||||
if i > 800:
|
||||
break
|
||||
|
||||
pool.waitall()
|
||||
|
Loading…
x
Reference in New Issue
Block a user