コード例 #1
0
    def test_create_fw_rule_sets(self):
        params = {
            u'project': u'PID',
            u'name': u'name',
            u'image': u'image',
            u'instance-type': u'flavor',
            u'fw-rule-sets': [u'3', u'8']
        }
        sgs = [
            doubles.make(self.mox, doubles.SecurityGroup, id=u'3', name='sg3'),
            doubles.make(self.mox, doubles.SecurityGroup, id=u'8', name='sg8')
        ]
        instances.client_set_for_tenant(u'PID').AndReturn(self.tcs)
        self.tcs.compute.security_groups.get(u'3').AndReturn(sgs[0])
        self.tcs.compute.security_groups.get(u'8').AndReturn(sgs[1])
        self.tcs.compute.servers.create(
            name=u'name',
            image=u'image',
            flavor=u'flavor',
            security_groups=['sg3', 'sg8'],
            key_name=None,
            admin_pass=None
        ).AndReturn('VM1')
        instances._instance_to_view('VM1').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #2
0
    def test_create_expires(self):
        server = doubles.make(self.mox,
                              doubles.Server,
                              id=u'VMID',
                              name=u'name')
        params = {
            u'project': u'PID',
            u'name': u'name',
            u'image': u'image',
            u'instance-type': u'flavor',
            u'expires-at': u'2013-01-17T15:36:00Z'
        }
        instances.client_set_for_tenant(u'PID').AndReturn(self.tcs)
        self.tcs.compute.servers.create(name=u'name',
                                        image=u'image',
                                        flavor=u'flavor',
                                        security_groups=None,
                                        key_name=None,
                                        admin_pass=None).AndReturn(server)
        instances.InstanceDataDAO.create(u'VMID',
                                         expires_at=datetime(
                                             2013, 1, 17, 15, 36, 0),
                                         remind_at=None)
        instances._instance_to_view(server).AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #3
0
    def test_create_fw_rule_sets(self):
        params = {
            u'project': u'PID',
            u'name': u'name',
            u'image': u'image',
            u'instance-type': u'flavor',
            u'fw-rule-sets': [u'3', u'8']
        }
        sgs = [
            doubles.make(self.mox, doubles.SecurityGroup, id=u'3', name='sg3'),
            doubles.make(self.mox, doubles.SecurityGroup, id=u'8', name='sg8')
        ]
        instances.client_set_for_tenant(u'PID').AndReturn(self.tcs)
        self.tcs.compute.security_groups.get(u'3').AndReturn(sgs[0])
        self.tcs.compute.security_groups.get(u'8').AndReturn(sgs[1])
        self.tcs.compute.servers.create(name=u'name',
                                        image=u'image',
                                        flavor=u'flavor',
                                        security_groups=['sg3', 'sg8'],
                                        key_name=None,
                                        admin_pass=None).AndReturn('VM1')
        instances._instance_to_view('VM1').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #4
0
    def test_create_expires(self):
        server = doubles.make(self.mox, doubles.Server,
                              id=u'VMID', name=u'name')
        params = {
            u'project': u'PID',
            u'name': u'name',
            u'image': u'image',
            u'instance-type': u'flavor',
            u'expires-at': u'2013-01-17T15:36:00Z'
        }
        instances.client_set_for_tenant(u'PID').AndReturn(self.tcs)
        self.tcs.compute.servers.create(
            name=u'name',
            image=u'image',
            flavor=u'flavor',
            security_groups=None,
            key_name=None,
            admin_pass=None
        ).AndReturn(server)
        instances.InstanceDataDAO.create(u'VMID',
                             expires_at=datetime(2013, 1, 17, 15, 36, 0),
                             remind_at=None)
        instances._instance_to_view(server).AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #5
0
    def test_get_instance_works(self):
        instances.fetch_instance(u'VMID').AndReturn('VM1')
        instances._instance_to_view('VM1').AndReturn('REPLY')

        self.mox.ReplayAll()
        rv = self.client.get('/v1/instances/VMID')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, 'REPLY')
コード例 #6
0
    def test_get_instance_works(self):
        instances.fetch_instance(u'VMID').AndReturn('VM1')
        instances._instance_to_view('VM1').AndReturn('REPLY')

        self.mox.ReplayAll()
        rv = self.client.get('/v1/instances/VMID')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, 'REPLY')
コード例 #7
0
    def test_update_empty(self):
        params = {}

        instances.fetch_instance(self.instance_id).AndReturn('VM')
        instances._instance_to_view('VM').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #8
0
    def test_update_empty(self):
        params = {}

        instances.fetch_instance(self.instance_id).AndReturn('VM')
        instances._instance_to_view('VM').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #9
