def test_create_instance_snapshot(self): server = self.servers.first() snapshot_server = deepcopy(server) setattr(snapshot_server, 'OS-EXT-STS:task_state', "IMAGE_SNAPSHOT") api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server) api.snapshot_create(IsA(http.HttpRequest), server.id, "snapshot1") api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server) api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([[], False]) api.image_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([[], False]) api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn([]) api.volume_list(IsA(http.HttpRequest)).AndReturn(self.volumes.list()) api.server_list(IsA(http.HttpRequest)).AndReturn([snapshot_server]) api.flavor_list(IgnoreArg()).AndReturn(self.flavors.list()) self.mox.ReplayAll() formData = {'instance_id': server.id, 'method': 'CreateSnapshot', 'tenant_id': server.tenant_id, 'name': 'snapshot1'} url = reverse('horizon:nova:images_and_snapshots:snapshots:create', args=[server.id]) redir_url = reverse('horizon:nova:images_and_snapshots:index') res = self.client.post(url, formData) self.assertRedirects(res, redir_url) res = self.client.get(INDEX_URL) self.assertContains(res, '<td class="status_unknown sortable">' 'Snapshotting</td>', 1)
def test_queued_snapshot_actions(self): images = self.images.list() snapshots = self.snapshots.list() snapshot1 = deepcopy(snapshots[0]) snapshot1.status = 'active' snapshot2 = deepcopy(snapshots[0]) snapshot2.id = 4 snapshot2.name = "snap2" snapshot2.status = "queued" snapshot2.owner = '1' new_snapshots = [snapshot1, snapshot2] self.mox.StubOutWithMock(api, 'image_list_detailed') self.mox.StubOutWithMock(api, 'snapshot_list_detailed') api.image_list_detailed(IsA(http.HttpRequest)).AndReturn(images) api.snapshot_list_detailed(IsA(http.HttpRequest)).\ AndReturn(new_snapshots) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'nova/images_and_snapshots/index.html') self.assertIn('snapshots_table', res.context) snaps = res.context['snapshots_table'] self.assertEqual(len(snaps.get_rows()), 2) row_actions = snaps.get_row_actions(snaps.data[0]) #first instance - status active, not owned self.assertEqual(row_actions[0].verbose_name, u"Launch") self.assertEqual(len(row_actions), 1) row_actions = snaps.get_row_actions(snaps.data[1]) #first instance - status queued, but editable self.assertEqual(row_actions[0].verbose_name, u"Edit") self.assertEqual(str(row_actions[1]), "<DeleteSnapshot: delete>") self.assertEqual(len(row_actions), 2)
def test_create_instance_snapshot(self): server = self.servers.first() snapshot_server = deepcopy(server) setattr(snapshot_server, 'OS-EXT-STS:task_state', "IMAGE_SNAPSHOT") api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server) api.snapshot_create(IsA(http.HttpRequest), server.id, "snapshot1") api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server) api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([[], False]) api.image_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([[], False]) api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn([]) api.server_list(IsA(http.HttpRequest)).AndReturn([snapshot_server]) api.flavor_list(IgnoreArg()).AndReturn(self.flavors.list()) self.mox.ReplayAll() formData = {'instance_id': server.id, 'method': 'CreateSnapshot', 'tenant_id': server.tenant_id, 'name': 'snapshot1'} url = reverse('horizon:nova:images_and_snapshots:snapshots:create', args=[server.id]) redir_url = reverse('horizon:nova:images_and_snapshots:index') res = self.client.post(url, formData) self.assertRedirects(res, redir_url) res = self.client.get(INDEX_URL) self.assertContains(res, '<td class="status_unknown sortable">' 'Snapshotting</td>', 1)
def test_index(self): images = self.images.list() snapshots = self.snapshots.list() volumes = self.volumes.list() for volume in volumes: volume.volume_id = volume.id for volume in volumes: api.volume_get(IsA(http.HttpRequest), volume.volume_id) \ .AndReturn(volume) for volume in volumes: api.volume_get(IsA(http.HttpRequest), volume.volume_id) \ .AndReturn(volume) api.volume_get(IsA(http.HttpRequest), volume.volume_id) api.volume_snapshot_list(IsA(http.HttpRequest)) \ .AndReturn(volumes) api.image_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([images, False]) api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([snapshots, False]) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'nova/images_and_snapshots/index.html') self.assertIn('images_table', res.context) images = res.context['images_table'].data filter_func = lambda im: im.container_format not in ['aki', 'ari'] filtered_images = filter(filter_func, images) self.assertItemsEqual(images, filtered_images)
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, "nova/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")
def test_index(self): images = self.images.list() snapshots = self.snapshots.list() volumes = self.volumes.list() for volume in volumes: volume.volume_id = volume.id for volume in volumes: api.volume_get(IsA(http.HttpRequest), volume.volume_id).AndReturn(volume) for volume in volumes: api.volume_get(IsA(http.HttpRequest), volume.volume_id).AndReturn(volume) api.volume_get(IsA(http.HttpRequest), volume.volume_id) api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn(volumes) api.image_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([images, False]) api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([snapshots, False]) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, "nova/images_and_snapshots/index.html") self.assertIn("images_table", res.context) images = res.context["images_table"].data filter_func = lambda im: im.container_format not in ["aki", "ari"] filtered_images = filter(filter_func, images) self.assertItemsEqual(images, filtered_images)
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, 'nova/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')
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, 'nova/images_and_snapshots/index.html')
def test_index_no_images(self): self.mox.StubOutWithMock(api, 'snapshot_list_detailed') self.mox.StubOutWithMock(api, 'image_list_detailed') api.image_list_detailed(IsA(http.HttpRequest)).AndReturn([]) api.snapshot_list_detailed(IsA(http.HttpRequest)) \ .AndReturn(self.snapshots.list()) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'nova/images_and_snapshots/index.html')
def test_index_client_conn_error(self): self.mox.StubOutWithMock(api, 'image_list_detailed') self.mox.StubOutWithMock(api, 'snapshot_list_detailed') exc = glance_exception.ClientConnectionError('clientConnError') api.image_list_detailed(IsA(http.HttpRequest)).AndRaise(exc) api.snapshot_list_detailed(IsA(http.HttpRequest)) \ .AndReturn(self.snapshots.list()) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'nova/images_and_snapshots/index.html')
def test_index_error(self): self.mox.StubOutWithMock(api, "image_list_detailed") self.mox.StubOutWithMock(api, "snapshot_list_detailed") self.mox.StubOutWithMock(api, "volume_snapshot_list") api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn(self.volumes.list()) api.image_list_detailed(IsA(http.HttpRequest)).AndRaise(self.exceptions.glance) api.snapshot_list_detailed(IsA(http.HttpRequest)).AndReturn(self.snapshots.list()) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, "nova/images_and_snapshots/index.html")
def test_index_client_conn_error(self): self.mox.StubOutWithMock(api, 'snapshot_list_detailed') exception = glance_exception.ClientConnectionError('clientConnError') api.snapshot_list_detailed(IsA(http.HttpRequest)).AndRaise(exception) self.mox.StubOutWithMock(messages, 'error') messages.error(IsA(http.HttpRequest), IsA(basestring)) self.mox.ReplayAll() res = self.client.get(reverse('horizon:nova:snapshots:index')) self.assertTemplateUsed(res, 'nova/snapshots/index.html')
def test_index_error(self): self.mox.StubOutWithMock(api, 'image_list_detailed') self.mox.StubOutWithMock(api, 'snapshot_list_detailed') self.mox.StubOutWithMock(api, 'volume_snapshot_list') api.volume_snapshot_list(IsA(http.HttpRequest)) \ .AndReturn(self.volumes.list()) api.image_list_detailed(IsA(http.HttpRequest), marker=None).AndRaise(self.exceptions.glance) api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None) \ .AndReturn([self.snapshots.list(), False]) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'nova/images_and_snapshots/index.html')
def test_index(self): self.mox.StubOutWithMock(api, 'snapshot_list_detailed') api.snapshot_list_detailed(IsA(http.HttpRequest)).\ AndReturn(self.images) self.mox.ReplayAll() res = self.client.get(reverse('horizon:nova:snapshots:index')) self.assertTemplateUsed(res, 'nova/snapshots/index.html') self.assertIn('images', res.context) images = res.context['images'] self.assertEqual(len(images), 1)
def test_queued_snapshot_actions(self): images = self.images.list() snapshots = self.snapshots.list() volumes = self.volumes.list() for volume in volumes: volume.volume_id = volume.id for volume in volumes: api.volume_get(IsA(http.HttpRequest), volume.volume_id) \ .AndReturn(volume) for volume in volumes: api.volume_get(IsA(http.HttpRequest), volume.volume_id) \ .AndReturn(volume) api.volume_get(IsA(http.HttpRequest), volume.volume_id) api.volume_snapshot_list(IsA(http.HttpRequest)) \ .AndReturn(volumes) api.image_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([images, False]) api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None) \ .AndReturn([snapshots, False]) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'nova/images_and_snapshots/index.html') self.assertIn('snapshots_table', res.context) snaps = res.context['snapshots_table'] self.assertEqual(len(snaps.get_rows()), 3) row_actions = snaps.get_row_actions(snaps.data[0]) # first instance - status active, owned self.assertEqual(len(row_actions), 3) self.assertEqual(row_actions[0].verbose_name, u"Launch") self.assertEqual(row_actions[1].verbose_name, u"Edit") self.assertEqual(row_actions[2].verbose_name, u"Delete Snapshot") row_actions = snaps.get_row_actions(snaps.data[1]) # second instance - status active, not owned self.assertEqual(len(row_actions), 1) self.assertEqual(row_actions[0].verbose_name, u"Launch") row_actions = snaps.get_row_actions(snaps.data[2]) # third instance - status queued, only delete is available self.assertEqual(len(row_actions), 1) self.assertEqual(unicode(row_actions[0].verbose_name), u"Delete Snapshot") self.assertEqual(str(row_actions[0]), "<DeleteSnapshot: delete>")
def test_index(self): self.mox.StubOutWithMock(api, "snapshot_list_detailed") api.snapshot_list_detailed(IsA(http.HttpRequest)).AndReturn(self.images) self.mox.ReplayAll() res = self.client.get(reverse("horizon:nova:snapshots:index")) self.assertTemplateUsed(res, "nova/snapshots/index.html") self.assertIn("images", res.context) images = res.context["images"] self.assertEqual(len(images), 1) self.mox.VerifyAll()
def test_index_glance_error(self): self.mox.StubOutWithMock(api, "snapshot_list_detailed") exception = glance_exception.Error("glanceError") api.snapshot_list_detailed(IsA(http.HttpRequest)).AndRaise(exception) self.mox.StubOutWithMock(messages, "error") messages.error(IsA(http.HttpRequest), IsA(basestring)) self.mox.ReplayAll() res = self.client.get(reverse("horizon:nova:snapshots:index")) self.assertTemplateUsed(res, "nova/snapshots/index.html") self.mox.VerifyAll()
def test_index(self): images = self.images.list() snapshots = self.snapshots.list() self.mox.StubOutWithMock(api, 'image_list_detailed') self.mox.StubOutWithMock(api, 'snapshot_list_detailed') api.image_list_detailed(IsA(http.HttpRequest)).AndReturn(images) api.snapshot_list_detailed(IsA(http.HttpRequest)).AndReturn(snapshots) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'nova/images_and_snapshots/index.html') self.assertIn('images_table', res.context) images = res.context['images_table'].data filter_func = lambda im: im.container_format not in ['aki', 'ari'] filtered_images = filter(filter_func, images) self.assertItemsEqual(images, filtered_images)
def get_snapshots_data(self): try: snapshots = api.snapshot_list_detailed(self.request) except: snapshots = [] exceptions.handle(self.request, _("Unable to retrieve snapshots.")) return snapshots
def test_create_instance_snapshot(self): server = self.servers.first() api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server) api.snapshot_create(IsA(http.HttpRequest), server.id, "snapshot1").AndReturn(self.snapshots.first()) api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([[], False]) api.image_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([[], False]) api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn([]) self.mox.ReplayAll() formData = {"instance_id": server.id, "method": "CreateSnapshot", "name": "snapshot1"} url = reverse("horizon:project:images_and_snapshots:snapshots:create", args=[server.id]) redir_url = reverse("horizon:project:images_and_snapshots:index") res = self.client.post(url, formData) self.assertRedirects(res, redir_url)
def index(request): images = [] try: images = api.snapshot_list_detailed(request) except glance_exception.ClientConnectionError, e: msg = _('Error connecting to glance: %s') % str(e) LOG.exception(msg) messages.error(request, msg)
def test_index(self): images = self.images.list() snapshots = self.snapshots.list() self.mox.StubOutWithMock(api, "image_list_detailed") self.mox.StubOutWithMock(api, "snapshot_list_detailed") self.mox.StubOutWithMock(api, "volume_snapshot_list") api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn(self.volumes.list()) api.image_list_detailed(IsA(http.HttpRequest)).AndReturn(images) api.snapshot_list_detailed(IsA(http.HttpRequest)).AndReturn(snapshots) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, "nova/images_and_snapshots/index.html") self.assertIn("images_table", res.context) images = res.context["images_table"].data filter_func = lambda im: im.container_format not in ["aki", "ari"] filtered_images = filter(filter_func, images) self.assertItemsEqual(images, filtered_images)
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.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'nova/images_and_snapshots/index.html') self.assertIn('images_table', res.context) images = res.context['images_table'].data self.assertEqual(len(images), 1) self.assertEqual(images[0].name, 'visibleImage')
def test_index_error(self): volumes = self.volumes.list() for volume in volumes: volume.volume_id = volume.id for volume in volumes: api.volume_get(IsA(http.HttpRequest), volume.volume_id).AndReturn(volume) for volume in volumes: api.volume_get(IsA(http.HttpRequest), volume.volume_id).AndReturn(volume) api.volume_get(IsA(http.HttpRequest), volume.volume_id) api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn(volumes) api.image_list_detailed(IsA(http.HttpRequest), marker=None).AndRaise(self.exceptions.glance) api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([self.snapshots.list(), False]) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, "nova/images_and_snapshots/index.html")
def get_snapshots_data(self): req = self.request marker = req.GET.get(SnapshotsTable._meta.pagination_param, None) try: snaps, self._more_snapshots = api.snapshot_list_detailed( req, marker=marker) except: snaps = [] exceptions.handle(req, _("Unable to retrieve snapshots.")) return snaps
def get_snapshots_data(self): req = self.request marker = req.GET.get(SnapshotsTable._meta.pagination_param, None) try: snaps, self._more_snapshots = api.snapshot_list_detailed(req, marker=marker) except: snaps = [] exceptions.handle(req, _("Unable to retrieve snapshots.")) return snaps
def test_index_error(self): volumes = self.volumes.list() for volume in volumes: volume.volume_id = volume.id for volume in volumes: api.volume_get(IsA(http.HttpRequest), volume.volume_id) \ .AndReturn(volume) for volume in volumes: api.volume_get(IsA(http.HttpRequest), volume.volume_id) \ .AndReturn(volume) api.volume_get(IsA(http.HttpRequest), volume.volume_id) api.volume_snapshot_list(IsA(http.HttpRequest)) \ .AndReturn(volumes) api.image_list_detailed(IsA(http.HttpRequest), marker=None).AndRaise(self.exceptions.glance) api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None) \ .AndReturn([self.snapshots.list(), False]) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'nova/images_and_snapshots/index.html')
def test_index_no_images(self): volumes = self.volumes.list() for volume in volumes: volume.volume_id = volume.id for volume in volumes: api.volume_get(IsA(http.HttpRequest), volume.volume_id) \ .AndReturn(volume) for volume in volumes: api.volume_get(IsA(http.HttpRequest), volume.volume_id) \ .AndReturn(volume) api.volume_get(IsA(http.HttpRequest), volume.volume_id) api.volume_snapshot_list(IsA(http.HttpRequest)) \ .AndReturn(volumes) api.image_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([(), False]) api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None) \ .AndReturn([self.snapshots.list(), False]) self.mox.ReplayAll() res = self.client.get(INDEX_URL) self.assertTemplateUsed(res, 'project/images_and_snapshots/index.html')
def test_create_instance_snapshot(self): server = self.servers.first() snapshot_server = deepcopy(server) setattr(snapshot_server, "OS-EXT-STS:task_state", "IMAGE_SNAPSHOT") self.mox.StubOutWithMock(api, "server_get") self.mox.StubOutWithMock(api, "snapshot_create") self.mox.StubOutWithMock(api, "snapshot_list_detailed") self.mox.StubOutWithMock(api, "image_list_detailed") self.mox.StubOutWithMock(api, "volume_snapshot_list") self.mox.StubOutWithMock(api, "server_list") self.mox.StubOutWithMock(api, "flavor_list") self.mox.StubOutWithMock(api, "server_delete") self.mox.StubOutWithMock(api, "volume_list") api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server) api.snapshot_create(IsA(http.HttpRequest), server.id, "snapshot1") api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server) api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([[], False]) api.image_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([[], False]) api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn([]) api.volume_list(IsA(http.HttpRequest)).AndReturn(self.volumes.list()) api.server_list(IsA(http.HttpRequest)).AndReturn([snapshot_server]) api.flavor_list(IgnoreArg()).AndReturn(self.flavors.list()) self.mox.ReplayAll() formData = { "instance_id": server.id, "method": "CreateSnapshot", "tenant_id": server.tenant_id, "name": "snapshot1", } url = reverse("horizon:nova:images_and_snapshots:snapshots:create", args=[server.id]) redir_url = reverse("horizon:nova:images_and_snapshots:index") res = self.client.post(url, formData) self.assertRedirects(res, redir_url) res = self.client.get(INDEX_URL) self.assertContains(res, '<td class="status_unknown">' "Snapshotting</td>", 1)
def test_create_instance_snapshot(self): server = self.servers.first() api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server) api.snapshot_create(IsA(http.HttpRequest), server.id, "snapshot1").AndReturn(self.snapshots.first()) api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([[], False]) api.image_list_detailed(IsA(http.HttpRequest), marker=None).AndReturn([[], False]) api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn([]) self.mox.ReplayAll() formData = {'instance_id': server.id, 'method': 'CreateSnapshot', 'name': 'snapshot1'} url = reverse('horizon:nova:images_and_snapshots:snapshots:create', args=[server.id]) redir_url = reverse('horizon:nova:images_and_snapshots:index') res = self.client.post(url, formData) self.assertRedirects(res, redir_url)
def index(request): for f in (DeleteImage, ): unused, handled = f.maybe_handle(request) if handled: return handled all_images = [] snapshots = [] try: all_images = api.image_list_detailed(request) snapshots = api.snapshot_list_detailed(request) if not all_images: messages.info(request, _("There are currently no images.")) except glance_exception.ClientConnectionError, e: LOG.exception("Error connecting to glance") messages.error(request, _("Error connecting to glance: %s") % str(e))
def test_index(self): self.mox.StubOutWithMock(api, 'snapshot_list_detailed') api.snapshot_list_detailed(IsA(http.HttpRequest)).\ AndReturn(self.images) 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('horizon:nova:snapshots:index')) self.assertTemplateUsed(res, 'nova/snapshots/index.html') self.assertIn('images', res.context) images = res.context['images'] self.assertEqual(len(images), 1)