def usage(request): (date_start, date_end, datetime_start, datetime_end) = _get_start_and_end_date(request) service_list = [] usage_list = [] max_vcpus = max_gigabytes = 0 if date_start > _current_month(): messages.error(request, 'No data for the selected period') date_end = date_start datetime_end = datetime_start else: try: service_list = api.admin_api(request).services.list() except api_exceptions.ApiException, e: messages.error(request, 'Unable to get service info: %s' % e.message) for service in service_list: if service.type == 'nova-compute': max_vcpus += service.stats['max_vcpus'] max_gigabytes += service.stats['max_gigabytes'] try: usage_list = api.extras_api(request).usage.list(datetime_start, datetime_end) except api_exceptions.ApiException, e: messages.error(request, 'Unable to get usage info: %s' % e.message)
def keynamelist(): try: fl = api.extras_api(request).keypairs.list() sel = [(f.key_name, f.key_name) for f in fl] return sel except: return []
def index(request): for f in (TerminateInstance, RebootInstance): _, handled = f.maybe_handle(request) if handled: return handled instances = [] try: image_dict = api.get_image_cache(request) instances = api.extras_api(request).servers.list() for instance in instances: # FIXME - ported this over, but it is hacky instance._info['attrs']['image_name'] =\ image_dict.get(int(instance.attrs['image_id']),{}).get('name') except Exception as e: messages.error(request, 'Unable to get instance list: %s' % e.message) # We don't have any way of showing errors for these, so don't bother # trying to reuse the forms from above terminate_form = TerminateInstance() reboot_form = RebootInstance() return render_to_response('syspanel_instances.html', { 'instances': instances, 'terminate_form': terminate_form, 'reboot_form': reboot_form, }, context_instance=template.RequestContext(request))
def handle(self, request, data): try: keypair = api.extras_api(request).keypairs.delete( data['keypair_id']) messages.info(request, 'Successfully deleted keypair: %s' \ % data['keypair_id']) except api_exceptions.ApiException, e: messages.error(request, 'Error deleting keypair: %s' % e.message)
def handle(self, request, data): image_id = data["image_id"] try: image = api.compute_api(request).images.get(image_id) flavor = api.compute_api(request).flavors.get(data["flavor"]) api.extras_api(request).servers.create( data["name"], image, flavor, user_data=data["user_data"], key_name=data.get("key_name") ) messages.success( request, "Instance was successfully\ launched.", ) return shortcuts.redirect(request.build_absolute_uri()) except api_exceptions.ApiException, e: messages.error(request, "Unable to launch instance: %s" % e.message)
def flavorlist(): try: fl = api.extras_api(request).flavors.list() # 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: return [(1, "m1.tiny")]
def vnc(request, tenant_id, instance_id): try: console = api.extras_api(request).consoles.create(instance_id, 'vnc') return redirect(console.output) except api_exceptions.ApiException, e: messages.error(request, 'Unable to get vnc console for instance %s: %s' % (instance_id, e.message)) return redirect('dash_instances', tenant_id)
def index(request, tenant_id): delete_form, handled = DeleteKeypair.maybe_handle(request) if handled: return handled try: keypairs = api.extras_api(request).keypairs.list() except api_exceptions.ApiException, e: keypairs = [] messages.error(request, 'Error featching keypairs: %s' % e.message)
def handle(self, request, data): try: keypair = api.extras_api(request).keypairs.create(data['name']) response = http.HttpResponse(mimetype='application/binary') response['Content-Disposition'] = \ 'attachment; filename=%s.pem' % \ keypair.key_name response.write(keypair.private_key) return response except api_exceptions.ApiException, e: messages.error(request, 'Error Creating Keypair: %s' % e.message) return shortcuts.redirect(request.build_absolute_uri())
def console(request, tenant_id, instance_id): try: console = api.extras_api(request).consoles.create(instance_id) response = http.HttpResponse(mimetype='text/plain') response.write(console.output) response.flush() return response except api_exceptions.ApiException, e: messages.error(request, 'Unable to get log for instance %s: %s' % (instance_id, e.message)) return redirect('dash_instances', tenant_id)
def test_get_extras_api(self): self.mox.StubOutClassWithMocks(OSExtras, "Extras") OSExtras.Extras(auth_token=TEST_TOKEN, management_url=TEST_URL) self.mox.StubOutWithMock(api, "url_for") api.url_for(IsA(http.HttpRequest), "nova").AndReturn(TEST_URL) api.url_for(IsA(http.HttpRequest), "nova").AndReturn(TEST_URL) self.mox.ReplayAll() self.assertIsNotNone(api.extras_api(self.request)) self.mox.VerifyAll()
def usage(request, tenant_id=None): today = datetime.date.today() date_start = datetime.date(today.year, today.month, 1) datetime_start = datetime.datetime.combine(date_start, datetime.time()) datetime_end = datetime.datetime.utcnow() usage = {} if not tenant_id: tenant_id = request.user.tenant try: usage = api.extras_api(request).usage.get(tenant_id, datetime_start, datetime_end) except api_exceptions.ApiException, e: messages.error(request, 'Unable to get usage info: %s' % e.message)
def stub_extras_api(self, count=1): self.mox.StubOutWithMock(api, "extras_api") extras_api = self.mox.CreateMock(OSExtras.Extras) for i in range(count): api.extras_api(IsA(http.HttpRequest)).AndReturn(extras_api) return extras_api