Esempio n. 1
0
    def test_create_fail_prop_typo(self):
        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Food': 'abc'}}
        rname = 'test_resource'
        res = generic_rsrc.ResourceWithProps(rname, tmpl, self.stack)

        estr = 'Property error : test_resource: Property Foo not assigned'
        create = scheduler.TaskRunner(res.create)
        self.assertRaises(exception.ResourceFailure, create)
        self.assertEqual((res.CREATE, res.FAILED), res.state)
Esempio n. 2
0
    def test_create_fail_metadata_parse_error(self):
        tmpl = {'Type': 'GenericResourceType', 'Properties': {},
                'Metadata': {"Fn::GetAtt": ["ResourceA", "abc"]}}
        rname = 'test_resource'
        res = generic_rsrc.ResourceWithProps(rname, tmpl, self.stack)

        create = scheduler.TaskRunner(res.create)
        self.assertRaises(exception.ResourceFailure, create)
        self.assertEqual((res.CREATE, res.FAILED), res.state)
Esempio n. 3
0
 def test_suspend_resume_ok(self):
     tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
     res = generic_rsrc.ResourceWithProps('test_resource', tmpl, self.stack)
     res.update_allowed_keys = ('Properties', )
     res.update_allowed_properties = ('Foo', )
     scheduler.TaskRunner(res.create)()
     self.assertEqual((res.CREATE, res.COMPLETE), res.state)
     scheduler.TaskRunner(res.suspend)()
     self.assertEqual((res.SUSPEND, res.COMPLETE), res.state)
     scheduler.TaskRunner(res.resume)()
     self.assertEqual((res.RESUME, res.COMPLETE), res.state)
Esempio n. 4
0
 def test_create_resource_after_destroy(self):
     tmpl = {'Type': 'GenericResourceType'}
     rname = 'test_res_id_none'
     res = generic_rsrc.ResourceWithProps(rname, tmpl, self.stack)
     res.id = 'test_res_id'
     (res.action, res.status) = (res.INIT, res.DELETE)
     self.assertRaises(exception.ResourceFailure, res.create)
     res.destroy()
     res.state_reset()
     scheduler.TaskRunner(res.create)()
     self.assertEqual((res.CREATE, res.COMPLETE), res.state)
Esempio n. 5
0
    def test_update_fail_prop_typo(self):
        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.ResourceWithProps('test_resource', tmpl, self.stack)
        res.update_allowed_keys = ('Properties', )
        res.update_allowed_properties = ('Foo', )
        scheduler.TaskRunner(res.create)()
        self.assertEqual((res.CREATE, res.COMPLETE), res.state)

        utmpl = {'Type': 'GenericResourceType', 'Properties': {'Food': 'xyz'}}

        self.assertRaises(exception.ResourceFailure, res.update, utmpl)
        self.assertEqual((res.UPDATE, res.FAILED), res.state)
Esempio n. 6
0
    def test_resume_fail_not_suspend_complete(self):
        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.ResourceWithProps('test_resource', tmpl, self.stack)
        scheduler.TaskRunner(res.create)()
        self.assertEqual((res.CREATE, res.COMPLETE), res.state)

        non_suspended_states = [s for s in
                                itertools.product(res.ACTIONS, res.STATUSES)
                                if s != (res.SUSPEND, res.COMPLETE)]
        for state in non_suspended_states:
            res.state_set(*state)
            resume = scheduler.TaskRunner(res.resume)
            self.assertRaises(exception.ResourceFailure, resume)
Esempio n. 7
0
    def test_suspend_fail_exception(self):
        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.ResourceWithProps('test_resource', tmpl, self.stack)
        scheduler.TaskRunner(res.create)()
        self.assertEqual((res.CREATE, res.COMPLETE), res.state)

        self.m.StubOutWithMock(generic_rsrc.ResourceWithProps,
                               'handle_suspend')
        generic_rsrc.ResourceWithProps.handle_suspend().AndRaise(Exception())
        self.m.ReplayAll()

        suspend = scheduler.TaskRunner(res.suspend)
        self.assertRaises(exception.ResourceFailure, suspend)
        self.assertEqual((res.SUSPEND, res.FAILED), res.state)