0
    def test_reset_works(self):
        s = self.server
        instances.fetch_instance(s.id).AndReturn(s)
        s.reboot(REBOOT_HARD)
        instances.fetch_instance(s.id).AndReturn('VM1')
        instances._instance_to_view('VM1').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact('/v1/instances/%s/reset' % s.id, {})
        self.assertEquals(data, 'REPLY')
コード例 #10
0
    def test_reset_works(self):
        s = self.server
        instances.fetch_instance(s.id).AndReturn(s)
        s.reboot(REBOOT_HARD)
        instances.fetch_instance(s.id).AndReturn('VM1')
        instances._instance_to_view('VM1').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact('/v1/instances/%s/reset' % s.id, {})
        self.assertEquals(data, 'REPLY')
コード例 #11
0
    def test_rename_works(self):
        params = { 'name': u'new name' }

        instances.fetch_instance(self.instance_id).AndReturn(self.server)
        self.server.update(name=u'new name')
        instances.fetch_instance(self.instance_id).AndReturn('VM')
        instances._instance_to_view('VM').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #12
0
    def test_rename_works(self):
        params = {'name': u'new name'}

        instances.fetch_instance(self.instance_id).AndReturn(self.server)
        self.server.update(name=u'new name')
        instances.fetch_instance(self.instance_id).AndReturn('VM')
        instances._instance_to_view('VM').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #13
0
    def test_remove_instance_works(self):
        s = self.server
        instances.fetch_instance(s.id).AndReturn(s)
        s.delete()
        instances.InstanceDataDAO.delete(s.id)
        instances.fetch_instance(s.id).AndReturn('VM1')
        instances._instance_to_view('VM1').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact('/v1/instances/%s/remove' % s.id, {})
        self.assertEquals(data, 'REPLY')
コード例 #14
0
    def test_remove_instance_works(self):
        s = self.server
        instances.fetch_instance(s.id).AndReturn(s)
        s.delete()
        instances.InstanceDataDAO.delete(s.id)
        instances.fetch_instance(s.id).AndReturn('VM1')
        instances._instance_to_view('VM1').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact('/v1/instances/%s/remove' % s.id, {})
        self.assertEquals(data, 'REPLY')
コード例 #15
0
    def test_update_remind(self):
        params = {'remind-at': u'2013-02-17T15:36:00Z'}
        server = doubles.make(self.mox, doubles.Server, id='VMID')

        instances.fetch_instance(self.instance_id).AndReturn(server)
        instances.InstanceDataDAO.update('VMID',
                                         remind_at=datetime(
                                             2013, 2, 17, 15, 36, 0))
        instances._instance_to_view(server).AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #16
0
    def test_update_never_expires_and_remind(self):
        params = {'expires-at': None, 'remind-at': None}
        server = doubles.make(self.mox, doubles.Server, id='VMID')

        instances.fetch_instance(self.instance_id).AndReturn(server)
        instances.InstanceDataDAO.update('VMID',
                                         expires_at=None,
                                         remind_at=None)
        instances._instance_to_view(server).AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #17
0
    def test_update_remind(self):
        params = {
            'remind-at': u'2013-02-17T15:36:00Z'
        }
        server = doubles.make(self.mox, doubles.Server, id='VMID')

        instances.fetch_instance(self.instance_id).AndReturn(server)
        instances.InstanceDataDAO.update('VMID',
                             remind_at=datetime(2013, 2, 17, 15, 36, 0))
        instances._instance_to_view(server).AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #18
0
    def test_update_never_expires_and_remind(self):
        params = {
            'expires-at': None,
            'remind-at': None
        }
        server = doubles.make(self.mox, doubles.Server, id='VMID')

        instances.fetch_instance(self.instance_id).AndReturn(server)
        instances.InstanceDataDAO.update('VMID', expires_at=None,
                                         remind_at=None)
        instances._instance_to_view(server).AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #19
0
    def test_list_instances_my_projects(self):
        instances._servers_for_user() \
                .AndReturn([u'VM1', u'VM2'])
        instances._instance_to_view(u'VM1').AndReturn(u'R1')
        instances._instance_to_view(u'VM2').AndReturn(u'R2')

        expected = {
            u'collection': {
                u'name': u'instances',
                u'size': 2
            },
            u'instances': [ u'R1', u'R2' ]
        }

        self.mox.ReplayAll()
        rv = self.client.get('/v1/instances/?my-projects=true')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
コード例 #20
0
    def test_list_instances_my_projects(self):
        instances._servers_for_user() \
                .AndReturn([u'VM1', u'VM2'])
        instances._instance_to_view(u'VM1').AndReturn(u'R1')
        instances._instance_to_view(u'VM2').AndReturn(u'R2')

        expected = {
            u'collection': {
                u'name': u'instances',
                u'size': 2
            },
            u'instances': [u'R1', u'R2']
        }

        self.mox.ReplayAll()
        rv = self.client.get('/v1/instances/?my-projects=true')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
