def user_page_periodic_price(request): try: status=request.session["status"] token_data=request.session["token_data"] status_meter_list, meter_list = ceilometer_api.get_meter_list(token_data['token_id'], token_data["metering"]) form=None flag=True user=token_data['user-id'] except KeyError: messages.warning(request, "You have to authenticate first!") return redirect('/auth_token_user/') try: prices=[] times=[] usr=StackUser.objects.get(user_id=user) cdrs=PriceCdr.objects.filter(user_id=usr.id) cdrs=cdrs.order_by('timestamp').reverse()[:10] for i in cdrs: prices.append(i.price) times.append(i.timestamp) context={'user': user,'prices':prices,'times':times} return render(request,'user_show_periodic.html',context) except PriceCdr.DoesNotExist: messages.warning(request, 'No records for that user.') flag=False except StackUser.DoesNotExist: messages.warning(request, 'You still have not been added to the system. Contact your admin!.') flag=False return HttpResponseRedirect('/user/')
def define_pricing(request,ct): token_data=request.session["token_data"] token_id=token_data.token_id status_pricing, meter_list = ceilometer_api.get_meter_list(token_id, token_data["metering"]) request.session["status_pricing"] = status_pricing request.session["meter_list"] = meter_list context={'status':status_pricing,'meter_list':meter_list} return render(request,'define_pricing.html',context)
def main(argv): print "Hello there. This is a simple periodic counter." logger.info('--------------- \n') logger.info('Starting periodic ') auth_uri = 'http://160.85.4.64:5000' #internal test-setup, replace it with your own value #auth_uri = 'http://160.85.231.233:5000' #internal test-setup, replace it with your own value status, token_data = keystone_api.get_token_v3(auth_uri,False) if status: print 'The authentication was successful.' print '--------------------------------------------------------------------------------------------------------' print 'The authentication token is: ', token_data["token_id"] pom=token_data["token_id"] user=token_data["user-id"] logger.info('Successful authentication for user %s', user) else: print "Authentication was not successful." logger.warn('Authentication not successful') if status: status, meter_list = ceilometer_api.get_meter_list(pom, token_data["metering"]) if status: logger.info('Printing meters') print "The list of available meters are printed next." print '--------------------------------------------------------------------------------------------------------------------------' print '%1s %16s %2s %10s %2s %10s %2s %70s %1s' % ('|','meter-name', '|', 'meter-type', '|', 'meter-unit', '|', 'meter-id', '|') print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(meter_list)): print '%1s %16s %2s %10s %2s %10s %2s %70s %1s' % ('|', meter_list[i]["meter-name"], '|', meter_list[i]["meter-type"], '|', meter_list[i]["meter-unit"], '|', meter_list[i]["meter-id"].strip(), '|') logger.info('Meter list %s', meter_list[i]["meter-name"]) status,meters_used,meters_ids,input,price=pricing(token_data["metering"],meter_list,pom,None) logger.info('Defining pricing function. %s', input) global conn conn = sqlite3.connect(path2+'/meters.db',check_same_thread=False) func=[None]*9 for i in range(len(input)): func[i]=input[i] conn.execute("INSERT INTO PRICING_FUNC (USER_ID,PARAM1,SIGN1,PARAM2,SIGN2,PARAM3,SIGN3,PARAM4,SIGN4,PARAM5) \ VALUES ( '"+ str(user) +"', '"+ str(func[0]) +"','" +str(func[1]) +"','" +str(func[2]) +"','" + str(func[3]) +" ','"+ str(func[4]) +"' ,' "+ str(func[5])+"' ,' "+ str(func[6]) +"' ,' "+ str(func[7])+"' ,' "+str(func[8])+" ')") conn.commit() logger.info('Insert pricing function in database') cursor = conn.execute("SELECT max(ID) from PRICING_FUNC") id_price = cursor.fetchone()[0] if status: time=raw_input("Enter the desired time interval in seconds. ") if time=="": time=10 periodic_counts = [None]*len(meters_used) for i in range(len(meters_used)): periodic_counts[i]=[] periodic_counter(meters_used,token_data["metering"],pom,periodic_counts,0,time,meters_ids,input,meter_list,id_price) logger.info('Starting counter. Time interval is %s ', time) conn.close() return True
def __init__(self, username,password,domain,project,user,time_f,from_date,from_time,end_date,end_time,user_id_stack,name): super(MyThread, self).__init__() auth_uri = 'http://160.85.4.64:5000' conn = sqlite3.connect(path+'/db.sqlite3',check_same_thread=False) self.username=username self.password=password self.domain=domain self.project=project status, token_data = keystone_api.get_token_v3(auth_uri,True,username=username, password=password, domain=domain,project=project) self.daemon = True self.cancelled = False self.token_id=token_data["token_id"] self.token_metering=token_data["metering"] self.user=user #self.user=StackUser.objects.get(id=user) self.from_date=from_date self.from_time=from_time self.end_date=end_date self.end_time=end_time self.time_f=float(time_f)*3600 #self.time_f=float(time_f) self.user_id_stack=user_id_stack status_meter_list, self.meter_list = ceilometer_api.get_meter_list(self.token_id, self.token_metering) self.pricing_list=[] self.meters_used=[] #self.func=PricingFunc.objects.get(user_id=user) cursor=conn.execute("SELECT PARAM1,SIGN1,PARAM2,SIGN2,PARAM3,SIGN3,PARAM4,SIGN4,PARAM5,ID FROM MAIN_MENU_PRICINGFUNC WHERE USER_ID_ID="+str(user)) for row in cursor: self.pricing_list.append(row[0]) self.pricing_list.append(row[1]) self.pricing_list.append(row[2]) self.pricing_list.append(row[3]) self.pricing_list.append(row[4]) self.pricing_list.append(row[5]) self.pricing_list.append(row[6]) self.pricing_list.append(row[7]) self.pricing_list.append(row[8]) self.func=row[9] print("Inside init thread.") conn.commit() conn.close() self.name=name for i in range(len(self.pricing_list)): j=0 while j<len(self.meter_list): if self.pricing_list[i]==self.meter_list[j]["meter-name"]: if self.pricing_list[i] in self.meters_used: continue else: self.meters_used.append(self.pricing_list[i]) break else: j=j+1
class MeterTest(unittest.TestCase): metering="http://160.85.4.10:8777" pom=ApiTest("test_api") status, meter_list = ceilometer_api.get_meter_list(pom.token_id,metering) def test_sample(self): status,sample_list=ceilometer_api.get_meter_samples("network",self.metering,self.pom.token_id,False,self.meter_list) for i in range(len(sample_list)): self.assertEqual(str(sample_list[i]["counter-unit"]),"network") self.assertEqual(str(sample_list[i]["counter-type"]),"gauge") def test_resource(self): status,resources_list=ceilometer_api.get_resources(self.metering,self.pom.token_id,False) for i in range(len(resources_list)): self.assertEqual(str(resources_list[i]["project-id"]),"323936522894416b903d3528fa971537")
def main(argv): print "Hello There. This is a simple test application making a test API call to OpenStack" auth_uri = 'http://160.85.4.64:5000' #internal test-setup, replace it with your own value status, token_data = keystone_api.get_token_v2(auth_uri) if status: print 'The authentication was successful, below are the data we got:' print '--------------------------------------------------------------------------------------------------------' print '%1s %32s %2s %64s %1s' % ('|', 'key', '|', 'value', '|') print '--------------------------------------------------------------------------------------------------------' for key, value in token_data.iteritems(): if key not in {'token-id'}: print '%1s %32s %2s %64s %1s' % ('|', key, '|', value, '|') print '--------------------------------------------------------------------------------------------------------' print 'The authentication token is: ', token_data["token-id"] else: print "Authentication was not successful." if status: status, server_list = compute_api.get_server_list(token_data["token-id"], token_data["nova"]) if status: print "The list of servers are printed next." print server_list status, meter_list = ceilometer_api.get_meter_list(token_data["token-id"], token_data["ceilometer"]) if status: print "The list of available meters are printed next." print '--------------------------------------------------------------------------------------------------------------------------' print '%1s %16s %2s %10s %2s %10s %2s %70s %1s' % ('|','meter-name', '|', 'meter-type', '|', 'meter-unit', '|', 'meter-id', '|') print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(meter_list)): print '%1s %16s %2s %10s %2s %10s %2s %70s %1s' % ('|', meter_list[i]["meter-name"], '|', meter_list[i]["meter-type"], '|', meter_list[i]["meter-unit"], '|', meter_list[i]["meter-id"].strip(), '|') print '--------------------------------------------------------------------------------------------------------------------------' meter_name=raw_input("Enter meter name: ") st,stat_list=ceilometer_api.meter_statistics(meter_name, token_data["ceilometer"],token_data["token-id"],meter_list) if status: print "The statistics for your meters is printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(stat_list)): print "Average: " + str(stat_list[i]["average"]) print "Count: " + str(stat_list[i]["count"]) print "Duration: "+ str(stat_list[i]["duration"]) print "Duration end: " + str(stat_list[i]["duration-end"]) print "Duration start: "+ str(stat_list[i]["duration-start"]) print "Max: " + str(stat_list[i]["max"]) print "Min: " + str(stat_list[i]["min"]) print "Period: " + str(stat_list[i]["period"]) print "Period end: " + str(stat_list[i]["period-end"]) print "Period start: " + str(stat_list[i]["period-start"]) print "Sum: " + str(stat_list[i]["sum"]) print "Unit: " + str(stat_list[i]["unit"]) print "Group by: " + str(stat_list[i]["group-by"]) print '--------------------------------------------------------------------------------------------------------------------------' status,sample_list=ceilometer_api.get_meter_samples(meter_name, token_data["ceilometer"],token_data["token-id"],True,meter_list,False) if status: print '--------------------------------------------------------------------------------------------------------------------------' print "The samples for your meter are printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(sample_list)): print "Counter name: " + str(sample_list[i]["counter-name"]) print "Counter unit: " + str(sample_list[i]["counter-unit"]) print "Counter volume: "+ str(sample_list[i]["counter-volume"]) print "Counter type: " + str(sample_list[i]["counter-type"]) print "Message id: "+ str(sample_list[i]["message-id"]) print "Project id: " + str(sample_list[i]["project-id"]) print "Resource id: " + str(sample_list[i]["resource-id"]) print "Resource metadata: " print sample_list[i]["resource-metadata"] print "Source: " + str(sample_list[i]["source"]) print "Timestamp: " + str(sample_list[i]["timestamp"]) print "User ID: " + str(sample_list[i]["user-id"]) print '--------------------------------------------------------------------------------------------------------------------------' status,resources_list=ceilometer_api.get_resources(token_data["ceilometer"], token_data["token-id"],True) if status: print '--------------------------------------------------------------------------------------------------------------------------' print "The resources for your meter are printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(resources_list)): print "Resource id: " + str(resources_list[i]["resource-id"]) print "Links: " for j in range(len(resources_list[i]["links"])): print "Href: " + str(resources_list[i]["links"][j]["href"]) print "Rel: " + str(resources_list[i]["links"][j]["rel"]) print "Project id: " + str(resources_list[i]["project-id"]) print "Resource metadata: " print resources_list[i]["metadata"] #print "Source: " + str(resources_list[i]["source"]) print "User ID: " + str(resources_list[i]["user-id"]) print '--------------------------------------------------------------------------------------------------------------------------' resource_id=raw_input("Enter resource id: ") status,resources_list=ceilometer_api.get_resources_by_id(token_data["ceilometer"], token_data["token-id"],resource_id) if status: print '--------------------------------------------------------------------------------------------------------------------------' print "The resources for your meter are printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(resources_list)): print "Resource id: " + str(resources_list[i]["resource-id"]) print "Links: " for j in range(len(resources_list[i]["links"])): print "Href: " + str(resources_list[i]["links"][j]["href"]) print "Rel: " + str(resources_list[i]["links"][j]["rel"]) print "Project id: " + str(resources_list[i]["project-id"]) print "Resource metadata: " print resources_list[i]["metadata"] #print "Source: " + str(resources_list[i]["source"]) #print "First sample timestamp: " + str(resources_list[i]["first-sample-timestamp"]) #print "Last sample timestamp: " + str(resources_list[i]["last-sample-timestamp"]) print "User ID: " + str(resources_list[i]["user-id"]) print '--------------------------------------------------------------------------------------------------------------------------' return True
def main(argv): print "Hello There. This is a simple test pricing function." auth_uri = 'http://160.85.4.64:5000' #internal test-setup, replace it with your own value status, token_data = keystone_api.get_token_v3(auth_uri) if status: print 'The authentication was successful.' print '--------------------------------------------------------------------------------------------------------' print 'The authentication token is: ', token_data["token-id"] pom=token_data["token-id"] logger.info('Authentication was successful') else: print "Authentication was not successful." logger.info('Authentication was not successful') if status: status, meter_list = ceilometer_api.get_meter_list(pom, token_data["metering"]) if status: print "The list of available meters are printed next." print '--------------------------------------------------------------------------------------------------------------------------' print '%1s %16s %2s %10s %2s %10s %2s %70s %1s' % ('|','meter-name', '|', 'meter-type', '|', 'meter-unit', '|', 'meter-id', '|') print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(meter_list)): print '%1s %16s %2s %10s %2s %10s %2s %70s %1s' % ('|', meter_list[i]["meter-name"], '|', meter_list[i]["meter-type"], '|', meter_list[i]["meter-unit"], '|', meter_list[i]["meter-id"].strip(), '|') print '--------------------------------------------------------------------------------------------------------------------------' #user defined price function; usage of white space for parsing the data price=0 price_def=raw_input("Define the pricing function. Use only the meters from above and numbers as arguments. Use the following signs: '+' for sum, '-' for substraction, '*' for multiplying, '/' for division or '%' for percentage. Use whitespace in between. ") price_def=price_def.split(" ") if len(price_def)>9: print "You can use only 5 parameters" logger.warn('Pricing function not properly defined') price_def=raw_input("Define the pricing function. Use only the meters from above and numbers as arguments. Use the following signs: '+' for sum, '-' for substraction, '*' for multiplying, '/' for division or '%' for percentage. Use whitespace in between. ") meters_used=[None] for i in range(len(price_def)): j=0 while j<len(meter_list): if price_def[i]==meter_list[j]["meter-name"]: meters_used.append(price_def[i]) print "Enter query arguments." status,sample_list=ceilometer_api.get_meter_samples(price_def[i],token_data["metering"],pom,True,meter_list) logger.info('Getting meter samples') if sample_list==[]: price_def[i]=str(0) #replace the meter name with the metered data for n,m in enumerate(price_def): if m==price_def[i]: for k in range(len(sample_list)): price_def[n]=str(sample_list[k]["counter-volume"]) break else: j=j+1 status_ret=True for i in range(len(price_def)): if i==0: if is_number(price_def[i]): price=price+float(price_def[i]) else: status_ret=False if i%2!=0: if price_def[i] in ["+","-","*","/","%"]: #check if every other parameter is a number and the parameters in between math signs if is_number(price_def[i+1]): x=float(price_def[i+1]) else: status_ret=False break if price_def[i]=="+": price=price+x if price_def[i]=="-": price=price-x if price_def[i]=="*": price=price*x if price_def[i]=="/": if x!=0: price=price/x else: print "Division by zero." logger.warn('Division by zero') status_ret=False if price_def[i]=="%": price=price*x/100.0 print price else: status_ret=False else: continue if status_ret==True: print "The price value is: " + str(price) logger.info('Calculated price is: %s',price) else: print "Error. Poorly defined pricing function." logger.warn('Pricing function not properly defined') return status_ret,meters_used
def main(argv): print "Hello There. This is a simple test application making a test API call to OpenStack" auth_uri = 'http://160.85.4.64:5000' #internal test-setup, replace it with your own value status, token_data = keystone_api.get_token_v3(auth_uri, False) if status: print 'The authentication was successful, below are the data we got:' print '--------------------------------------------------------------------------------------------------------' print '%1s %32s %2s %64s %1s' % ('|', 'key', '|', 'value', '|') print '--------------------------------------------------------------------------------------------------------' for key, value in token_data.iteritems(): if key not in {'token_id'}: print '%1s %32s %2s %64s %1s' % ('|', key, '|', value, '|') print '--------------------------------------------------------------------------------------------------------' print 'The authentication token is: ', token_data["token_id"] pom = token_data["token_id"] else: print "Authentication was not successful." if status: status, tenant_list = keystone_api.get_list_tenants(pom, auth_uri) status, user_list = keystone_api.get_users_per_tenant( pom, auth_uri, '4e9c4e1b93124cdba2a930e98eb26ede') for i in range(len(user_list)): print '%20s %20s' % (user_list[i]["user_id"], user_list[i]["user_name"]) #status, server_list = compute_api.get_server_list(token_data["token-id"], token_data["computev3"]) #if status: # print "The list of servers are printed next." # print server_list status, meter_list = ceilometer_api.get_meter_list( pom, token_data["metering"]) total_price = periodic.daily_count("2014-02-26", 1, "323936522894416b903d3528fa971537") if status: print "The list of available meters are printed next." print '--------------------------------------------------------------------------------------------------------------------------' print '%1s %16s %2s %10s %2s %10s %2s %40s %1s %70s' % ( '|', 'meter-name', '|', 'meter-type', '|', 'meter-unit', '|', 'meter-id', '|', 'resource-id') print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(meter_list)): print '%1s %16s %2s %10s %2s %10s %2s %40s %1s %70s' % ( '|', meter_list[i]["meter-name"], '|', meter_list[i]["meter-type"], '|', meter_list[i]["meter-unit"], '|', meter_list[i]["meter-id"].strip(), '|', meter_list[i]["resource-id"]) print '--------------------------------------------------------------------------------------------------------------------------' meter_name = raw_input("Enter meter name: ") st, stat_list = ceilometer_api.meter_statistics( meter_name, token_data["metering"], pom, meter_list, False) if st: print '--------------------------------------------------------------------------------------------------------------------------' print "The statistics for your meters is printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(stat_list)): print "Average: " + str(stat_list[i]["average"]) print "Count: " + str(stat_list[i]["count"]) print "Duration: " + str(stat_list[i]["duration"]) print "Duration end: " + str(stat_list[i]["duration-end"]) print "Duration start: " + str(stat_list[i]["duration-start"]) print "Max: " + str(stat_list[i]["max"]) print "Min: " + str(stat_list[i]["min"]) print "Period: " + str(stat_list[i]["period"]) print "Period end: " + str(stat_list[i]["period-end"]) print "Period start: " + str(stat_list[i]["period-start"]) print "Sum: " + str(stat_list[i]["sum"]) print "Unit: " + str(stat_list[i]["unit"]) print "Group by: " + str(stat_list[i]["group-by"]) print '--------------------------------------------------------------------------------------------------------------------------' print '--------------------------------------------------------------------------------------------------------------------------' print "Query initialization for meter samples function." status, sample_list = ceilometer_api.get_meter_samples( meter_name, token_data["metering"], pom, True, meter_list, False, "") if status: print '--------------------------------------------------------------------------------------------------------------------------' print "The samples for your meter are printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(sample_list)): print "Counter name: " + str(sample_list[i]["counter-name"]) print "Counter unit: " + str(sample_list[i]["counter-unit"]) print "Counter volume: " + str( sample_list[i]["counter-volume"]) print "Counter type: " + str(sample_list[i]["counter-type"]) print "Message id: " + str(sample_list[i]["message-id"]) print "Project id: " + str(sample_list[i]["project-id"]) print "Resource id: " + str(sample_list[i]["resource-id"]) print "Resource metadata: " print sample_list[i]["resource-metadata"] print "Source: " + str(sample_list[i]["source"]) print "Timestamp: " + str(sample_list[i]["timestamp"]) print "User ID: " + str(sample_list[i]["user-id"]) print '--------------------------------------------------------------------------------------------------------------------------' print '--------------------------------------------------------------------------------------------------------------------------' print "Query initialization for get resources function." status, resources_list = ceilometer_api.get_resources( token_data["metering"], pom, True) if status: print '--------------------------------------------------------------------------------------------------------------------------' print "The resources for your meter are printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(resources_list)): print "Resource id: " + str(resources_list[i]["resource-id"]) print "Links: " for j in range(len(resources_list[i]["links"])): print "Href: " + str(resources_list[i]["links"][j]["href"]) print "Rel: " + str(resources_list[i]["links"][j]["rel"]) print "Project id: " + str(resources_list[i]["project-id"]) print "Resource metadata: " print resources_list[i]["metadata"] #print "Source: " + str(resources_list[i]["source"]) print "User ID: " + str(resources_list[i]["user-id"]) print '--------------------------------------------------------------------------------------------------------------------------' print "Query initialization for get resources by id function." resource_id = raw_input("Enter resource id: ") status, resources_list = ceilometer_api.get_resources_by_id( token_data["metering"], pom, resource_id) if status: print '--------------------------------------------------------------------------------------------------------------------------' print "The resources for your meter are printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(resources_list)): print "Resource id: " + str(resources_list[i]["resource-id"]) print "Links: " for j in range(len(resources_list[i]["links"])): print "Href: " + str(resources_list[i]["links"][j]["href"]) print "Rel: " + str(resources_list[i]["links"][j]["rel"]) print "Project id: " + str(resources_list[i]["project-id"]) print "Resource metadata: " print resources_list[i]["metadata"] #print "Source: " + str(resources_list[i]["source"]) #print "First sample timestamp: " + str(resources_list[i]["first-sample-timestamp"]) #print "Last sample timestamp: " + str(resources_list[i]["last-sample-timestamp"]) print "User ID: " + str(resources_list[i]["user-id"]) print '--------------------------------------------------------------------------------------------------------------------------' return True
def user_page_calculate_price(request): try: status=request.session["status"] token_data=request.session["token_data"] status_meter_list, meter_list = ceilometer_api.get_meter_list(token_data['token_id'], token_data["metering"]) form=None flag=True user=token_data['user-id'] except KeyError: messages.warning(request, "You have to authenticate first!") return redirect('/auth_token_user/') try: usr=StackUser.objects.get(user_id=user) func=PricingFunc.objects.get(user_id=usr.id) pricing_list=[] meters_used=[] pricing_list.append(func.param1) pricing_list.append(func.sign1) pricing_list.append(func.param2) pricing_list.append(func.sign2) pricing_list.append(func.param3) pricing_list.append(func.sign3) pricing_list.append(func.param4) pricing_list.append(func.sign4) pricing_list.append(func.param5) unit=float(func.unit) currency=func.currency for i in range(len(pricing_list)): j=0 while j<len(meter_list): if pricing_list[i]==meter_list[j]["meter-name"]: if pricing_list[i] in meters_used: continue else: meters_used.append(pricing_list[i]) break else: j=j+1 except PricingFunc.DoesNotExist: messages.warning(request, 'You have to define the pricing function first.') flag=False except StackUser.DoesNotExist: messages.warning(request, 'You still have not been added to the system. Contact your admin!.') flag=False if flag==True: if 'calculate' in request.POST: form = forms.UserQueryForm(request.POST) if form.is_valid(): from_date=str(form.cleaned_data["dateStart"]) from_time="00:00:00" to_date=str(form.cleaned_data["dateEnd"]) to_time="23:59:59" price=pricing(meters_used,meter_list,from_date,to_date,from_time,to_time,user,token_data,token_data['token_id'],pricing_list,unit) context={'user': user,'price':price,'currency':currency} return render(request,'user_show_price.html',context) if not form: form=forms.UserQueryForm() context={'user': user,'query_form': form } return render(request,'user_query.html',context) return HttpResponseRedirect('/user/')
def main(argv): print "Hello There. This is a simple test application making a test API call to OpenStack" auth_uri = 'http://160.85.4.64:5000' #internal test-setup, replace it with your own value status, token_data = keystone_api.get_token_v3(auth_uri,False) if status: print 'The authentication was successful, below are the data we got:' print '--------------------------------------------------------------------------------------------------------' print '%1s %32s %2s %64s %1s' % ('|', 'key', '|', 'value', '|') print '--------------------------------------------------------------------------------------------------------' for key, value in token_data.iteritems(): if key not in {'token_id'}: print '%1s %32s %2s %64s %1s' % ('|', key, '|', value, '|') print '--------------------------------------------------------------------------------------------------------' print 'The authentication token is: ', token_data["token_id"] pom=token_data["token_id"] else: print "Authentication was not successful." if status: status,tenant_list=keystone_api.get_list_tenants(pom,auth_uri) status,user_list=keystone_api.get_users_per_tenant(pom,auth_uri,'4e9c4e1b93124cdba2a930e98eb26ede') for i in range(len(user_list)): print '%20s %20s' %(user_list[i]["user_id"], user_list[i]["user_name"]) #status, server_list = compute_api.get_server_list(token_data["token-id"], token_data["computev3"]) #if status: # print "The list of servers are printed next." # print server_list status, meter_list = ceilometer_api.get_meter_list(pom, token_data["metering"]) total_price=periodic.daily_count("2014-02-26",1, "323936522894416b903d3528fa971537") if status: print "The list of available meters are printed next." print '--------------------------------------------------------------------------------------------------------------------------' print '%1s %16s %2s %10s %2s %10s %2s %40s %1s %70s' % ('|','meter-name', '|', 'meter-type', '|', 'meter-unit', '|', 'meter-id', '|','resource-id') print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(meter_list)): print '%1s %16s %2s %10s %2s %10s %2s %40s %1s %70s' % ('|', meter_list[i]["meter-name"], '|', meter_list[i]["meter-type"], '|', meter_list[i]["meter-unit"], '|', meter_list[i]["meter-id"].strip(), '|',meter_list[i]["resource-id"]) print '--------------------------------------------------------------------------------------------------------------------------' meter_name=raw_input("Enter meter name: ") st,stat_list=ceilometer_api.meter_statistics(meter_name, token_data["metering"],pom,meter_list,False) if st: print '--------------------------------------------------------------------------------------------------------------------------' print "The statistics for your meters is printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(stat_list)): print "Average: " + str(stat_list[i]["average"]) print "Count: " + str(stat_list[i]["count"]) print "Duration: "+ str(stat_list[i]["duration"]) print "Duration end: " + str(stat_list[i]["duration-end"]) print "Duration start: "+ str(stat_list[i]["duration-start"]) print "Max: " + str(stat_list[i]["max"]) print "Min: " + str(stat_list[i]["min"]) print "Period: " + str(stat_list[i]["period"]) print "Period end: " + str(stat_list[i]["period-end"]) print "Period start: " + str(stat_list[i]["period-start"]) print "Sum: " + str(stat_list[i]["sum"]) print "Unit: " + str(stat_list[i]["unit"]) print "Group by: " + str(stat_list[i]["group-by"]) print '--------------------------------------------------------------------------------------------------------------------------' print '--------------------------------------------------------------------------------------------------------------------------' print "Query initialization for meter samples function." status,sample_list=ceilometer_api.get_meter_samples(meter_name,token_data["metering"],pom,True,meter_list,False,"") if status: print '--------------------------------------------------------------------------------------------------------------------------' print "The samples for your meter are printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(sample_list)): print "Counter name: " + str(sample_list[i]["counter-name"]) print "Counter unit: " + str(sample_list[i]["counter-unit"]) print "Counter volume: "+ str(sample_list[i]["counter-volume"]) print "Counter type: " + str(sample_list[i]["counter-type"]) print "Message id: "+ str(sample_list[i]["message-id"]) print "Project id: " + str(sample_list[i]["project-id"]) print "Resource id: " + str(sample_list[i]["resource-id"]) print "Resource metadata: " print sample_list[i]["resource-metadata"] print "Source: " + str(sample_list[i]["source"]) print "Timestamp: " + str(sample_list[i]["timestamp"]) print "User ID: " + str(sample_list[i]["user-id"]) print '--------------------------------------------------------------------------------------------------------------------------' print '--------------------------------------------------------------------------------------------------------------------------' print "Query initialization for get resources function." status,resources_list=ceilometer_api.get_resources(token_data["metering"], pom,True) if status: print '--------------------------------------------------------------------------------------------------------------------------' print "The resources for your meter are printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(resources_list)): print "Resource id: " + str(resources_list[i]["resource-id"]) print "Links: " for j in range(len(resources_list[i]["links"])): print "Href: " + str(resources_list[i]["links"][j]["href"]) print "Rel: " + str(resources_list[i]["links"][j]["rel"]) print "Project id: " + str(resources_list[i]["project-id"]) print "Resource metadata: " print resources_list[i]["metadata"] #print "Source: " + str(resources_list[i]["source"]) print "User ID: " + str(resources_list[i]["user-id"]) print '--------------------------------------------------------------------------------------------------------------------------' print "Query initialization for get resources by id function." resource_id=raw_input("Enter resource id: ") status,resources_list=ceilometer_api.get_resources_by_id(token_data["metering"], pom,resource_id) if status: print '--------------------------------------------------------------------------------------------------------------------------' print "The resources for your meter are printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(resources_list)): print "Resource id: " + str(resources_list[i]["resource-id"]) print "Links: " for j in range(len(resources_list[i]["links"])): print "Href: " + str(resources_list[i]["links"][j]["href"]) print "Rel: " + str(resources_list[i]["links"][j]["rel"]) print "Project id: " + str(resources_list[i]["project-id"]) print "Resource metadata: " print resources_list[i]["metadata"] #print "Source: " + str(resources_list[i]["source"]) #print "First sample timestamp: " + str(resources_list[i]["first-sample-timestamp"]) #print "Last sample timestamp: " + str(resources_list[i]["last-sample-timestamp"]) print "User ID: " + str(resources_list[i]["user-id"]) print '--------------------------------------------------------------------------------------------------------------------------' return True
def main(argv): print "Hello There. This is a simple test application making a test API call to OpenStack" auth_uri = 'http://160.85.4.64:5000' #internal test-setup, replace it with your own value status, token_data = keystone_api.get_token_v2(auth_uri) if status: print 'The authentication was successful, below are the data we got:' print '--------------------------------------------------------------------------------------------------------' print '%1s %32s %2s %64s %1s' % ('|', 'key', '|', 'value', '|') print '--------------------------------------------------------------------------------------------------------' for key, value in token_data.iteritems(): if key not in {'token-id'}: print '%1s %32s %2s %64s %1s' % ('|', key, '|', value, '|') print '--------------------------------------------------------------------------------------------------------' print 'The authentication token is: ', token_data["token-id"] else: print "Authentication was not successful." if status: status, server_list = compute_api.get_server_list( token_data["token-id"], token_data["nova"]) if status: print "The list of servers are printed next." print server_list status, meter_list = ceilometer_api.get_meter_list( token_data["token-id"], token_data["ceilometer"]) if status: print "The list of available meters are printed next." print '--------------------------------------------------------------------------------------------------------------------------' print '%1s %16s %2s %10s %2s %10s %2s %70s %1s' % ( '|', 'meter-name', '|', 'meter-type', '|', 'meter-unit', '|', 'meter-id', '|') print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(meter_list)): print '%1s %16s %2s %10s %2s %10s %2s %70s %1s' % ( '|', meter_list[i]["meter-name"], '|', meter_list[i]["meter-type"], '|', meter_list[i]["meter-unit"], '|', meter_list[i]["meter-id"].strip(), '|') print '--------------------------------------------------------------------------------------------------------------------------' meter_name = raw_input("Enter meter name: ") st, stat_list = ceilometer_api.meter_statistics( meter_name, token_data["ceilometer"], token_data["token-id"], meter_list) if status: print "The statistics for your meters is printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(stat_list)): print "Average: " + str(stat_list[i]["average"]) print "Count: " + str(stat_list[i]["count"]) print "Duration: " + str(stat_list[i]["duration"]) print "Duration end: " + str(stat_list[i]["duration-end"]) print "Duration start: " + str( stat_list[i]["duration-start"]) print "Max: " + str(stat_list[i]["max"]) print "Min: " + str(stat_list[i]["min"]) print "Period: " + str(stat_list[i]["period"]) print "Period end: " + str(stat_list[i]["period-end"]) print "Period start: " + str(stat_list[i]["period-start"]) print "Sum: " + str(stat_list[i]["sum"]) print "Unit: " + str(stat_list[i]["unit"]) print "Group by: " + str(stat_list[i]["group-by"]) print '--------------------------------------------------------------------------------------------------------------------------' status, sample_list = ceilometer_api.get_meter_samples( meter_name, token_data["ceilometer"], token_data["token-id"], True, meter_list, False) if status: print '--------------------------------------------------------------------------------------------------------------------------' print "The samples for your meter are printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(sample_list)): print "Counter name: " + str( sample_list[i]["counter-name"]) print "Counter unit: " + str( sample_list[i]["counter-unit"]) print "Counter volume: " + str( sample_list[i]["counter-volume"]) print "Counter type: " + str( sample_list[i]["counter-type"]) print "Message id: " + str(sample_list[i]["message-id"]) print "Project id: " + str(sample_list[i]["project-id"]) print "Resource id: " + str(sample_list[i]["resource-id"]) print "Resource metadata: " print sample_list[i]["resource-metadata"] print "Source: " + str(sample_list[i]["source"]) print "Timestamp: " + str(sample_list[i]["timestamp"]) print "User ID: " + str(sample_list[i]["user-id"]) print '--------------------------------------------------------------------------------------------------------------------------' status, resources_list = ceilometer_api.get_resources( token_data["ceilometer"], token_data["token-id"], True) if status: print '--------------------------------------------------------------------------------------------------------------------------' print "The resources for your meter are printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(resources_list)): print "Resource id: " + str( resources_list[i]["resource-id"]) print "Links: " for j in range(len(resources_list[i]["links"])): print "Href: " + str( resources_list[i]["links"][j]["href"]) print "Rel: " + str( resources_list[i]["links"][j]["rel"]) print "Project id: " + str(resources_list[i]["project-id"]) print "Resource metadata: " print resources_list[i]["metadata"] #print "Source: " + str(resources_list[i]["source"]) print "User ID: " + str(resources_list[i]["user-id"]) print '--------------------------------------------------------------------------------------------------------------------------' resource_id = raw_input("Enter resource id: ") status, resources_list = ceilometer_api.get_resources_by_id( token_data["ceilometer"], token_data["token-id"], resource_id) if status: print '--------------------------------------------------------------------------------------------------------------------------' print "The resources for your meter are printed next." print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(resources_list)): print "Resource id: " + str( resources_list[i]["resource-id"]) print "Links: " for j in range(len(resources_list[i]["links"])): print "Href: " + str( resources_list[i]["links"][j]["href"]) print "Rel: " + str( resources_list[i]["links"][j]["rel"]) print "Project id: " + str( resources_list[i]["project-id"]) print "Resource metadata: " print resources_list[i]["metadata"] #print "Source: " + str(resources_list[i]["source"]) #print "First sample timestamp: " + str(resources_list[i]["first-sample-timestamp"]) #print "Last sample timestamp: " + str(resources_list[i]["last-sample-timestamp"]) print "User ID: " + str(resources_list[i]["user-id"]) print '--------------------------------------------------------------------------------------------------------------------------' return True
def main(argv): print "Hello there. This is a simple periodic counter." logger.info('--------------- \n') logger.info('Starting periodic ') auth_uri = 'http://160.85.4.64:5000' #internal test-setup, replace it with your own value #auth_uri = 'http://160.85.231.233:5000' #internal test-setup, replace it with your own value status, token_data = keystone_api.get_token_v3(auth_uri, False) if status: print 'The authentication was successful.' print '--------------------------------------------------------------------------------------------------------' print 'The authentication token is: ', token_data["token_id"] pom = token_data["token_id"] user = token_data["user-id"] logger.info('Successful authentication for user %s', user) else: print "Authentication was not successful." logger.warn('Authentication not successful') if status: status, meter_list = ceilometer_api.get_meter_list( pom, token_data["metering"]) if status: logger.info('Printing meters') print "The list of available meters are printed next." print '--------------------------------------------------------------------------------------------------------------------------' print '%1s %16s %2s %10s %2s %10s %2s %70s %1s' % ( '|', 'meter-name', '|', 'meter-type', '|', 'meter-unit', '|', 'meter-id', '|') print '--------------------------------------------------------------------------------------------------------------------------' for i in range(len(meter_list)): print '%1s %16s %2s %10s %2s %10s %2s %70s %1s' % ( '|', meter_list[i]["meter-name"], '|', meter_list[i]["meter-type"], '|', meter_list[i]["meter-unit"], '|', meter_list[i]["meter-id"].strip(), '|') logger.info('Meter list %s', meter_list[i]["meter-name"]) status, meters_used, meters_ids, input, price = pricing( token_data["metering"], meter_list, pom, None) logger.info('Defining pricing function. %s', input) global conn conn = sqlite3.connect(path2 + '/meters.db', check_same_thread=False) func = [None] * 9 for i in range(len(input)): func[i] = input[i] conn.execute( "INSERT INTO PRICING_FUNC (USER_ID,PARAM1,SIGN1,PARAM2,SIGN2,PARAM3,SIGN3,PARAM4,SIGN4,PARAM5) \ VALUES ( '" + str(user) + "', '" + str(func[0]) + "','" + str(func[1]) + "','" + str(func[2]) + "','" + str(func[3]) + " ','" + str(func[4]) + "' ,' " + str(func[5]) + "' ,' " + str(func[6]) + "' ,' " + str(func[7]) + "' ,' " + str(func[8]) + " ')") conn.commit() logger.info('Insert pricing function in database') cursor = conn.execute("SELECT max(ID) from PRICING_FUNC") id_price = cursor.fetchone()[0] if status: time = raw_input( "Enter the desired time interval in seconds. ") if time == "": time = 10 periodic_counts = [None] * len(meters_used) for i in range(len(meters_used)): periodic_counts[i] = [] periodic_counter(meters_used, token_data["metering"], pom, periodic_counts, 0, time, meters_ids, input, meter_list, id_price) logger.info('Starting counter. Time interval is %s ', time) conn.close() return True