Esempio n. 8
0
    def test_suspend_fail_inprogress(self):
        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.ResourceWithProps('test_resource', tmpl, self.stack)
        scheduler.TaskRunner(res.create)()
        self.assertEqual((res.CREATE, res.COMPLETE), res.state)

        res.state_set(res.CREATE, res.IN_PROGRESS)
        suspend = scheduler.TaskRunner(res.suspend)
        self.assertRaises(exception.ResourceFailure, suspend)

        res.state_set(res.UPDATE, res.IN_PROGRESS)
        suspend = scheduler.TaskRunner(res.suspend)
        self.assertRaises(exception.ResourceFailure, suspend)

        res.state_set(res.DELETE, res.IN_PROGRESS)
        suspend = scheduler.TaskRunner(res.suspend)
        self.assertRaises(exception.ResourceFailure, suspend)
Esempio n. 9
0
    def test_update_not_implemented(self):
        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.ResourceWithProps('test_resource', tmpl, self.stack)
        res.update_allowed_keys = ('Properties', )
        res.update_allowed_properties = ('Foo', )
        scheduler.TaskRunner(res.create)()
        self.assertEqual((res.CREATE, res.COMPLETE), res.state)

        utmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'xyz'}}
        tmpl_diff = {'Properties': {'Foo': 'xyz'}}
        prop_diff = {'Foo': 'xyz'}
        self.m.StubOutWithMock(generic_rsrc.ResourceWithProps, 'handle_update')
        generic_rsrc.ResourceWithProps.handle_update(
            utmpl, tmpl_diff, prop_diff).AndRaise(NotImplemented)
        self.m.ReplayAll()
        self.assertRaises(exception.ResourceFailure, res.update, utmpl)
        self.assertEqual((res.UPDATE, res.FAILED), res.state)
        self.m.VerifyAll()
Esempio n. 10
0
    def test_update_replace(self):
        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.ResourceWithProps('test_resource', tmpl, self.stack)
        res.update_allowed_keys = ('Properties', )
        res.update_allowed_properties = ('Foo', )
        scheduler.TaskRunner(res.create)()
        self.assertEqual((res.CREATE, res.COMPLETE), res.state)

        utmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'xyz'}}
        self.m.StubOutWithMock(generic_rsrc.ResourceWithProps, 'handle_update')
        tmpl_diff = {'Properties': {'Foo': 'xyz'}}
        prop_diff = {'Foo': 'xyz'}
        generic_rsrc.ResourceWithProps.handle_update(
            utmpl, tmpl_diff, prop_diff).AndRaise(resource.UpdateReplace())
        self.m.ReplayAll()
        # should be re-raised so parser.Stack can handle replacement
        self.assertRaises(resource.UpdateReplace, res.update, utmpl)
        self.m.VerifyAll()
Esempio n. 11
0
    def test_update_ok(self):
        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.ResourceWithProps('test_resource', tmpl, self.stack)
        res.update_allowed_keys = ('Properties', )
        res.update_allowed_properties = ('Foo', )
        scheduler.TaskRunner(res.create)()
        self.assertEqual((res.CREATE, res.COMPLETE), res.state)

        utmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'xyz'}}
        tmpl_diff = {'Properties': {'Foo': 'xyz'}}
        prop_diff = {'Foo': 'xyz'}
        self.m.StubOutWithMock(generic_rsrc.ResourceWithProps, 'handle_update')
        generic_rsrc.ResourceWithProps.handle_update(utmpl, tmpl_diff,
                                                     prop_diff).AndReturn(None)
        self.m.ReplayAll()

        self.assertEqual(None, res.update(utmpl))
        self.assertEqual((res.UPDATE, res.COMPLETE), res.state)
        self.m.VerifyAll()
Esempio n. 12
0
 def test_resource(self):
     tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
     res = generic_rsrc.ResourceWithProps('test_resource', tmpl, self.stack)
     scheduler.TaskRunner(res.create)()
     self.assertEqual((res.CREATE, res.COMPLETE), res.state)