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')
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')
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')
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')
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')
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')
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')
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')
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')
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')
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')
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')
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')
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')
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)
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)
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)
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')
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)
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)
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')
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)
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)
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)
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)