Exemplo n.º 1
0
    def test_equals_names(self):
        tmpl1 = {'Type': 'Foo'}
        tmpl2 = {'Type': 'Foo'}
        res1 = generic_rsrc.GenericResource('test_resource1', tmpl1,
                                            self.stack)
        res2 = generic_rsrc.GenericResource('test_resource2', tmpl2,
                                            self.stack)

        self.assertNotEqual(res1, res2)
Exemplo n.º 2
0
    def test_equals_different_stacks(self):
        tmpl1 = {'Type': 'Foo'}
        tmpl2 = {'Type': 'Foo'}
        tmpl3 = {'Type': 'Bar'}
        stack2 = parser.Stack(utils.dummy_context(), 'test_stack',
                              parser.Template({}), stack_id=-1)
        res1 = generic_rsrc.GenericResource('test_resource', tmpl1, self.stack)
        res2 = generic_rsrc.GenericResource('test_resource', tmpl2, stack2)
        res3 = generic_rsrc.GenericResource('test_resource2', tmpl3, stack2)

        self.assertEqual(res1, res2)
        self.assertNotEqual(res1, res3)
Exemplo n.º 3
0
 def test_update_template_diff_changed_remove(self):
     tmpl = {'Type': 'Foo', 'Metadata': {'foo': 123}}
     update_snippet = {'Type': 'Foo'}
     res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
     res.update_allowed_keys = ('Metadata', )
     diff = res.update_template_diff(json_snippet=update_snippet)
     self.assertEqual(diff, {'Metadata': None})
Exemplo n.º 4
0
 def test_state_del_stack(self):
     tmpl = {'Type': 'Foo'}
     self.stack.action = self.stack.DELETE
     self.stack.status = self.stack.IN_PROGRESS
     res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
     self.assertEqual(res.DELETE, res.action)
     self.assertEqual(res.COMPLETE, res.status)
Exemplo n.º 5
0
 def test_update_template_diff_properties_changed(self):
     tmpl = {'Type': 'Foo', 'Properties': {'Bar': 123}}
     update_snippet = {'Type': 'Foo', 'Properties': {'Bar': 456}}
     res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
     res.update_allowed_properties = ('Bar', )
     diff = res.update_template_diff_properties(json_snippet=update_snippet)
     self.assertEqual(diff, {'Bar': 456})
Exemplo n.º 6
0
 def test_update_template_diff_changed_modified(self):
     tmpl = {'Type': 'Foo', 'Metadata': {'foo': 123}}
     update_snippet = {'Type': 'Foo', 'Metadata': {'foo': 456}}
     res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
     res.update_allowed_keys = ('Metadata', )
     diff = res.update_template_diff(update_snippet, tmpl)
     self.assertEqual(diff, {'Metadata': {'foo': 456}})
Exemplo n.º 7
0
 def test_update_template_diff_properties_notallowed(self):
     tmpl = {'Type': 'Foo', 'Properties': {'Bar': 123}}
     update_snippet = {'Type': 'Foo', 'Properties': {'Bar': 456}}
     res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
     res.update_allowed_properties = ('Cat', )
     self.assertRaises(NotImplementedError,
                       res.update_template_diff_properties, update_snippet)
Exemplo n.º 8
0
 def test_badprop(self):
     tmpl = {'Type': 'GenericResourceType', 'Properties': {'foo': 'abc'}}
     rname = 'bad_resource'
     res = generic_rsrc.GenericResource(rname, tmpl, self.stack)
     e = event.Event(self.ctx, self.stack, res, 'TEST_IN_PROGRESS',
                     'Testing', 'wibble', res.properties)
     self.assertTrue('Error' in e.resource_properties)
Exemplo n.º 9
0
 def test_state_set(self):
     tmpl = {'Type': 'Foo'}
     res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
     res.state_set(res.CREATE, res.COMPLETE, 'wibble')
     self.assertEqual(res.action, res.CREATE)
     self.assertEqual(res.status, res.COMPLETE)
     self.assertEqual(res.state, (res.CREATE, res.COMPLETE))
     self.assertEqual(res.status_reason, 'wibble')
Exemplo n.º 10
0
 def test_updated_time(self):
     tmpl = {'Type': 'Foo'}
     res = generic_rsrc.GenericResource('test_res_upd', tmpl, self.stack)
     res._store()
     stored_time = res.updated_time
     res.state_set(res.CREATE_IN_PROGRESS, 'testing')
     self.assertNotEqual(res.updated_time, None)
     self.assertNotEqual(res.updated_time, stored_time)
Exemplo n.º 11
0
    def test_resource(self):
        # patch in a dummy property schema for GenericResource
        dummy_schema = {'Foo': {'Type': 'String'}}
        generic_rsrc.GenericResource.properties_schema = dummy_schema

        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
        scheduler.TaskRunner(res.create)()
        self.assertEqual(res.CREATE_COMPLETE, res.state)
