class createKey: def __init__(self): self.aObj = Authentication("msssg"); self.nova = self.aObj.getComputeClient(); self.neutron = self.aObj.getNeutronClient(); self.keystone = self.aObj.getKeystoneClient(); self.glance = self.aObj.getGlanceClient(); self.cclient = self.aObj.getCeilometerClient(); def createKeyPlease(self): keypair_name = "maKey"; self.nova.keypairs.list(); ts = time.time(); st = datetime.datetime.fromtimestamp(ts).strftime('%Y%m%d%H%M%S'); stri = keypair_name+st; print stri; self.nova.keypairs.create(name=stri) def getKeypairsList(self): obj = self.nova.keypairs.list(); keyz = []; for each in obj: keyz.append(each.name); return keyz; # obj = createKey(); # obj.createKeyPlease();
class InstancePreReq: def __init__(self): self.aObj = Authentication("yess"); self.nova = self.aObj.getComputeClient(); self.neutron = self.aObj.getNeutronClient(); self.keystone= self.aObj.getKeystoneClient(); self.glance = self.aObj.getGlanceClient(); self.cclient = self.aObj.getCeilometerClient(); def getAllFlavours(self): obj= self.nova.flavors.list(); flvrs=[]; for each in obj: flvrs.append(each.name); return flvrs; def getAllImages(self): obj= self.nova.images.list(); imgz=[]; for each in obj: imgz.append(each.name); return imgz; def getAllNetworks(self): obj= self.nova.networks.list(); netwrk=[]; for each in obj: netwrk.append(each.label); return netwrk; def getKeypairsList(self): obj= self.nova.keypairs.list(); keyz=[]; for each in obj: keyz.append(each.name); return keyz; def getSecurityList(self): obj= self.nova.security_groups.list(); scrty=[]; for each in obj: scrty.append(each.name); return scrty;
class BillGeneratePreReq: def __init__(self): self.aObj = Authentication("yess"); self.nova = self.aObj.getComputeClient(); self.neutron = self.aObj.getNeutronClient(); self.keystone= self.aObj.getKeystoneClient(); self.glance = self.aObj.getGlanceClient(); self.cclient = self.aObj.getCeilometerClient(); self.dbObj = MongoDatabase(); def getAllBillsCategories(self): checki = self.dbObj.getAllBillCat(); if(checki==False): return False else: return checki; def getAllRunningInstances(self): servers = self.nova.servers.list(); return servers; # obj = BillGeneratePreReq(); # obj.getAllBillsCategories();
class RouterPreReq: def __init__(self): self.aObj = Authentication("yess"); self.nova = self.aObj.getComputeClient(); self.neutron = self.aObj.getNeutronClient(); self.keystone= self.aObj.getKeystoneClient(); self.glance = self.aObj.getGlanceClient(); self.cclient = self.aObj.getCeilometerClient(); def getAllSubnets(self): subnets = self.neutron.list_subnets(); subList=[]; for each in subnets['subnets']: subList.append(each['name']); return subList; def getAllTenants(self): tenants = self.keystone.tenants.list(); tenNames=[]; for each in tenants: tenNames.append(each.name); return tenNames; def getAllNetworks(self): obj= self.nova.networks.list(); netwrk=[]; for each in obj: netwrk.append(each.label); return netwrk;
class createBillCategory: def __init__(self,billName,flvr,price): self.aObj = Authentication("yess"); self.nova = self.aObj.getComputeClient(); self.neutron = self.aObj.getNeutronClient(); self.keystone= self.aObj.getKeystoneClient(); self.glance = self.aObj.getGlanceClient(); self.cclient = self.aObj.getCeilometerClient(); self.price=price; self.billName=billName; self.flvrNames=flvr; self.dbObj = MongoDatabase(); def saveBillCategory(self): dicti={}; try: for f,b in zip(self.flvrNames,self.price): f = f.replace(".","\uff0e"); dicti[f]=b except: print 'exception..' store={"name":self.billName,"type":"flvr_based","priceList":dicti}; print store; self.addToDatabase(store); def addToDatabase(self,data): self.dbObj.addBillCategory(data); # prici={ "m1\\uff0elarge":"50","m1\\uff0esmall":"60","m1\\uff0emini":"70","m1\\uff0exlarge":"80","m1\\uff0etiny":"90" } # obj = createBillCategory("niki_minhaj","flvr_based",prici); # obj.saveBillCategory();
class InstanceBill: def __init__(self,instnc,catg): self.aObj = Authentication("yess"); self.nova = self.aObj.getComputeClient(); self.neutron = self.aObj.getNeutronClient(); self.keystone= self.aObj.getKeystoneClient(); self.glance = self.aObj.getGlanceClient(); self.cclient = self.aObj.getCeilometerClient(); self.inst = instnc; slef.catg = catg; def getInstanceID(self): instanceList = nova.servers.list(search_opts={'all_tenants': 1}); for i in range(0,len(instanceList),1): if(instanceList[i].name==self.inst): return instncID = instanceList[i].id; def getTopSamples(self):
class makeBillPreReq: def __init__(self): self.aObj = Authentication("yess"); self.nova = self.aObj.getComputeClient(); self.neutron = self.aObj.getNeutronClient(); self.keystone = self.aObj.getKeystoneClient(); self.glance = self.aObj.getGlanceClient(); self.cclient = self.aObj.getCeilometerClient(); def getAllFlavours(self): return self.nova.flavors.list(); def getMyFlavourDetails(self,flvrName): flvrs = self.nova.flavors.list(); for each in flvrs: if (each.name==flvrName): return each; return None;
# In[5]: #!/usr/bin/env python from os import environ as env import os from collections import OrderedDict from pprint import pprint from Authentication import * authObj1=Authentication("zaib") nova = authObj1.getComputeClient() neutron = authObj1.getNeutronClient() keystone = authObj1.getKeystoneClient() cclient = authObj1.getCeilometerClient() glance = authObj1.getGlanceClient() class Events: def __init__(self): i=0 def getInstanceName(self,temp): id=''
class Router: def __init__(self,arguments): self.aObj = Authentication("yess"); self.nova = self.aObj.getComputeClient(); self.neutron = self.aObj.getNeutronClient(); self.keystone= self.aObj.getKeystoneClient(); self.glance = self.aObj.getGlanceClient(); self.cclient = self.aObj.getCeilometerClient(); self.args=arguments; def createRouter(self): routerName = self.args[4]; desiredSubnet = self.args[3]; desiredNet = self.args[2]; tenantName = self.args[1]; if (self.checkDuplicate(routerName,tenantName)==False): netId=None; subnetId=None; routerId=None; neti = self.nova.networks.list() for x in neti: if x.label == desiredNet: netId = x.id; break bodyVal= { "router": { "name": routerName, "external_gateway_info": { "network_id": netId, "enable_snat": "True", }, "admin_state_up": "true" } } subnets = self.neutron.list_subnets(); for each in subnets['subnets']: if each['name'] == desiredSubnet: subnetId = each['id'] subNeti = {"subnet_id": subnetId} self.neutron.create_router(body=bodyVal); time.sleep(1); rtrLists = self.neutron.list_routers(); for each in rtrLists['routers']: if each['name'] == routerName: routerId = each['id'] interfaceArg = {} self.neutron.add_interface_router(routerId,body=subNeti); print "Router Created with name ", routerName else: print "Router Already Exists for this user"; def checkDuplicate(self,myName,myTenant): rtrLists = self.neutron.list_routers(); tenant = self.keystone.tenants.list(); for each in tenant: if (each.name==myTenant): myId = each.id; for each in rtrLists['routers']: if ( (each['tenant_id'] == myId) & (each['name'] == myName) ): return True return False
class InstanceCreate: def __init__(self,arguments): self.aObj = Authentication("yess"); self.nova = self.aObj.getComputeClient(); self.neutron = self.aObj.getNeutronClient(); self.keystone= self.aObj.getKeystoneClient(); self.glance = self.aObj.getGlanceClient(); # self.cclient = self.aObj.getCeilometerClient(); self.args=arguments; for each in arguments: print "--->",each def getNetworkId(self): desiredNet = self.args[2]; print "d--->", desiredNet; netId=""; neti = self.nova.networks.list() for each in neti: if each.label==desiredNet: netId = each.id; return netId; def getInstanceName(self): return self.args[6]; def createInstance(self): flvrName= self.args[1]; imageName= self.args[3]; securityGroup = self.args[4]; keyName= self.args[5]; instanceName= self.args[6]; netId = self.getNetworkId(); print netId; stri= "nova boot --flavor {} --image {} --nic net-id={} --security-group {} --key-name {} {}".format(flvrName,imageName,netId,securityGroup,keyName,instanceName) os.system(stri); time.sleep(7) def addSecurityGroups(self): try: securityGroup = self.args[4]; group = self.nova.security_groups.find(name=securityGroup); self.nova.security_group_rules.create(group.id, ip_protocol="tcp" ,from_port=22, to_port=22); self.nova.security_group_rules.create(group.id, ip_protocol="icmp",from_port=-1, to_port=-1); except Exception: print "Exception raised already exist rule"; def assignFloatingIp(self): floating_ip = self.nova.floating_ips.create(self.nova.floating_ip_pools.list()[0].name); ser = self.nova.servers.list(); print len(ser) server=0; print self.args[6]; for each in ser: if(each.name==self.args[6]): server = each; print server.name break; self.nova.servers.add_floating_ip(server,floating_ip.ip); print "Ja bachiyeeaaa Ayashi Maarr...";
class AlarmPreReq: def __init__(self): self.aObj = Authentication("yess"); self.nova = self.aObj.getComputeClient(); self.neutron = self.aObj.getNeutronClient(); self.keystone= self.aObj.getKeystoneClient(); self.glance = self.aObj.getGlanceClient(); self.cclient = self.aObj.getCeilometerClient(); def getServiceName(self,meterName): serviceName='' if(re.match(r'storage', meterName)): serviceName="swift" elif(re.match(r'image',meterName)): serviceName="glance" elif(re.match(r'volume',meterName)): serviceName="cinder" else: serviceName="nova" return serviceName def getAllMeters(self): tenantList=self.keystone.tenants.list(limit=None,marker=None) metersDict={} list1=[] meterList=[] name='' for each1 in tenantList: if(each1.name=='admin'): query0 = [dict(field='project_id', op='eq', value=each1.id)] list1=self.cclient.meters.list(q=query0,limit=2000) temp=[] novaMeters=[] for each in list1: name= self.getServiceName(each.name) if(name=='nova'): temp.append(each.name) novaMeters=list(set(temp)) return novaMeters; def getInstances(self): obj= self.nova.servers.list(); sers=[]; for each in obj: sers.append(each.name); return sers; def getAllStats(self): statsi = ['count','max','sum','avg','min']; return statsi def getAllComparisonOperators(self): compOpr = ['gt','lt','ne','ge','le','eq'] return compOpr; def getAllAlarmList(self): return self.cclient.alarms.list(); def getAllMetersValues(self,alList): instanceList = self.nova.servers.list(search_opts={'all_tenants': 1}); for i in range(0,len(alList)): print '>>--- aList --<<' instName = alList[i].description; mtr = alList[i].threshold_rule['meter_name']; val = self.getMeterValue(instName,mtr); val = self.convertVal(val); alList[i].severity = val; print '-->',val; return alList; def convertVal(self,val): val = str(val); if (val.find("['") != -1): val = val.replace("['",""); val = val.replace("']",""); return val; else: return val; def getInstanceID(self,instName): for i in range(0,len(instanceList),1): name = instanceList[i].name; if( name == instName ): return instanceList[i].id def getMeterValue(self,instName,mtr): obj1 = GetMetersValues(); print "i : {} , mtr: {}".format(instName,mtr); tenant ='admin'; dic=obj1.getSampleVal(mtr,instName,tenant); li=[]; print len(dic); for each in dic: stri=each.counter_name+","+each.resource_id+","+each.timestamp+","+str(each.counter_volume); print '----',each.counter_volume li.append(str(each.counter_volume)); break; return li # obj = AlarmPreReq(); # alList = obj.getAllAlarmList(); # aa = obj.getAllMetersValues(alList); # for each in aa: # print each.name # print '-->',each.severity;
class GenerateBill: def __init__(self,cat,instName): inst = str(instName); cat = str(cat); print 'INST ->', inst; print 'CATG ->', cat; self.aObj = Authentication("yess"); self.nova = self.aObj.getComputeClient(); self.neutron = self.aObj.getNeutronClient(); self.keystone= self.aObj.getKeystoneClient(); self.glance = self.aObj.getGlanceClient(); self.cclient = self.aObj.getCeilometerClient(); self.dbObj = MongoDatabase(); self.cat = cat; self.instName = inst; def getInstanceStartTime(self): obj1=GetInstanceStartTime() startTime = obj1.getEventTime('admin',self.instName) return startTime; def getInstanceTotalRunningTime(self): startTime = self.getInstanceStartTime(); currTime = datetime.utcnow(); print "STime -->> ",startTime print "curr -->> ",currTime hmsStrt = self.getTime(startTime); hmsCurr = self.getTime(currTime); hours=0; minutes=0; seconds=0; if(len(hmsStrt)==3 & len(hmsCurr)==3): hrs = int(hmsStrt[0]); mins = int(hmsStrt[1]); secs = int(hmsStrt[2]); start = timedelta(hours=hrs,minutes=mins,seconds=secs); hrs = int(hmsCurr[0]); mins = int(hmsCurr[1]); secs = int(hmsCurr[2]); end = timedelta(hours=hrs,minutes=mins, seconds=secs) return end - start; def getTime(self,currTime): currTime = str(currTime); if ('T' in currTime): currTime = currTime.replace("T", " "); dati = currTime.split(' '); timi = dati[1].split('.'); hms = timi[0].split(":"); return hms def getDBTime(self,currTime): currTime = str(currTime); if ('T' in currTime): currTime = currTime.replace("T", " "); dati = currTime.split(' '); timi = dati[1].split('.'); return timi[0] def getDate(self,currDate): currDate = str(currDate); if ('T' in currDate): currDate = currDate.replace("T", " "); dati = currDate.split(' '); return dati[0] def getFlavourName(self): ser = self.nova.servers.list(); flv = self.nova.flavors.list(); flvName=""; for each in ser: if(each.name==(self.instName)): for each2 in flv: if (each2.id == each.flavor['id']): flvName = each2.name else: return None; return flvName; def getTotalHours(self,ttime): ttime = str(ttime); hms = ttime.split(":"); hrs = int(hms[0]); mins = int(hms[1]); secs = int(hms[2]); if(secs>0): mins=mins+1; if(mins>=5): hrs=hrs+1; return int(hrs); def getCurrentDate(self): currTime = datetime.utcnow(); currTime = str(currTime); oi = currTime.split(' '); for i in range(0,len(oi)): return oi[i]; def getCurrentTime(self): currTime = datetime.utcnow(); currTime = str(currTime); oi = currTime.split(' '); timi = oi[1].split('.'); return timi[0]; def generateBillPlease(self): flvrName = self.getFlavourName(); print 'Flvr : -->',flvrName ttime = self.getInstanceTotalRunningTime(); print 'inst Time -> ',ttime; hrs = self.getTotalHours(ttime); price = self.dbObj.getCategoryPriceChart(self.cat,flvrName); return self.makeDictionary(hrs,price); def getCategoryPrice(self): flvrName = self.getFlavourName(); price = self.dbObj.getCategoryPriceChart(self.cat,flvrName); return price; def getTaxAmount(self,price): price = int(price); return (price*10)/100; def getTotal(self,amount,tax): amount = int(amount); tax = int(tax); return amount+tax; def makeDictionary(self,hrs,price): price = int(price); money = price*hrs; print 'Hrs -> ' , hrs print 'Price -> ' , price print 'Total Money -> ' , money instncID = self.getInstanceID(self.instName); query={}; query['instance_id'] = instncID; query['consumed_hour'] = hrs; query['category'] = self.cat; query['amount'] = money; currTime = datetime.utcnow(); print "Time --> ", currTime query['timestamp'] = currTime print '** Query Created **' print(query); self.saveToDatabasePlease(query); return query def saveToDatabasePlease(self,dbDict): dbObj = MongoDatabase(); dbObj.addPaidBillToDatabase(dbDict); def getInstanceID(self,nami): ser = self.nova.servers.list(); for each in ser: if (each.name == nami): return each.id; return None; # obj = GenerateBill('billi','bazuka'); # obj.generateBillPlease();