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:
Chris Alfonso 2012-05-10 15:31:31 -04:00
parent 3d5b05c50d
commit d3bdddee68
8 changed files with 20 additions and 34 deletions

View File

@ -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

View File

@ -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',

View File

@ -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,

View File

@ -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()

View File

@ -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:

View File

@ -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')

View File

@ -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'}})

View File

@ -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()