Exemplo n.º 12
0
 def setUp(self):
     self.m = mox.Mox()
     tmpl = {'Type': 'Foo', 'Metadata': {'Test': 'Initial metadata'}}
     ctx = context.get_admin_context()
     self.m.StubOutWithMock(ctx, 'username')
     ctx.username = '******'
     self.stack = parser.Stack(ctx, 'test_stack', parser.Template({}))
     self.stack.store()
     self.res = generic_rsrc.GenericResource('metadata_resource', tmpl,
                                             self.stack)
     self.res.create()
Exemplo n.º 13
0
 def setUp(self):
     super(MetadataTest, self).setUp()
     tmpl = {'Type': 'Foo', 'Metadata': {'Test': 'Initial metadata'}}
     utils.setup_dummy_db()
     self.stack = parser.Stack(utils.dummy_context(), 'test_stack',
                               parser.Template({}))
     self.stack.store()
     self.res = generic_rsrc.GenericResource('metadata_resource', tmpl,
                                             self.stack)
     scheduler.TaskRunner(self.res.create)()
     self.addCleanup(self.stack.delete)
Exemplo n.º 14
0
    def test_create_fail_prop_typo(self):
        # patch in a dummy property schema for GenericResource
        dummy_schema = {'Foo': {'Type': 'String', 'Required': True}}
        generic_rsrc.GenericResource.properties_schema = dummy_schema

        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Food': 'abc'}}
        rname = 'test_resource'
        res = generic_rsrc.GenericResource(rname, tmpl, self.stack)

        estr = 'Property error : test_resource: Property Foo not assigned'
        self.assertEqual(estr, res.create())
        self.assertEqual(res.CREATE_FAILED, res.state)
Exemplo n.º 15
0
 def setUp(self):
     super(MetadataTest, self).setUp()
     tmpl = {'Type': 'Foo', 'Metadata': {'Test': 'Initial metadata'}}
     setup_dummy_db()
     ctx = context.get_admin_context()
     self.m.StubOutWithMock(ctx, 'username')
     ctx.username = '******'
     self.stack = parser.Stack(ctx, 'test_stack', parser.Template({}))
     self.stack.store()
     self.res = generic_rsrc.GenericResource('metadata_resource', tmpl,
                                             self.stack)
     scheduler.TaskRunner(self.res.create)()
Exemplo n.º 16
0
    def test_create_fail_missing_req_prop(self):
        # patch in a dummy property schema for GenericResource
        dummy_schema = {'Foo': {'Type': 'String', 'Required': True}}
        generic_rsrc.GenericResource.properties_schema = dummy_schema

        tmpl = {'Type': 'GenericResourceType', 'Properties': {}}
        rname = 'test_resource'
        res = generic_rsrc.GenericResource(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_FAILED, res.state)
Exemplo n.º 17
0
    def test_parsed_template(self):
        tmpl = {
            'Type': 'Foo',
            'foo': {'Fn::Join': [' ', ['bar', 'baz', 'quux']]}
        }
        res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)

        parsed_tmpl = res.parsed_template()
        self.assertEqual(parsed_tmpl['Type'], 'Foo')
        self.assertEqual(parsed_tmpl['foo'], 'bar baz quux')

        self.assertEqual(res.parsed_template('foo'), 'bar baz quux')
        self.assertEqual(res.parsed_template('foo', 'bar'), 'bar baz quux')
Exemplo n.º 18
0
    def test_update_fail_prop_typo(self):
        # patch in a dummy property schema for GenericResource
        dummy_schema = {'Foo': {'Type': 'String'}}
        generic_rsrc.GenericResource.properties_schema = dummy_schema

        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
        scheduler.TaskRunner(res.create)()
        self.assertEqual(res.CREATE_COMPLETE, res.state)

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

        self.assertEqual('Unknown Property Food', res.update(utmpl))
        self.assertEqual(res.UPDATE_FAILED, res.state)
Exemplo n.º 19
0
    def test_update_fail_missing_req_prop(self):
        # patch in a dummy property schema for GenericResource
        dummy_schema = {'Foo': {'Type': 'String', 'Required': True}}
        generic_rsrc.GenericResource.properties_schema = dummy_schema

        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
        scheduler.TaskRunner(res.create)()
        self.assertEqual(res.CREATE_COMPLETE, res.state)

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

        estr = 'Property error : test_resource: Property Foo not assigned'
        self.assertEqual(estr, res.update(utmpl))
        self.assertEqual(res.UPDATE_FAILED, res.state)
Exemplo n.º 20
0
    def test_update_fail_prop_typo(self):
        # patch in a dummy property schema for GenericResource
        dummy_schema = {'Foo': {'Type': 'String'}}
        generic_rsrc.GenericResource.properties_schema = dummy_schema

        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
        res.update_allowed_keys = ('Properties', )
        res.update_allowed_properties = ('Foo', )
        scheduler.TaskRunner(res.create)()
        self.assertEqual(res.CREATE_COMPLETE, res.state)

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

        self.assertRaises(exception.ResourceFailure, res.update, utmpl)
        self.assertEqual(res.UPDATE_FAILED, res.state)
