def test_index_no_images(self): self.mox.StubOutWithMock(api, 'snapshot_list_detailed') api.snapshot_list_detailed(IsA(http.HttpRequest)).\ AndReturn(self.snapshots) self.mox.StubOutWithMock(api, 'flavor_list') api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors) self.mox.StubOutWithMock(api, 'security_group_list') api.security_group_list(IsA(http.HttpRequest)).\ AndReturn(self.security_groups) self.mox.StubOutWithMock(api, 'keypair_list') api.keypair_list(IsA(http.HttpRequest)).AndReturn(self.keypairs) self.mox.StubOutWithMock(api, 'image_list_detailed') api.image_list_detailed(IsA(http.HttpRequest)).AndReturn([]) self.mox.StubOutWithMock(api, 'tenant_quota_get') api.tenant_quota_get(IsA(http.HttpRequest), self.TEST_TENANT) \ .AndReturn({}) self.mox.StubOutWithMock(messages, 'info') messages.info(IsA(http.HttpRequest), IsA(basestring)) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'engine/images_and_snapshots/index.html')
def test_launch_keypairlist_error(self): IMAGE_ID = '2' self.mox.StubOutWithMock(api, 'image_get_meta') api.image_get_meta(IsA(http.HttpRequest), IMAGE_ID).AndReturn(self.visibleImage) self.mox.StubOutWithMock(api, 'tenant_quota_get') api.tenant_quota_get(IsA(http.HttpRequest), self.TEST_TENANT).AndReturn(FakeQuota) self.mox.StubOutWithMock(api, 'flavor_list') api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors) exception = api_exceptions.ApiException('apiException') self.mox.StubOutWithMock(api, 'keypair_list') api.keypair_list(IsA(http.HttpRequest)).AndRaise(exception) self.mox.StubOutWithMock(api, 'security_group_list') api.security_group_list(IsA(http.HttpRequest)).AndReturn( self.security_groups) self.mox.ReplayAll() res = self.client.get( reverse('steer:engine:images_and_snapshots:images:launch', args=[IMAGE_ID])) self.assertTemplateUsed(res, 'engine/images_and_snapshots/images/launch.html') form = res.context['form'] form_keyfield = form.fields['key_name'] self.assertEqual(len(form_keyfield.choices), 0)
def index(request): tenant_id = request.user.tenant_id for f in (TerminateInstance, RebootInstance): form, handled = f.maybe_handle(request) if handled: return handled instances = [] try: instances = api.server_list(request) except Exception as e: LOG.exception(_('Exception in instance index')) if not hasattr(e, 'message'): e.message = str(e) messages.error(request, _('Unable to get instance list: %s') % e.message) # Gather our flavors and correlate our instances to them try: flavors = api.flavor_list(request) full_flavors = SortedDict([(str(flavor.id), flavor) for \ flavor in flavors]) for instance in instances: instance.full_flavor = full_flavors[instance.flavor["id"]] except api_exceptions.Unauthorized, e: LOG.exception('Unauthorized attempt to access flavor list.') messages.error(request, _('Unauthorized.'))
def flavorlist(): try: fl = api.flavor_list(request) # TODO add vcpu count to flavors sel = [(f.id, '%s (%svcpu / %sGB Disk / %sMB Ram )' % (f.name, f.vcpus, f.disk, f.ram)) for f in fl] return sorted(sel) except api_exceptions.ApiException: LOG.exception('Unable to retrieve list of instance types') return [(1, 'm1.tiny')]
def test_launch_get(self): IMAGE_ID = '1' self.mox.StubOutWithMock(api, 'image_get_meta') api.image_get_meta(IsA(http.HttpRequest), IMAGE_ID).AndReturn(self.visibleImage) self.mox.StubOutWithMock(api, 'tenant_quota_get') api.tenant_quota_get(IsA(http.HttpRequest), self.TEST_TENANT).AndReturn(FakeQuota) self.mox.StubOutWithMock(api, 'flavor_list') api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors) self.mox.StubOutWithMock(api, 'keypair_list') api.keypair_list(IsA(http.HttpRequest)).AndReturn(self.keypairs) self.mox.StubOutWithMock(api, 'security_group_list') api.security_group_list(IsA(http.HttpRequest)).AndReturn( self.security_groups) self.mox.ReplayAll() res = self.client.get( reverse('steer:engine:images_and_snapshots:images:launch', args=[IMAGE_ID])) self.assertTemplateUsed(res, 'engine/images_and_snapshots/images/launch.html') image = res.context['image'] self.assertEqual(image.name, self.visibleImage.name) form = res.context['form'] form_flavorfield = form.fields['flavor'] self.assertIn('m1.massive', form_flavorfield.choices[0][1]) form_keyfield = form.fields['key_name'] self.assertEqual(form_keyfield.choices[0][0], self.keypairs[0].name)
def index(request): for f in (DeleteFlavor,): form, handled = f.maybe_handle(request) if handled: return handled delete_form = DeleteFlavor() flavors = [] try: flavors = api.flavor_list(request) except api_exceptions.Unauthorized, e: LOG.exception('Unauthorized attempt to access flavor list.') messages.error(request, _('Unauthorized.'))
def index(request): for f in (DeleteFlavor, ): form, handled = f.maybe_handle(request) if handled: return handled delete_form = DeleteFlavor() flavors = [] try: flavors = api.flavor_list(request) except api_exceptions.Unauthorized, e: LOG.exception('Unauthorized attempt to access flavor list.') messages.error(request, _('Unauthorized.'))
def test_index(self): self.mox.StubOutWithMock(api, 'image_list_detailed') api.image_list_detailed(IsA(http.HttpRequest)).AndReturn(self.images) self.mox.StubOutWithMock(api, 'snapshot_list_detailed') api.snapshot_list_detailed(IsA(http.HttpRequest)).AndReturn( self.snapshots) self.mox.StubOutWithMock(api, 'flavor_list') api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors) api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors) self.mox.StubOutWithMock(api, 'security_group_list') api.security_group_list(IsA(http.HttpRequest)).\ AndReturn(self.security_groups) api.security_group_list(IsA(http.HttpRequest)).\ AndReturn(self.security_groups) self.mox.StubOutWithMock(api, 'keypair_list') api.keypair_list(IsA(http.HttpRequest)).AndReturn(self.keypairs) self.mox.StubOutWithMock(api, 'tenant_quota_get') api.tenant_quota_get(IsA(http.HttpRequest), self.TEST_TENANT).AndReturn({}) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'engine/images_and_snapshots/index.html') self.assertIn('images', res.context) images = res.context['images'] self.assertEqual(len(images), 1) self.assertEqual(images[0].name, 'visibleImage')
messages.error(request, _('Unable to get vnc console for instance %(inst)s: %(msg)s') % {"inst": instance_id, "msg": e.message}) return shortcuts.redirect( 'steer:engine:instances_and_volumes:instances:index') except api_exceptions.ApiException, e: LOG.exception(_('ApiException while fetching instance info')) messages.error(request, _('Unable to get information for instance %(inst)s: %(msg)s') % {"inst": instance_id, "msg": e.message}) return shortcuts.redirect( 'steer:engine:instances_and_volumes:instances:index') # Gather our flavors and images and correlate our instances to them try: flavors = api.flavor_list(request) full_flavors = SortedDict([(str(flavor.id), flavor) for \ flavor in flavors]) instance.full_flavor = full_flavors[instance.flavor["id"]] except api_exceptions.Unauthorized, e: LOG.exception('Unauthorized attempt to access flavor list.') messages.error(request, _('Unauthorized.')) except Exception, e: LOG.exception('Exception while fetching flavor info') if not hasattr(e, 'message'): e.message = str(e) messages.error(request, _('Unable to get flavor info: %s') % e.message) return shortcuts.render(request, 'engine/instances_and_volumes/instances/detail.html', { 'instance': instance,
except api_exceptions.ApiException as e: instances = [] LOG.exception(_('Exception in instance index')) messages.error(request, _('Unable to fetch instances: %s') % e.message) # Gather our volumes try: volumes = api.volume_list(request) except engineclient_exceptions.ClientException, e: volumes = [] LOG.exception("ClientException in volume index") messages.error(request, _('Unable to fetch volumes: %s') % e.message) # Gather our flavors and correlate our instances to them try: flavors = api.flavor_list(request) full_flavors = SortedDict([(str(flavor.id), flavor) for \ flavor in flavors]) for instance in instances: instance.full_flavor = full_flavors[instance.flavor["id"]] except api_exceptions.Unauthorized, e: LOG.exception('Unauthorized attempt to access flavor list.') messages.error(request, _('Unauthorized.')) except Exception, e: if not hasattr(e, 'message'): e.message = str(e) LOG.exception('Exception while fetching flavor info') messages.error(request, _('Unable to get flavor info: %s') % e.message) terminate_form = TerminateInstance() reboot_form = RebootInstance()
def test_launch_form_apiexception(self): FLAVOR_ID = self.flavors[0].id IMAGE_ID = '1' KEY_NAME = self.keypairs[0].name SERVER_NAME = 'serverName' USER_DATA = 'userData' form_data = {'method': 'LaunchForm', 'flavor': FLAVOR_ID, 'image_id': IMAGE_ID, 'key_name': KEY_NAME, 'name': SERVER_NAME, 'tenant_id': self.TEST_TENANT, 'user_data': USER_DATA, 'security_groups': 'default', } self.mox.StubOutWithMock(api, 'image_get_meta') api.image_get_meta(IgnoreArg(), IMAGE_ID).AndReturn(self.visibleImage) self.mox.StubOutWithMock(api, 'tenant_quota_get') api.tenant_quota_get(IsA(http.HttpRequest), self.TEST_TENANT).AndReturn(FakeQuota) self.mox.StubOutWithMock(api, 'flavor_list') api.flavor_list(IgnoreArg()).AndReturn(self.flavors) self.mox.StubOutWithMock(api, 'keypair_list') api.keypair_list(IgnoreArg()).AndReturn(self.keypairs) self.mox.StubOutWithMock(api, 'security_group_list') api.security_group_list(IsA(http.HttpRequest)).AndReturn( self.security_groups) # called again by the form api.image_get_meta(IgnoreArg(), IMAGE_ID).AndReturn(self.visibleImage) self.mox.StubOutWithMock(api, 'flavor_get') api.flavor_get(IgnoreArg(), IsA(unicode)).AndReturn(self.flavors[0]) self.mox.StubOutWithMock(api, 'server_create') exception = api_exceptions.ApiException('apiException') api.server_create(IsA(http.HttpRequest), SERVER_NAME, self.visibleImage, self.flavors[0], KEY_NAME, USER_DATA, self.security_groups).AndRaise(exception) self.mox.StubOutWithMock(messages, 'error') messages.error(IsA(http.HttpRequest), IsA(basestring)) self.mox.ReplayAll() url = reverse('steer:engine:images_and_snapshots:images:launch', args=[IMAGE_ID]) res = self.client.post(url, form_data) self.assertTemplateUsed(res, 'engine/images_and_snapshots/images/launch.html')
def test_launch_post(self): FLAVOR_ID = self.flavors[0].id IMAGE_ID = '1' KEY_NAME = self.keypairs[0].name SERVER_NAME = 'serverName' USER_DATA = 'userData' form_data = {'method': 'LaunchForm', 'flavor': FLAVOR_ID, 'image_id': IMAGE_ID, 'key_name': KEY_NAME, 'name': SERVER_NAME, 'user_data': USER_DATA, 'tenant_id': self.TEST_TENANT, 'security_groups': 'default', } self.mox.StubOutWithMock(api, 'image_get_meta') api.image_get_meta(IsA(http.HttpRequest), IMAGE_ID).AndReturn(self.visibleImage) self.mox.StubOutWithMock(api, 'tenant_quota_get') api.tenant_quota_get(IsA(http.HttpRequest), self.TEST_TENANT).AndReturn(FakeQuota) self.mox.StubOutWithMock(api, 'flavor_list') api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors) self.mox.StubOutWithMock(api, 'keypair_list') api.keypair_list(IsA(http.HttpRequest)).AndReturn(self.keypairs) self.mox.StubOutWithMock(api, 'security_group_list') api.security_group_list(IsA(http.HttpRequest)).AndReturn( self.security_groups) # called again by the form api.image_get_meta(IsA(http.HttpRequest), IMAGE_ID).AndReturn(self.visibleImage) self.mox.StubOutWithMock(api, 'flavor_get') api.flavor_get(IsA(http.HttpRequest), IsA(unicode)).AndReturn(self.flavors[0]) self.mox.StubOutWithMock(api, 'server_create') api.server_create(IsA(http.HttpRequest), SERVER_NAME, self.visibleImage, self.flavors[0], KEY_NAME, USER_DATA, [self.security_groups[0].name]) self.mox.StubOutWithMock(messages, 'success') messages.success(IsA(http.HttpRequest), IsA(basestring)) self.mox.ReplayAll() res = self.client.post( reverse('steer:engine:images_and_snapshots:images:launch', args=[IMAGE_ID]), form_data) self.assertRedirectsNoFollow(res, reverse('steer:engine:instances_and_volumes:instances:index'))