コード例 #21
0
    def test_list_instances_works(self):
        self.fake_client_set.compute.servers\
                .list(search_opts={'all_tenants': 1})\
                .AndReturn([u'VM1', u'VM2'])
        instances._instance_to_view(u'VM1').AndReturn(u'R1')
        instances._instance_to_view(u'VM2').AndReturn(u'R2')

        expected = {
            u'collection': {
                u'name': u'instances',
                u'size': 2
            },
            u'instances': [ u'R1', u'R2' ]
        }

        self.mox.ReplayAll()
        rv = self.client.get('/v1/instances/')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
コード例 #22
0
    def test_create(self):
        params = {
            u'project': u'PID',
            u'name': u'name',
            u'image': u'image',
            u'instance-type': u'flavor',
        }
        instances.client_set_for_tenant(u'PID').AndReturn(self.tcs)
        self.tcs.compute.servers.create(name=u'name',
                                        image=u'image',
                                        flavor=u'flavor',
                                        security_groups=None,
                                        key_name=None,
                                        admin_pass=None).AndReturn('VM1')
        instances._instance_to_view('VM1').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #23
0
    def test_list_instances_works(self):
        self.fake_client_set.compute.servers\
                .list(search_opts={'all_tenants': 1})\
                .AndReturn([u'VM1', u'VM2'])
        instances._instance_to_view(u'VM1').AndReturn(u'R1')
        instances._instance_to_view(u'VM2').AndReturn(u'R2')

        expected = {
            u'collection': {
                u'name': u'instances',
                u'size': 2
            },
            u'instances': [u'R1', u'R2']
        }

        self.mox.ReplayAll()
        rv = self.client.get('/v1/instances/')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
コード例 #24
0
    def test_instance_to_view_works(self):
        expected = {
            u'id': u'VMID',
            u'href': '/v1/instances/VMID',
            u'name': u'test instance',
            u'project': {
                u'id': u'TENANT',
                u'name': u'test project',
                u'href': '/v1/projects/TENANT',
            },
            u'state': u'BUILD',
            u'ipv4': [u'10.5.1.3'],
            u'image': {
                u'id': u'IMAGE',
                u'name': u'test image',
                u'href': '/v1/images/IMAGE'
            },
            u'created': datetime(2012, 12, 12, 6, 20, 27),
            u'expires-at': datetime(2012, 12, 11, 10, 9, 8),
            u'remind-at': datetime(2012, 12, 10, 8, 6, 4),
            u'created-by': {
                u'id': u'UID',
                u'name': u'test user',
                u'href': '/v1/users/UID'
            },
            u'instance-type': {
                u'id': u'1',
                u'href': '/v1/instance-types/1',
                u'name': u'test instance type'
            },
            u'links': {
                u'console-output': '/v1/instances/VMID/console-output',
                u'reboot': '/v1/instances/VMID/reboot',
                u'remove': '/v1/instances/VMID/remove',
                u'reset': '/v1/instances/VMID/reset',
                u'vnc': '/v1/instances/VMID/vnc',
                u'fw-rules': '/v1/instances/VMID/fw-rule-sets/',
            },
        }

        # ACTION
        client = self.fake_client_set
        client.identity_admin.tenants.get(u'TENANT').AndReturn(self.tenant)
        client.compute.flavors.get(u'1').AndReturn(self.flavor)
        client.identity_admin.users.get(u'UID').AndReturn(self.user)
        client.image.images.get(u'IMAGE').AndReturn(self.image)
        instances.InstanceDataDAO.get(u'VMID').AndReturn(self.instancedata)

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            result = instances._instance_to_view(self.instance)
        self.assertEquals(result, expected)
コード例 #25
0
    def test_create(self):
        params = {
            u'project': u'PID',
            u'name': u'name',
            u'image': u'image',
            u'instance-type': u'flavor',
        }
        instances.client_set_for_tenant(u'PID').AndReturn(self.tcs)
        self.tcs.compute.servers.create(
            name=u'name',
            image=u'image',
            flavor=u'flavor',
            security_groups=None,
            key_name=None,
            admin_pass=None
        ).AndReturn('VM1')
        instances._instance_to_view('VM1').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