Exemplo n.º 21
0
    def test_update_ok(self):
        # patch in a dummy property schema for GenericResource
        dummy_schema = {'Foo': {'Type': 'String'}}
        generic_rsrc.GenericResource.properties_schema = dummy_schema

        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
        scheduler.TaskRunner(res.create)()
        self.assertEqual(res.CREATE_COMPLETE, res.state)

        utmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'xyz'}}
        self.m.StubOutWithMock(generic_rsrc.GenericResource, 'handle_update')
        generic_rsrc.GenericResource.handle_update(utmpl).AndReturn(
            resource.Resource.UPDATE_COMPLETE)
        self.m.ReplayAll()

        self.assertEqual(res.UPDATE_COMPLETE, res.update(utmpl))
        self.assertEqual(res.UPDATE_COMPLETE, res.state)
        self.m.VerifyAll()
Exemplo n.º 22
0
    def test_store_or_update(self):
        tmpl = {'Type': 'Foo'}
        res = generic_rsrc.GenericResource('test_res_upd', tmpl, self.stack)
        res._store_or_update(res.CREATE, res.IN_PROGRESS, 'test_store')
        self.assertNotEqual(None, res.id)
        self.assertEqual(res.action, res.CREATE)
        self.assertEqual(res.status, res.IN_PROGRESS)
        self.assertEqual(res.status_reason, 'test_store')

        db_res = r = db_api.resource_get(None, res.id)
        self.assertEqual(db_res.action, res.CREATE)
        self.assertEqual(db_res.status, res.IN_PROGRESS)
        self.assertEqual(db_res.status_reason, 'test_store')

        res._store_or_update(res.CREATE, res.COMPLETE, 'test_update')
        self.assertEqual(res.action, res.CREATE)
        self.assertEqual(res.status, res.COMPLETE)
        self.assertEqual(res.status_reason, 'test_update')
        self.assertEqual(db_res.action, res.CREATE)
        self.assertEqual(db_res.status, res.COMPLETE)
        self.assertEqual(db_res.status_reason, 'test_update')
Exemplo n.º 23
0
    def test_update_not_implemented(self):
        # patch in a dummy property schema for GenericResource
        dummy_schema = {'Foo': {'Type': 'String'}}
        generic_rsrc.GenericResource.properties_schema = dummy_schema

        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
        res.update_allowed_keys = ('Properties', )
        res.update_allowed_properties = ('Foo', )
        scheduler.TaskRunner(res.create)()
        self.assertEqual(res.CREATE_COMPLETE, res.state)

        utmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'xyz'}}
        tmpl_diff = {'Properties': {'Foo': 'xyz'}}
        prop_diff = {'Foo': 'xyz'}
        self.m.StubOutWithMock(generic_rsrc.GenericResource, 'handle_update')
        generic_rsrc.GenericResource.handle_update(
            utmpl, tmpl_diff, prop_diff).AndRaise(NotImplemented)
        self.m.ReplayAll()
        self.assertRaises(exception.ResourceFailure, res.update, utmpl)
        self.assertEqual(res.UPDATE_FAILED, res.state)
        self.m.VerifyAll()
Exemplo n.º 24
0
    def test_update_replace(self):
        # patch in a dummy property schema for GenericResource
        dummy_schema = {'Foo': {'Type': 'String'}}
        generic_rsrc.GenericResource.properties_schema = dummy_schema

        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
        res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
        res.update_allowed_keys = ('Properties', )
        res.update_allowed_properties = ('Foo', )
        scheduler.TaskRunner(res.create)()
        self.assertEqual(res.CREATE_COMPLETE, res.state)

        utmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'xyz'}}
        self.m.StubOutWithMock(generic_rsrc.GenericResource, 'handle_update')
        tmpl_diff = {'Properties': {'Foo': 'xyz'}}
        prop_diff = {'Foo': 'xyz'}
        generic_rsrc.GenericResource.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()
Exemplo n.º 25
0
 def test_update_template_diff_properties_none(self):
     tmpl = {'Type': 'Foo'}
     update_snippet = {'Type': 'Foo'}
     res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
     diff = res.update_template_diff_properties(json_snippet=update_snippet)
     self.assertEqual(diff, {})
Exemplo n.º 26
0
 def test_created_time(self):
     tmpl = {'Type': 'Foo'}
     res = generic_rsrc.GenericResource('test_res_new', tmpl, self.stack)
     self.assertEqual(res.created_time, None)
     res._store()
     self.assertNotEqual(res.created_time, None)
Exemplo n.º 27
0
 def test_type(self):
     tmpl = {'Type': 'Foo'}
     res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
     self.assertEqual(res.type(), 'Foo')
Exemplo n.º 28
0
 def test_state_description(self):
     tmpl = {'Type': 'Foo'}
     res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
     res.state_set('blarg', 'wibble')
     self.assertEqual(res.state_description, 'wibble')
Exemplo n.º 29
0
 def test_state(self):
     tmpl = {'Type': 'Foo'}
     res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
     res.state_set('bar')
     self.assertEqual(res.state, 'bar')
Exemplo n.º 30
0
 def test_state_defaults(self):
     tmpl = {'Type': 'Foo'}
     res = generic_rsrc.GenericResource('test_res_def', tmpl, self.stack)
     self.assertEqual(res.state, None)
     self.assertEqual(res.state_description, '')