示例#1
0
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();
示例#2
0
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();
示例#4
0
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();
示例#6
0
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):

		
示例#7
0
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;
示例#8
0
#!/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=''
        traits=temp.traits
        for each2 in traits:
                if(each2['name']=='instance_id'):
示例#9
0
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
示例#10
0
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...";
示例#11
0
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;
示例#12
0
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();