def pricing(meters_used,meter_list,from_date,to_date,from_time,to_time,user_id_stack,token_data,token_id,pricing_list,unit): all_stats=[] time_period=0 total=[None]*len(meters_used) for i in range(len(meters_used)): total[i]=0 for j in range(len(meter_list)): if meters_used[i]==meter_list[j]["meter-name"]: resource_id=meter_list[j]["resource-id"] q=ceilometer_api.set_query(from_date,to_date,from_time,to_time,resource_id,user_id_stack,True) status,stat_list=ceilometer_api.meter_statistics(meters_used[i], token_data["metering"],token_id,meter_list,True,q=q) if stat_list==[]: total[i]+=0 else: if meter_list[j]["meter-type"]=="cumulative": total[i]+=stat_list[0]["max"]-stat_list[0]["min"] if meter_list[j]["meter-type"]=="gauge": t1=datetime.datetime.combine(datetime.datetime.strptime(from_date,"%Y-%m-%d").date(),datetime.datetime.strptime(from_time,"%H:%M:%S").time()) t2=datetime.datetime.combine(datetime.datetime.strptime(to_date,"%Y-%m-%d").date(),datetime.datetime.strptime(to_time,"%H:%M:%S").time()) t=t2-t1 time_period=t.total_seconds() total[i]+=stat_list[0]["average"]*time_period if meter_list[j]["meter-type"]=="delta": total[i]+=stat_list[0]["sum"] all_stats.append(total[i]) for s in range(len(pricing_list)): if(pricing_list[s]==meters_used[i]): pricing_list[s]=total[i] for i in range(len(pricing_list)): if pricing_list[i]==None: pricing_list[i]=0 price=0.0 for i in range(len(pricing_list)): if i==0: if periodic.is_number(str(pricing_list[i])): price=price+float(str(pricing_list[i])) if i%2!=0: if pricing_list[i] in ["+","-","*","/","%"]: if periodic.is_number(str(pricing_list[i+1])): x=float(str(pricing_list[i+1])) else: break if pricing_list[i]=="+": price=price+x if pricing_list[i]=="-": price=price-x if pricing_list[i]=="*": price=price*x if pricing_list[i]=="/": if x!=0: price=price/x if pricing_list[i]=="%": price=price*x/100.0 price=price*unit return price
def get_udr(self,token_id,token_metering,user,meters_used,meter_list,func,web_bool,from_date,from_time,end_date,end_time,user_id_stack): conn = sqlite3.connect(path+'/db.sqlite3',check_same_thread=False) date_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") delta_list=[None]*5 all_stats=[] total=[None]*len(meters_used) new_time="/" for i in range(len(meters_used)): total[i]=0 for j in range(len(meter_list)): if meters_used[i]==meter_list[j]["meter-name"]: resource_id=meter_list[j]["resource-id"] q=ceilometer_api.set_query(from_date,end_date,from_time,end_time,resource_id,user_id_stack,True) status,stat_list=ceilometer_api.meter_statistics(meters_used[i], token_metering,token_id,meter_list,True,q=q) unit=meter_list[j]["meter-unit"] if stat_list==[]: total[i]+=0 else: if meter_list[j]["meter-type"]=="cumulative": total[i]+=stat_list[0]["max"]-stat_list[0]["min"] if meter_list[j]["meter-type"]=="gauge": t1=datetime.datetime.combine(datetime.datetime.strptime(from_date,"%Y-%m-%d").date(),datetime.datetime.strptime(from_time,"%H:%M:%S").time()) t2=datetime.datetime.combine(datetime.datetime.strptime(end_date,"%Y-%m-%d").date(),datetime.datetime.strptime(end_time,"%H:%M:%S").time()) t=t2-t1 time_period=t.total_seconds() total[i]+=stat_list[0]["average"]*time_period if meter_list[j]["meter-type"]=="delta": total[i]+=stat_list[0]["sum"] new_time=stat_list[0]["duration-end"] conn.execute("INSERT INTO MAIN_MENU_METERSCOUNTER(METER_NAME,USER_ID_ID,COUNTER_VOLUME,UNIT,TIMESTAMP) \ VALUES ('"+ str(meters_used[i]) +"' ,' "+ str(user)+"' ,' "+str(total[i])+"' ,' "+str(unit)+"' ,' "+str(date_time)+" ')") #meters_counter=MetersCounter(meter_name=meters_used[i],user_id=user,counter_volume=total[i],unit=unit ,timestamp=date_time) #meters_counter.save() #delta=get_delta_samples(self,token_metering,token_id,user,meters_used[i]) #delta_list[i]=delta for i in range(len(delta_list)): for j in range(len(total)): if i==j: delta_list[i]=total[j] conn.execute("INSERT INTO MAIN_MENU_UDR(USER_ID_ID,TIMESTAMP,PRICING_FUNC_ID_ID,PARAM1,PARAM2,PARAM3,PARAM4,PARAM5) \ VALUES ( '"+ str(user) +"', '"+str(date_time)+"', '"+str(func)+"', '"+ str(delta_list[0]) +"','" +str(delta_list[1]) +"','" +str(delta_list[2]) +"','" + str(delta_list[3]) +" ','"+ str(delta_list[4]) +" ')") # udr=Udr(user_id=user,timestamp=date_time,pricing_func_id=func, param1=delta_list[0], param2=delta_list[1], param3=delta_list[2], param4=delta_list[3], param5=delta_list[4]) # udr.save() #return udr,new_time conn.commit() conn.close() udr={'param1':delta_list[0],'param2':delta_list[1],'param3':delta_list[2],'param4':delta_list[3],'param5':delta_list[4]} return udr,new_time