def handle(self, request, data): try: # FIXME(johnp): Nova (cinderclient) currently returns a useless # error message when the quota is exceeded when trying to create # a volume, so we need to check for that scenario here before we # send it off to Nova to try and create. usages = api.tenant_quota_usages(request) if type(data['size']) is str: data['size'] = int(data['size']) if usages['gigabytes']['available'] < data['size']: error_message = _('A volume of %(req)iGB cannot be created as ' 'you only have %(avail)iGB of your quota ' 'available.') params = { 'req': data['size'], 'avail': usages['gigabytes']['available'] } raise ValidationError(error_message % params) elif usages['volumes']['available'] <= 0: error_message = _('You are already using all of your available' ' volumes.') raise ValidationError(error_message) api.volume_create(request, data['size'], data['name'], data['description']) message = 'Creating volume "%s"' % data['name'] messages.info(request, message) except ValidationError, e: return self.api_error(e.messages[0])
def test_create_volume(self): volume = self.volumes.first() usage = {'gigabytes': {'available': 250}, 'volumes': {'available': 6}} formData = { 'name': u'A Volume I Am Making', 'description': u'This is a volume I am making for a test.', 'method': u'CreateForm', 'size': 50, 'snapshot_source': '' } api.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(usage) api.volume_snapshot_list(IsA(http.HttpRequest)).\ AndReturn(self.volume_snapshots.list()) api.volume_create(IsA(http.HttpRequest), formData['size'], formData['name'], formData['description'], snapshot_id=None).AndReturn(volume) self.mox.ReplayAll() url = reverse('horizon:project:volumes:create') res = self.client.post(url, formData) redirect_url = reverse('horizon:project:volumes:index') self.assertRedirectsNoFollow(res, redirect_url)
def handle(self, request, data): try: # FIXME(johnp): Nova (cinderclient) currently returns a useless # error message when the quota is exceeded when trying to create # a volume, so we need to check for that scenario here before we # send it off to Nova to try and create. usages = api.tenant_quota_usages(request) if type(data['size']) is str: data['size'] = int(data['size']) if usages['gigabytes']['available'] < data['size']: error_message = _('A volume of %iGB cannot be created as you' ' only have %iGB of your quota available.' % (data['size'], usages['gigabytes']['available'],)) raise ValidationError(error_message) elif usages['volumes']['available'] <= 0: error_message = _('You are already using all of your available' ' volumes.') raise ValidationError(error_message) api.volume_create(request, data['size'], data['name'], data['description']) message = 'Creating volume "%s"' % data['name'] messages.info(request, message) except ValidationError, e: return self.api_error(e.messages[0])
def handle(self, request, data): try: # FIXME(johnp): Nova (cinderclient) currently returns a useless # error message when the quota is exceeded when trying to create # a volume, so we need to check for that scenario here before we # send it off to Nova to try and create. usages = api.tenant_quota_usages(request) if type(data["size"]) is str: data["size"] = int(data["size"]) if usages["gigabytes"]["available"] < data["size"]: error_message = _( "A volume of %(req)iGB cannot be created as " "you only have %(avail)iGB of your quota " "available." ) params = {"req": data["size"], "avail": usages["gigabytes"]["available"]} raise ValidationError(error_message % params) elif usages["volumes"]["available"] <= 0: error_message = _("You are already using all of your available" " volumes.") raise ValidationError(error_message) api.volume_create(request, data["size"], data["name"], data["description"]) message = 'Creating volume "%s"' % data["name"] messages.info(request, message) except ValidationError, e: return self.api_error(e.messages[0])
def handle(self, request, data): try: api.volume_create(request, data['size'], data['name'], data['description']) message = 'Creating volume "%s"' % data['name'] messages.info(request, message) except: exceptions.handle(request, _("Unable to create volume.")) return shortcuts.redirect("horizon:nova:instances_and_volumes:index")
def handle(self, request, data): try: api.volume_create(request, data["size"], data["name"], data["description"]) message = 'Creating volume "%s"' % data["name"] LOG.info(message) messages.info(request, message) except novaclient_exceptions.ClientException, e: LOG.exception("ClientException in CreateVolume") messages.error(request, _("Error Creating Volume: %s") % e.message)
def handle(self, request, data): try: api.volume_create(request, data['size'], data['name'], data['description']) message = 'Creating volume "%s"' % data['name'] LOG.info(message) messages.info(request, message) except novaclient_exceptions.ClientException, e: LOG.exception("ClientException in CreateVolume") messages.error(request, _('Error Creating Volume: %s') % e.message)
def test_create_volume_from_snapshot(self): volume = self.volumes.first() usage = {'gigabytes': {'available': 250}, 'volumes': {'available': 6}} snapshot = self.volume_snapshots.first() formData = { 'name': u'A Volume I Am Making', 'description': u'This is a volume I am making for a test.', 'method': u'CreateForm', 'size': 50, 'snapshot_source': snapshot.id } # first call- with url param api.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(usage) api.nova.volume_snapshot_get(IsA(http.HttpRequest), str(snapshot.id)).AndReturn(snapshot) api.volume_create(IsA(http.HttpRequest), formData['size'], formData['name'], formData['description'], snapshot_id=snapshot.id).\ AndReturn(volume) # second call- with dropdown api.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(usage) api.volume_snapshot_list(IsA(http.HttpRequest)).\ AndReturn(self.volume_snapshots.list()) api.nova.volume_snapshot_get(IsA(http.HttpRequest), str(snapshot.id)).AndReturn(snapshot) api.volume_create(IsA(http.HttpRequest), formData['size'], formData['name'], formData['description'], snapshot_id=snapshot.id).\ AndReturn(volume) self.mox.ReplayAll() # get snapshot from url url = reverse('horizon:project:volumes:create') res = self.client.post( "?".join([url, "snapshot_id=" + str(snapshot.id)]), formData) redirect_url = reverse('horizon:project:volumes:index') self.assertRedirectsNoFollow(res, redirect_url) # get snapshot from dropdown list url = reverse('horizon:project:volumes:create') res = self.client.post(url, formData) redirect_url = reverse('horizon:project:volumes:index') self.assertRedirectsNoFollow(res, redirect_url)
def test_create_volume_from_snapshot(self): volume = self.volumes.first() usage = {'gigabytes': {'available': 250}, 'volumes': {'available': 6}} snapshot = self.volume_snapshots.first() formData = {'name': u'A Volume I Am Making', 'description': u'This is a volume I am making for a test.', 'method': u'CreateForm', 'size': 50, 'snapshot_source': snapshot.id} # first call- with url param api.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(usage) api.nova.volume_snapshot_get(IsA(http.HttpRequest), str(snapshot.id)).AndReturn(snapshot) api.volume_create(IsA(http.HttpRequest), formData['size'], formData['name'], formData['description'], snapshot_id=snapshot.id).\ AndReturn(volume) # second call- with dropdown api.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(usage) api.volume_snapshot_list(IsA(http.HttpRequest)).\ AndReturn(self.volume_snapshots.list()) api.nova.volume_snapshot_get(IsA(http.HttpRequest), str(snapshot.id)).AndReturn(snapshot) api.volume_create(IsA(http.HttpRequest), formData['size'], formData['name'], formData['description'], snapshot_id=snapshot.id).\ AndReturn(volume) self.mox.ReplayAll() # get snapshot from url url = reverse('horizon:nova:volumes:create') res = self.client.post("?".join([url, "snapshot_id=" + str(snapshot.id)]), formData) redirect_url = reverse('horizon:nova:volumes:index') self.assertRedirectsNoFollow(res, redirect_url) # get snapshot from dropdown list url = reverse('horizon:nova:volumes:create') res = self.client.post(url, formData) redirect_url = reverse('horizon:nova:volumes:index') self.assertRedirectsNoFollow(res, redirect_url)
def test_create_volume(self): usage = {'gigabytes': {'available': 250}, 'volumes': {'available': 6}} formData = {'name': u'A Volume I Am Making', 'description': u'This is a volume I am making for a test.', 'method': u'CreateForm', 'size': 50} api.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(usage) api.volume_create(IsA(http.HttpRequest), formData['size'], formData['name'], formData['description']) self.mox.ReplayAll() url = reverse('horizon:nova:volumes:create') res = self.client.post(url, formData) redirect_url = reverse('horizon:nova:volumes:index') self.assertRedirectsNoFollow(res, redirect_url)
def test_create_volume_from_snapshot(self): volume = self.volumes.first() usage = {"gigabytes": {"available": 250}, "volumes": {"available": 6}} snapshot = self.volume_snapshots.first() formData = { "name": u"A Volume I Am Making", "description": u"This is a volume I am making for a test.", "method": u"CreateForm", "size": 50, "snapshot_source": snapshot.id, } # first call- with url param api.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(usage) api.nova.volume_snapshot_get(IsA(http.HttpRequest), str(snapshot.id)).AndReturn(snapshot) api.volume_create( IsA(http.HttpRequest), formData["size"], formData["name"], formData["description"], snapshot_id=snapshot.id ).AndReturn(volume) # second call- with dropdown api.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(usage) api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn(self.volume_snapshots.list()) api.nova.volume_snapshot_get(IsA(http.HttpRequest), str(snapshot.id)).AndReturn(snapshot) api.volume_create( IsA(http.HttpRequest), formData["size"], formData["name"], formData["description"], snapshot_id=snapshot.id ).AndReturn(volume) self.mox.ReplayAll() # get snapshot from url url = reverse("horizon:nova:volumes:create") res = self.client.post("?".join([url, "snapshot_id=" + str(snapshot.id)]), formData) redirect_url = reverse("horizon:nova:volumes:index") self.assertRedirectsNoFollow(res, redirect_url) # get snapshot from dropdown list url = reverse("horizon:nova:volumes:create") res = self.client.post(url, formData) redirect_url = reverse("horizon:nova:volumes:index") self.assertRedirectsNoFollow(res, redirect_url)
def test_create_volume(self): volume = self.volumes.first() usage = {"gigabytes": {"available": 250}, "volumes": {"available": 6}} formData = { "name": u"A Volume I Am Making", "description": u"This is a volume I am making for a test.", "method": u"CreateForm", "size": 50, "snapshot_source": "", } api.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(usage) api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn(self.volume_snapshots.list()) api.volume_create( IsA(http.HttpRequest), formData["size"], formData["name"], formData["description"], snapshot_id=None ).AndReturn(volume) self.mox.ReplayAll() url = reverse("horizon:nova:volumes:create") res = self.client.post(url, formData) redirect_url = reverse("horizon:nova:volumes:index") self.assertRedirectsNoFollow(res, redirect_url)
def handle(self, request, data): try: # FIXME(johnp): cinderclient currently returns a useless # error message when the quota is exceeded when trying to create # a volume, so we need to check for that scenario here before we # send it off to try and create. usages = api.tenant_quota_usages(request) snapshot_id = None if (data.get("snapshot_source", None)): # Create from Snapshot snapshot = self.get_snapshot(request, data["snapshot_source"]) snapshot_id = snapshot.id if (data['size'] < snapshot.size): error_message = _('The volume size cannot be less than ' 'the snapshot size (%sGB)' % snapshot.size) raise ValidationError(error_message) else: if type(data['size']) is str: data['size'] = int(data['size']) if usages['gigabytes']['available'] < data['size']: error_message = _('A volume of %(req)iGB cannot be created as ' 'you only have %(avail)iGB of your quota ' 'available.') params = { 'req': data['size'], 'avail': usages['gigabytes']['available'] } raise ValidationError(error_message % params) elif usages['volumes']['available'] <= 0: error_message = _('You are already using all of your available' ' volumes.') raise ValidationError(error_message) volume = api.volume_create(request, data['size'], data['name'], data['description'], snapshot_id=snapshot_id) message = 'Creating volume "%s"' % data['name'] messages.info(request, message) return volume except ValidationError, e: return self.api_error(e.messages[0])
def handle(self, request, data): try: # FIXME(johnp): Nova (cinderclient) currently returns a useless # error message when the quota is exceeded when trying to create # a volume, so we need to check for that scenario here before we # send it off to Nova to try and create. usages = api.tenant_quota_usages(request) snapshot_id = None if (data.get("snapshot_source", None)): # Create from Snapshot snapshot = self.get_snapshot(request, data["snapshot_source"]) snapshot_id = snapshot.id if (data['size'] < snapshot.size): error_message = _('The volume size cannot be less than ' 'the snapshot size (%sGB)' % snapshot.size) raise ValidationError(error_message) else: if type(data['size']) is str: data['size'] = int(data['size']) if usages['gigabytes']['available'] < data['size']: error_message = _('A volume of %(req)iGB cannot be created as ' 'you only have %(avail)iGB of your quota ' 'available.') params = {'req': data['size'], 'avail': usages['gigabytes']['available']} raise ValidationError(error_message % params) elif usages['volumes']['available'] <= 0: error_message = _('You are already using all of your available' ' volumes.') raise ValidationError(error_message) volume = api.volume_create(request, data['size'], data['name'], data['description'], snapshot_id=snapshot_id) message = 'Creating volume "%s"' % data['name'] messages.info(request, message) return volume except ValidationError, e: return self.api_error(e.messages[0])
def handle(self, request, data): try: # FIXME(johnp): cinderclient currently returns a useless # error message when the quota is exceeded when trying to create # a volume, so we need to check for that scenario here before we # send it off to try and create. usages = api.tenant_quota_usages(request) snapshot_id = None if data.get("snapshot_source", None): # Create from Snapshot snapshot = self.get_snapshot(request, data["snapshot_source"]) snapshot_id = snapshot.id if data["size"] < snapshot.size: error_message = _("The volume size cannot be less than " "the snapshot size (%sGB)" % snapshot.size) raise ValidationError(error_message) else: if type(data["size"]) is str: data["size"] = int(data["size"]) if usages["gigabytes"]["available"] < data["size"]: error_message = _( "A volume of %(req)iGB cannot be created as " "you only have %(avail)iGB of your quota " "available." ) params = {"req": data["size"], "avail": usages["gigabytes"]["available"]} raise ValidationError(error_message % params) elif usages["volumes"]["available"] <= 0: error_message = _("You are already using all of your available" " volumes.") raise ValidationError(error_message) volume = api.volume_create( request, data["size"], data["name"], data["description"], snapshot_id=snapshot_id ) message = 'Creating volume "%s"' % data["name"] messages.info(request, message) return volume except ValidationError, e: return self.api_error(e.messages[0])