コード例 #26
0
    def test_instance_to_view_works(self):
        expected = {
            u'id': u'VMID',
            u'href': '/v1/instances/VMID',
            u'name': u'test instance',
            u'project': {
                u'id': u'TENANT',
                u'name': u'test project',
                u'href': '/v1/projects/TENANT',
            },
            u'state': u'BUILD',
            u'ipv4': [ u'10.5.1.3' ],
            u'image': {
                u'id': u'IMAGE',
                u'name': u'test image',
                u'href': '/v1/images/IMAGE'
            },
            u'created': datetime(2012, 12, 12, 6, 20, 27),
            u'expires-at': datetime(2012, 12, 11, 10, 9, 8),
            u'remind-at': datetime(2012, 12, 10, 8, 6, 4),
            u'created-by': {
                u'id': u'UID',
                u'name': u'test user',
                u'href': '/v1/users/UID'
            },
            u'instance-type': {
                u'id': u'1',
                u'href': '/v1/instance-types/1',
                u'name': u'test instance type'
            },
            u'links': {
                u'console-output': '/v1/instances/VMID/console-output',
                u'reboot': '/v1/instances/VMID/reboot',
                u'remove': '/v1/instances/VMID/remove',
                u'reset': '/v1/instances/VMID/reset',
                u'vnc': '/v1/instances/VMID/vnc',
                u'fw-rules': '/v1/instances/VMID/fw-rule-sets/',
            },
        }

        # ACTION
        client = self.fake_client_set
        client.identity_admin.tenants.get(u'TENANT').AndReturn(self.tenant)
        client.compute.flavors.get(u'1').AndReturn(self.flavor)
        client.identity_admin.users.get(u'UID').AndReturn(self.user)
        client.image.images.get(u'IMAGE').AndReturn(self.image)
        instances.InstanceDataDAO.get(u'VMID').AndReturn(self.instancedata)

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            result = instances._instance_to_view(self.instance)
        self.assertEquals(result, expected)
コード例 #27
0
    def test_instance_to_view_with_host(self):
        setattr(self.instance, 'OS-EXT-SRV-ATTR:host', 'TEST_HOST')
        expected = {'name': 'TEST_HOST', 'href': '/v1/nodes/TEST_HOST'}

        # ACTION
        client = self.fake_client_set
        client.identity_admin.tenants.get(u'TENANT').AndReturn(self.tenant)
        client.compute.flavors.get(u'1').AndReturn(self.flavor)
        client.identity_admin.users.get(u'UID').AndReturn(self.user)
        client.image.images.get(u'IMAGE').AndReturn(self.image)
        instances.InstanceDataDAO.get(u'VMID').AndReturn(self.instancedata)

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            result = instances._instance_to_view(self.instance)
        self.assertEquals(result.get('node'), expected)
コード例 #28
0
    def test_instance_to_view_no_user(self):
        expected_user = {
            'id': 'UID',
            'href': '/v1/users/%s' % 'UID',
            'name': None
        }
        # ACTION
        client = self.fake_client_set
        client.identity_admin.tenants.get(u'TENANT').AndReturn(self.tenant)
        client.compute.flavors.get(u'1').AndReturn(self.flavor)
        client.identity_admin.users.get(u'UID') \
                .AndRaise(osc_exc.NotFound('gone'))
        client.image.images.get(u'IMAGE').AndReturn(self.image)
        instances.InstanceDataDAO.get(u'VMID').AndReturn(self.instancedata)

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            result = instances._instance_to_view(self.instance)
        self.assertEquals(result['created-by'], expected_user)
コード例 #29
0
    def test_instance_to_view_with_host(self):
        setattr(self.instance, 'OS-EXT-SRV-ATTR:host', 'TEST_HOST')
        expected = {
            'name': 'TEST_HOST',
            'href': '/v1/nodes/TEST_HOST'
        }

        # ACTION
        client = self.fake_client_set
        client.identity_admin.tenants.get(u'TENANT').AndReturn(self.tenant)
        client.compute.flavors.get(u'1').AndReturn(self.flavor)
        client.identity_admin.users.get(u'UID').AndReturn(self.user)
        client.image.images.get(u'IMAGE').AndReturn(self.image)
        instances.InstanceDataDAO.get(u'VMID').AndReturn(self.instancedata)

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            result = instances._instance_to_view(self.instance)
        self.assertEquals(result.get('node'), expected)
コード例 #30
0
    def test_instance_to_view_no_user(self):
        expected_user = {
            'id': 'UID',
            'href': '/v1/users/%s' % 'UID',
            'name': None
        }
        # ACTION
        client = self.fake_client_set
        client.identity_admin.tenants.get(u'TENANT').AndReturn(self.tenant)
        client.compute.flavors.get(u'1').AndReturn(self.flavor)
        client.identity_admin.users.get(u'UID') \
                .AndRaise(osc_exc.NotFound('gone'))
        client.image.images.get(u'IMAGE').AndReturn(self.image)
        instances.InstanceDataDAO.get(u'VMID').AndReturn(self.instancedata)

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            result = instances._instance_to_view(self.instance)
        self.assertEquals(result['created-by'], expected_user)