def create_association(self, t, stack, resource_name): rsrc = eip.ElasticIpAssociation(resource_name, t['Resources'][resource_name], stack) self.assertIsNone(rsrc.validate()) scheduler.TaskRunner(rsrc.create)() self.assertEqual((rsrc.CREATE, rsrc.COMPLETE), rsrc.state) return rsrc
def _validate_properties(self, stack, template, expected): resource_defns = template.resource_definitions(stack) rsrc = eip.ElasticIpAssociation('validate_eip_ass', resource_defns['IPAssoc'], stack) exc = self.assertRaises(exception.StackValidationFailed, rsrc.validate) self.assertIn(expected, six.text_type(exc))
def test_delete_association_successful_if_create_failed(self): nova.NovaClientPlugin._create().AndReturn(self.fc) server = self.fc.servers.list()[0] self.fc.servers.get('WebServer').MultipleTimes() \ .AndReturn(server) self.m.StubOutWithMock(self.fc.servers, 'add_floating_ip') self.fc.servers.add_floating_ip(server, '11.0.0.1').AndRaise( fakes.fake_exception(400)) self.m.ReplayAll() t = template_format.parse(eip_template_ipassoc) stack = utils.parse_stack(t) self.create_eip(t, stack, 'IPAddress') resource_defns = stack.t.resource_definitions(stack) rsrc = eip.ElasticIpAssociation('IPAssoc', resource_defns['IPAssoc'], stack) self.assertIsNone(rsrc.validate()) self.assertRaises(exception.ResourceFailure, scheduler.TaskRunner(rsrc.create)) self.assertEqual((rsrc.CREATE, rsrc.FAILED), rsrc.state) scheduler.TaskRunner(rsrc.delete)() self.assertEqual((rsrc.DELETE, rsrc.COMPLETE), rsrc.state) self.m.VerifyAll()
def create_association(self, t, stack, resource_name): resource = eip.ElasticIpAssociation(resource_name, t['Resources'][resource_name], stack) self.assertEqual(None, resource.validate()) scheduler.TaskRunner(resource.create)() self.assertEqual(eip.ElasticIpAssociation.CREATE_COMPLETE, resource.state) return resource
def test_validate_without_NetworkInterfaceId_and_InstanceId(self): template, stack = self._setup_test_stack( stack_name='validate_EIP_InstanceId') properties = template.t['Resources']['IPAssoc']['Properties'] # test without NetworkInterfaceId and InstanceId properties.pop('InstanceId') properties.pop('EIP') allocation_id = '1fafbe59-2332-4f5f-bfa4-517b4d6c1b65' properties['AllocationId'] = allocation_id resource_defns = template.resource_definitions(stack) rsrc = eip.ElasticIpAssociation('validate_eip_ass', resource_defns['IPAssoc'], stack) exc = self.assertRaises(exception.PropertyUnspecifiedError, rsrc.validate) self.assertIn( 'At least one of the following properties ' 'must be specified: InstanceId, NetworkInterfaceId', six.text_type(exc))