def statistics(region,Meteric,duration,RES_ID): metricUrl=KeyStoneManager().getServiceUrl("metering",region) token=ks_auth.getToken() print "token:",token headers1 = { "X-Auth-Token":token, "Content-type":"application/json" } now=int(time.time()) duration_sec=DUR[duration] period_start=utils.msecs2utc(now-8*3600-duration_sec) data1={ "Meteric":Meteric, "RES_ID":RES_ID, "period":PERIOD[duration], "period_start":urllib.quote(period_start,''), } print "metricUrl:",metricUrl print "->:",connUrl(metricUrl) conn1 = httplib.HTTPConnection(connUrl(metricUrl)) m_url="/v2/meters/%(Meteric)s/statistics?q.field=resource_id&q.field=timestamp&q.op=eq&q.op=gt&q.type=&q.type=&q.value=%(RES_ID)s&q.value=%(period_start)s&period=%(period)s" % data1 print "m_url:",m_url conn1.request("GET",m_url,None,headers1) response1 = conn1.getresponse() rtn = response1.read() conn1.close() if rtn: rtn = json.loads(rtn) print "rtn:",rtn return rtn
def eva(ip,regions): apitoken=ks_auth.getToken() if not apitoken: return RTN_500 % "Can't get token from keystone" for region in regions: if not NOVA(region) in nova_list: print "DB %s_nova doesn't configure." % region continue if not NEUTRON(region) in neutron_list: print "DB %s_neutron doesn't configure." % region continue print "---------Start to query instanceId from db(%s)-------------" % region instanceBean=InstanceManager().findInstanceIdByIp(NEUTRON_DB(region),NOVA_DB(region),ip) if not instanceBean: print "can't find instance in db(%s) by vir" % region print "------- check if it's a physical machine --------" childs=InstanceManager().getChildrens(NOVA_DB(region),ip) print childs if not childs: if isinstance(childs,list): return RTN_500 % ("[] instance find in nova.instances by physical machine(%s) in Region(%s)" % (ip,region)) print "can't find it as a physical machine in db(%s)" % region continue msg={} for child in childs: msg["uuid_%s" % child.uuid]=evacuate(apitoken,child,region,child.host) return RTN_200 % msg else: mess=evacuate(apitoken,instanceBean,region,instanceBean.host) return RTN_200 % mess return RTN_500 % ("Can't find machine|virtual by ip (%s)" % ip)
def m1(req): token=ks_auth.getToken() expire=public.TOKEN["expire"] li=json.dumps(public.TOKEN) metricUrl = '1111' expire = '22222' return render_to_response('m1.html',locals())
def az_list(req): apitoken=ks_auth.getToken() if not apitoken: return HttpResponse("Can't get token from keystone") zones=ks_auth.getAvaZones(apitoken,"RegionOne") if not zones: return HttpResponse("Can't get az - compute nodes.") else: json_str=json.dumps(zones) return render_to_response('json.html',locals())
def getServiceStatus(req): apitoken=ks_auth.getToken() if not apitoken: return HttpResponse("Can't get token from keystone") response="" for region in REGIONS: service=ks_auth.getOsServices(apitoken,region) if not service: return HttpResponse("Can't get service status from Region %s" % region) else: response+="<hr><span style='color:blue'>Region:%s</span><br/>" % region for k,v in service.items(): if v=="down": response+=k+"  <span style='color:red'>"+v+"</span><br/>" else: response+=k+"  "+v+"<br/>" return HttpResponse(response)
def getMachineInfoByIp(req,ip): apitoken=ks_auth.getToken() if not apitoken: return HttpResponse("Can't get token from keystone") for region in REGIONS: if not NOVA(region) in nova_list: print "DB %s_nova doesn't configure." % region continue if not NEUTRON(region) in neutron_list: print "DB %s_neutron doesn't configure." % region continue print "---------Start to query instanceId from db(%s)-------------" % region instanceBean=InstanceManager().findInstanceIdByIp(connections[NEUTRON(region)],connections[NOVA(region)],ip) if not instanceBean: print "can't find instance in db(%s) by vir" % region print "------- check if it's a physical machine --------" cnode=ComputeNodeMana().getComputeNodeByIp(ip,connections[NOVA(region)]) if cnode: return HttpResponse("Region(%s),physical machine info:%s" % (region,cnode)) else: return HttpResponse("Region(%s),virtual instance info:%s" % (region,instanceBean)) return HttpResponse("Can't get machine info.")
def getMultiUserNetwork(req,region,tenant_id,networkname): if not region in REGIONS: return HttpResponse("""{"code":500,"message":"X REG."}""") obj=C2cidrManager().getMultiFreecidr(tenant_id,region) if not obj: return HttpResponse("""{"code":500,"message":"Can't find cidr."}""") if not obj["network_id"]: apitoken=ks_auth.getToken() if not apitoken: return HttpResponse("""{"code":500,"message":"Can't get token from keystone"}""") #create network data=ks_auth.createNetwork(apitoken,region,obj["id"],base64.standard_b64decode(networkname),tenant_id) if not data or data.has_key("NeutronError"): return HttpResponse("""{"code":500,"message":"Can't get data from create-network api.","data":"%s"}""" % (None if not data else data)) network=data["network"]["id"] #create subnet data2=ks_auth.createSubnet(apitoken,region,obj["cidr"],network,tenant_id) if not data2 or data2.has_key("NeutronError"): return HttpResponse("""{"code":500,"message":"Can't get data from create-subnet api.","data":"%s"}""" % (None if not data2 else data2)) #update cidr C2cidrManager().useCidr(int(obj["id"]),tenant_id,network,region) return HttpResponse("""{"code":200,"message":"ok","data":"%s"}""" % network) else: return HttpResponse("""{"code":200,"message":"ok","data":"%s"}""" % obj["network_id"])
def index(req,uuid,region): token=ks_auth.getToken() UUID=uuid REGION=region return render_to_response('metric.html',locals())