def test_instance_create_delete(self): f = open("%s/WordPress_Single_Instance_gold.template" % self.path) t = json.loads(f.read()) f.close() t['Parameters']['KeyName']['Value'] = 'test' stack = parser.Stack(None, 'test_stack', parser.Template(t), stack_id=-1) self.m.StubOutWithMock(db_api, 'resource_get_by_name_and_stack') db_api.resource_get_by_name_and_stack(None, 'test_resource_name', stack).AndReturn(None) self.m.StubOutWithMock(instances.Instance, 'nova') instances.Instance.nova().AndReturn(self.fc) instances.Instance.nova().AndReturn(self.fc) instances.Instance.nova().AndReturn(self.fc) instances.Instance.nova().AndReturn(self.fc) self.m.ReplayAll() t['Resources']['WebServer']['Properties']['ImageId'] = 'CentOS 5.2' t['Resources']['WebServer']['Properties']['InstanceType'] = \ '256 MB Server' instance = instances.Instance('test_resource_name', t['Resources']['WebServer'], stack) instance.t = instance.stack.resolve_runtime_data(instance.t) # need to resolve the template functions server_userdata = instance._build_userdata( instance.t['Properties']['UserData']) self.m.StubOutWithMock(self.fc.servers, 'create') self.fc.servers.create(image=1, flavor=1, key_name='test', name='test_resource_name', security_groups=None, userdata=server_userdata, scheduler_hints=None, meta=None).AndReturn(self.fc.servers.list()[1]) self.m.ReplayAll() instance.instance_id = 1234 instance.create() # this makes sure the auto increment worked on instance creation self.assertTrue(instance.id > 0) instance.delete() self.assertTrue(instance.instance_id is None) self.assertEqual(instance.state, instance.DELETE_COMPLETE)
def test_validate_volumeattach_valid(self): t = template_format.parse(test_template_volumeattach % 'vdq') stack = parser.Stack(None, 'test_stack', parser.Template(t)) self.m.StubOutWithMock(db_api, 'resource_get_by_name_and_stack') db_api.resource_get_by_name_and_stack(None, 'test_resource_name', stack).AndReturn(None) self.m.ReplayAll() volumeattach = stack.resources['MountPoint'] self.assertTrue(volumeattach.validate() is None)
def test_validate_volumeattach_invalid(self): t = json.loads(test_template_volumeattach % 'sda') stack = parser.Stack(None, 'test_stack', parser.Template(t)) self.m.StubOutWithMock(db_api, 'resource_get_by_name_and_stack') db_api.resource_get_by_name_and_stack(None, 'test_resource_name', stack).AndReturn(None) self.m.ReplayAll() volumeattach = stack.resources['MountPoint'] self.assertTrue(volumeattach.validate())
def test_instance_create_delete(self): f = open('../../templates/WordPress_Single_Instance_gold.template') t = json.loads(f.read()) f.close() params = {} parameters = {} params['KeyStoneCreds'] = None t['Parameters']['KeyName']['Value'] = 'test' stack = parser.Stack('test_stack', t, 0, params) self.m.StubOutWithMock(db_api, 'resource_get_by_name_and_stack') db_api.resource_get_by_name_and_stack(None, 'test_resource_name',\ stack).AndReturn(None) self.m.StubOutWithMock(instances.Instance, 'nova') instances.Instance.nova().AndReturn(self.fc) instances.Instance.nova().AndReturn(self.fc) instances.Instance.nova().AndReturn(self.fc) instances.Instance.nova().AndReturn(self.fc) self.m.ReplayAll() t['Resources']['WebServer']['Properties']['ImageId'] = 'CentOS 5.2' t['Resources']['WebServer']['Properties']['InstanceType'] = \ '256 MB Server' instance = instances.Instance('test_resource_name',\ t['Resources']['WebServer'], stack) instance.itype_oflavor['256 MB Server'] = '256 MB Server' instance.stack.resolve_attributes(instance.t) instance.stack.resolve_joins(instance.t) instance.stack.resolve_base64(instance.t) # need to resolve the template functions server_userdata = instance._build_userdata(\ instance.t['Properties']['UserData']) self.m.StubOutWithMock(self.fc.servers, 'create') self.fc.servers.create(image=1, flavor=1, key_name='test',\ name='test_resource_name', security_groups=None,\ userdata=server_userdata).\ AndReturn(self.fc.servers.list()[1]) self.m.ReplayAll() instance.instance_id = 1234 instance.itype_oflavor['256 MB Server'] = '256 MB Server' instance.create() # this makes sure the auto increment worked on instance creation assert(instance.id > 0) instance.delete() assert(instance.instance_id == None) assert(instance.state == instance.DELETE_COMPLETE)
def test_validate_volumeattach_invalid(self): t = template_format.parse(test_template_volumeattach % 'sda') stack = parser.Stack(None, 'test_stack', parser.Template(t)) self.m.StubOutWithMock(db_api, 'resource_get_by_name_and_stack') db_api.resource_get_by_name_and_stack(None, 'test_resource_name', stack).AndReturn(None) self.m.ReplayAll() volumeattach = stack.resources['MountPoint'] self.assertRaises(exception.StackValidationFailed, volumeattach.validate)
def test_validate_volumeattach_invalid(self): t = template_format.parse(test_template_volumeattach % 'sda') stack = parser.Stack(None, 'test_stack', parser.Template(t)) self.m.StubOutWithMock(db_api, 'resource_get_by_name_and_stack') db_api.resource_get_by_name_and_stack(None, 'test_resource_name', stack).AndReturn(None) self.m.ReplayAll() volumeattach = stack.resources['MountPoint'] self.assertRaises(exception.StackValidationFailed, volumeattach.validate)
def test_validate_volumeattach_invalid(self): t = json.loads(test_template_volumeattach % 'sda') self.m.StubOutWithMock(auth, 'authenticate') auth.authenticate(None).AndReturn(True) stack = parser.Stack(None, 'test_stack', parser.Template(t)) self.m.StubOutWithMock(db_api, 'resource_get_by_name_and_stack') db_api.resource_get_by_name_and_stack(None, 'test_resource_name', stack).AndReturn(None) self.m.ReplayAll() volumeattach = stack.resources['MountPoint'] self.assertTrue(volumeattach.validate())
def test_instance_create_delete(self): f = open("%s/WordPress_Single_Instance_gold.template" % self.path) t = json.loads(f.read()) f.close() t["Parameters"]["KeyName"]["Value"] = "test" stack = parser.Stack(None, "test_stack", parser.Template(t), stack_id=-1) self.m.StubOutWithMock(db_api, "resource_get_by_name_and_stack") db_api.resource_get_by_name_and_stack(None, "test_resource_name", stack).AndReturn(None) self.m.StubOutWithMock(instances.Instance, "nova") instances.Instance.nova().AndReturn(self.fc) instances.Instance.nova().AndReturn(self.fc) instances.Instance.nova().AndReturn(self.fc) instances.Instance.nova().AndReturn(self.fc) self.m.ReplayAll() t["Resources"]["WebServer"]["Properties"]["ImageId"] = "CentOS 5.2" t["Resources"]["WebServer"]["Properties"]["InstanceType"] = "256 MB Server" instance = instances.Instance("test_resource_name", t["Resources"]["WebServer"], stack) instance.t = instance.stack.resolve_runtime_data(instance.t) # need to resolve the template functions server_userdata = instance._build_userdata(instance.t["Properties"]["UserData"]) self.m.StubOutWithMock(self.fc.servers, "create") self.fc.servers.create( image=1, flavor=1, key_name="test", name="test_resource_name", security_groups=None, userdata=server_userdata, scheduler_hints=None, meta=None, ).AndReturn(self.fc.servers.list()[1]) self.m.ReplayAll() instance.instance_id = 1234 instance.create() # this makes sure the auto increment worked on instance creation self.assertTrue(instance.id > 0) instance.delete() self.assertTrue(instance.instance_id is None) self.assertEqual(instance.state, instance.DELETE_COMPLETE)
def test_instance_create_delete(self): f = open("%s/WordPress_Single_Instance_gold.template" % self.path) t = json.loads(f.read()) f.close() template = parser.Template(t) params = parser.Parameters('test_stack', template, {'KeyName': 'test'}) stack = parser.Stack(None, 'test_stack', template, params, stack_id=-1) self.m.StubOutWithMock(db_api, 'resource_get_by_name_and_stack') db_api.resource_get_by_name_and_stack(None, 'test_resource_name', stack).AndReturn(None) self.m.StubOutWithMock(instances.Instance, 'nova') instances.Instance.nova().AndReturn(self.fc) instances.Instance.nova().AndReturn(self.fc) instances.Instance.nova().AndReturn(self.fc) instances.Instance.nova().AndReturn(self.fc) self.m.ReplayAll() t['Resources']['WebServer']['Properties']['ImageId'] = 'CentOS 5.2' t['Resources']['WebServer']['Properties']['InstanceType'] = \ '256 MB Server' instance = instances.Instance('test_resource_name', t['Resources']['WebServer'], stack) instance.t = instance.stack.resolve_runtime_data(instance.t) # need to resolve the template functions server_userdata = instance._build_userdata( instance.t['Properties']['UserData']) self.m.StubOutWithMock(self.fc.servers, 'create') self.fc.servers.create(image=1, flavor=1, key_name='test', name='test_resource_name', security_groups=None, userdata=server_userdata, scheduler_hints=None, meta=None).AndReturn(self.fc.servers.list()[1]) self.m.ReplayAll() instance.resource_id = 1234 instance.create() # this makes sure the auto increment worked on instance creation self.assertTrue(instance.id > 0) instance.delete() self.assertTrue(instance.resource_id is None) self.assertEqual(instance.state, instance.DELETE_COMPLETE)
def test_post_success_to_handle(self): t = json.loads(test_template_waitcondition) stack = self.create_stack('test_stack', t, {}) wc.WaitCondition._create_timeout().AndReturn(eventlet.Timeout(5)) wc.WaitCondition._get_status_reason(mox.IgnoreArg()).AndReturn( ('WAITING', '')) eventlet.sleep(1).AndReturn(None) wc.WaitCondition._get_status_reason(mox.IgnoreArg()).AndReturn( ('WAITING', '')) eventlet.sleep(1).AndReturn(None) wc.WaitCondition._get_status_reason(mox.IgnoreArg()).AndReturn( ('SUCCESS', 'woot toot')) self.m.ReplayAll() stack.create() resource = stack.resources['WaitForTheHandle'] self.assertEqual(resource.state, 'CREATE_COMPLETE') r = db_api.resource_get_by_name_and_stack(None, 'WaitHandle', stack.id) self.assertEqual(r.name, 'WaitHandle') self.m.VerifyAll()
def test_validate_volumeattach_invalid(self): t = json.loads(test_template_volumeattach % 'sda') params = {} params['KeyStoneCreds'] = None stack = parser.Stack('test_stack', t, 0, params) self.m.StubOutWithMock(db_api, 'resource_get_by_name_and_stack') db_api.resource_get_by_name_and_stack(None, 'test_resource_name',\ stack).AndReturn(None) self.m.ReplayAll() volumeattach = stack.resources['MountPoint'] stack.resolve_attributes(volumeattach.t) stack.resolve_joins(volumeattach.t) stack.resolve_base64(volumeattach.t) assert(volumeattach.validate())
def test_post_success_to_handle(self): t = json.loads(test_template_waitcondition) stack = self.create_stack('test_stack', t, {}) wc.WaitCondition._create_timeout().AndReturn(eventlet.Timeout(5)) wc.WaitCondition._get_status_reason( mox.IgnoreArg()).AndReturn(('WAITING', '')) eventlet.sleep(1).AndReturn(None) wc.WaitCondition._get_status_reason( mox.IgnoreArg()).AndReturn(('WAITING', '')) eventlet.sleep(1).AndReturn(None) wc.WaitCondition._get_status_reason( mox.IgnoreArg()).AndReturn(('SUCCESS', 'woot toot')) self.m.ReplayAll() stack.create() resource = stack.resources['WaitForTheHandle'] self.assertEqual(resource.state, 'CREATE_COMPLETE') r = db_api.resource_get_by_name_and_stack(None, 'WaitHandle', stack.id) self.assertEqual(r.name, 'WaitHandle') self.m.VerifyAll()
def test_post_success_to_handle(self): params = {} t = json.loads(test_template_waitcondition) stack = self.create_stack('test_stack', t, params) self.greenpool.spawn_n(stack.create) eventlet.sleep(1) self.assertEqual(stack.resources['WaitForTheHandle'].state, 'IN_PROGRESS') r = db_api.resource_get_by_name_and_stack(None, 'WaitHandle', stack.id) self.assertEqual(r.name, 'WaitHandle') metadata = {"Status": "SUCCESS", "Reason": "woot toot", "Data": "Application has completed configuration.", "UniqueId": "00000"} r.update_and_save({'rsrc_metadata': metadata}) eventlet.sleep(2) logger.debug('state %s' % stack.resources['WaitForTheHandle'].state) self.assertEqual(stack.resources['WaitForTheHandle'].state, 'CREATE_COMPLETE') self.greenpool.waitall()
def test_post_success_to_handle(self): self.stack = self.create_stack() wc.WaitCondition._create_timeout().AndReturn(eventlet.Timeout(5)) wc.WaitConditionHandle.get_status().AndReturn([]) eventlet.sleep(1).AndReturn(None) wc.WaitConditionHandle.get_status().AndReturn([]) eventlet.sleep(1).AndReturn(None) wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS']) self.m.ReplayAll() self.stack.create() resource = self.stack.resources['WaitForTheHandle'] self.assertEqual(resource.state, 'CREATE_COMPLETE') r = db_api.resource_get_by_name_and_stack(None, 'WaitHandle', self.stack.id) self.assertEqual(r.name, 'WaitHandle')
def test_post_failure_to_handle_count(self): self.stack = self.create_stack(template=test_template_wc_count) wc.WaitCondition._create_timeout().AndReturn(eventlet.Timeout(5)) wc.WaitConditionHandle.get_status().AndReturn([]) eventlet.sleep(1).AndReturn(None) wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS']) eventlet.sleep(1).AndReturn(None) wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS', 'FAILURE']) self.m.ReplayAll() self.stack.create() resource = self.stack.resources['WaitForTheHandle'] self.assertEqual(resource.state, 'CREATE_FAILED') r = db_api.resource_get_by_name_and_stack(None, 'WaitHandle', self.stack.id) self.assertEqual(r.name, 'WaitHandle') self.m.VerifyAll()
def test_post_success_to_handle(self): self.stack = self.create_stack() wc.WaitCondition._create_timeout().AndReturn(eventlet.Timeout(5)) wc.WaitConditionHandle.get_status().AndReturn([]) eventlet.sleep(1).AndReturn(None) wc.WaitConditionHandle.get_status().AndReturn([]) eventlet.sleep(1).AndReturn(None) wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS']) self.m.ReplayAll() self.stack.create() resource = self.stack.resources['WaitForTheHandle'] self.assertEqual(resource.state, 'CREATE_COMPLETE') r = db_api.resource_get_by_name_and_stack(None, 'WaitHandle', self.stack.id) self.assertEqual(r.name, 'WaitHandle') self.m.VerifyAll()
def test_post_failure_to_handle_count(self): self.stack = self.create_stack(template=test_template_wc_count) wc.WaitCondition._create_timeout().AndReturn(eventlet.Timeout(5)) wc.WaitConditionHandle.get_status().AndReturn([]) eventlet.sleep(1).AndReturn(None) wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS']) eventlet.sleep(1).AndReturn(None) wc.WaitConditionHandle.get_status().AndReturn(['SUCCESS', 'FAILURE']) self.m.ReplayAll() self.stack.create() resource = self.stack.resources['WaitForTheHandle'] self.assertEqual(resource.state, 'CREATE_FAILED') r = db_api.resource_get_by_name_and_stack(None, 'WaitHandle', self.stack.id) self.assertEqual(r.name, 'WaitHandle')
def test_post_success_to_handle(self): t = template_format.parse(test_template_waitcondition) stack = self.create_stack('test_stack', t, {}) wc.WaitCondition._create_timeout().AndReturn(eventlet.Timeout(5)) wc.WaitCondition._get_status_reason( mox.IgnoreArg()).AndReturn(('WAITING', '')) eventlet.sleep(1).AndReturn(None) wc.WaitCondition._get_status_reason( mox.IgnoreArg()).AndReturn(('WAITING', '')) eventlet.sleep(1).AndReturn(None) wc.WaitCondition._get_status_reason( mox.IgnoreArg()).AndReturn(('SUCCESS', 'woot toot')) self.m.StubOutWithMock(wc.WaitConditionHandle, 'keystone') wc.WaitConditionHandle.keystone().MultipleTimes().AndReturn(self.fc) id = identifier.ResourceIdentifier('test_tenant', stack.name, stack.id, '', 'WaitHandle') self.m.StubOutWithMock(wc.WaitConditionHandle, 'identifier') wc.WaitConditionHandle.identifier().MultipleTimes().AndReturn(id) self.m.ReplayAll() stack.create() resource = stack.resources['WaitForTheHandle'] self.assertEqual(resource.state, 'CREATE_COMPLETE') r = db_api.resource_get_by_name_and_stack(None, 'WaitHandle', stack.id) self.assertEqual(r.name, 'WaitHandle') self.m.VerifyAll()