Exemple #1
0
    def execute_many_cmd_Cosacs(self, address, cmds):
        for item in cmds:

            attributes = {
                'name': '',
                'syntax': item,
                'nature': 'system',
                'status': '',
                'identifier': ''
            }
            cl = OCCIclient(address, '8286', 'COSACS', 'script', attributes)
            cl.Post()

        cosacsStart = {'name': 'cosacs:start'}

        startcmd = OCCIclient(address, '8286', 'COSACS', 'script', cosacsStart)
        startcmd.Post()
def intercloudGW_stop(intercloudGW):
	response=respAction("200","ok")
	"""Implement here your function"""
	print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
	print('                Receiving action STOP intercloudGW                  ')
	#------------------------------------------------linkgw------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#	
	""" Determine server which handle linkgw category """
	attributePUB= {
		'what': 'linkgw'
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])
	

	attribute = {
		'intercloudGW': intercloudGW.node,
		'state': '1',
	}
	conetsOCCI = OCCIclient(publication['host'], publication['port'], 'CO-NETS-PAAS', 'linkgw', attribute)
	listInstance = conetsOCCI.Get()

	for item in listInstance:
        	linkgws = conetsOCCI.GetElement_pathuuid(item)
        	conetsOCCI.host = linkgws['host']
        	conetsOCCI.port = linkgws['port']
        	conetsOCCI.category = linkgws['category']
        	linkgws = conetsOCCI.GetElement(linkgws['uuid'])
		print('Sending STOP to linkgw')
		conetsOCCI.action(linkgws['occi.core.id'], 'stop')

	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	tempintercloudGW={
		'name':intercloudGW.name,
		'node':intercloudGW.node,
		'account':intercloudGW.account,
		'price':intercloudGW.price,
		'state': intercloudGW.state,
	}
	attribute = {
		'state': '0',
	}
	conetsOCCI.category = 'intercloudGW'
        conetsOCCI.attributes = tempintercloudGW
        
	uuidintercloudGW=conetsOCCI.Get()
	conetsOCCI.attributes=attribute
	conetsOCCI.Put(conetsOCCI.GetElement_pathuuid(uuidintercloudGW[0])['uuid'])
	print('Changing the state of the intercloudGW to 0')

	return response
def linkgw_start(linkgw):
    response = respAction("200", "ok")
    """Implement here your function"""
    print(
        '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
    print(
        '                 Receiving action START linkgw                      ')

    #---------------------------------------------------gw-------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle gw category """
    attributePUB = {'what': 'gw'}

    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    attribute = {}
    conetsOCCI = OCCIclient(publication['host'], publication['port'],
                            'CO-NETS-PAAS', 'gw', attribute)

    #--------------------------------------------uuid gw src-----------------------------------------------------------#
    gwsrc = conetsOCCI.GetElement_pathuuid(linkgw.gwsrc)
    addressgwsrc = conetsOCCI.GetElement(gwsrc['uuid'])
    publicaddrgwsrc = addressgwsrc['occi.gw.publicaddr']
    privateaddrgwsrc = addressgwsrc['occi.gw.privateaddr']
    ethernamegwsrc = addressgwsrc['occi.gw.ethername']

    #--------------------------------------------uuid gw dst-----------------------------------------------------------#
    gwdst = conetsOCCI.GetElement_pathuuid(linkgw.gwdst)
    addressgwdst = conetsOCCI.GetElement(gwdst['uuid'])
    publicaddrgwdst = addressgwdst['occi.gw.publicaddr']
    privateaddrgwdst = addressgwdst['occi.gw.privateaddr']
    ethernamegwdst = addressgwdst['occi.gw.ethername']
    #-----------------------------start gateway source and gateway destination-----------------------------------------#

    print('Sending START to gateway source')
    conetsOCCI.action(gwsrc['uuid'], 'start')
    print('Sending START to gateway destination')
    conetsOCCI.action(gwdst['uuid'], 'start')

    #-------------------------------------------------contract---------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle contract category """
    attributePUB = {'what': 'contract'}

    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    attribute = {}
    client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER',
                        'contract', attribute)

    endpointsrc = client.GetElement(
        client.GetElement_pathuuid(linkgw.endpointsrc)['uuid'])
    endpointdst = client.GetElement(
        client.GetElement_pathuuid(linkgw.endpointdst)['uuid'])

    #-------------------------------------------------provider gwsrc---------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle procci provider category """
    attributePUB = {'what': endpointsrc['occi.contract.profile']}

    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    attribute = {}
    client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER',
                        endpointsrc['occi.contract.profile'], attribute)

    #print endpointsrc['occi.contract.provider']
    privateaddrvmsrc = client.GetElement(
        client.GetElement_pathuuid(
            endpointsrc['occi.contract.provider'])['uuid'])
    privateaddrvmsrc = privateaddrvmsrc['occi.' +
                                        endpointsrc['occi.contract.profile'] +
                                        '.privateaddr']

    #-------------------------------------------------provider gwdst---------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle procci provider category """
    attributePUB = {'what': endpointdst['occi.contract.profile']}

    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    attribute = {}
    client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER',
                        endpointdst['occi.contract.profile'], attribute)

    #print endpointdst['occi.contract.provider']
    privateaddrvmdst = client.GetElement(
        client.GetElement_pathuuid(
            endpointdst['occi.contract.provider'])['uuid'])
    privateaddrvmdst = privateaddrvmdst['occi.' +
                                        endpointdst['occi.contract.profile'] +
                                        '.privateaddr']

    gwsrc = gwProcci()
    gwdst = gwProcci()

    templist = privateaddrvmsrc.split('.')
    templist[3] = '0/24'
    privateaddrvmsrc = '.'.join(templist)
    #print privateaddrvmsrc

    templist = privateaddrvmdst.split('.')
    templist[3] = '0/24'
    privateaddrvmdst = '.'.join(templist)
    #print privateaddrvmdst
    ''' Configuration des gateways'''
    gwsrc.configure_protocol_IPSEC(gwsrc, publicaddrgwsrc, ethernamegwsrc,
                                   'IKEgwsrc', 'ESPgwsrc')
    gwdst.configure_protocol_IPSEC(gwdst, publicaddrgwdst, ethernamegwdst,
                                   'IKEgwdst', 'ESPgwdst')
    ''' Connecte les deux gateways'''
    gwsrc.connect_gw(gwsrc, linkgw.addressgresrc, linkgw.prefix,
                     linkgw.tunnelproto, publicaddrgwsrc, publicaddrgwdst,
                     linkgw.authenticationkey, linkgw.addressgredst,
                     privateaddrvmdst)
    gwsrc.connect_gw(gwsrc, linkgw.addressgredst, linkgw.prefix,
                     linkgw.tunnelproto, publicaddrgwdst, publicaddrgwsrc,
                     linkgw.authenticationkey, linkgw.addressgresrc,
                     privateaddrvmsrc)

    return response
def linkgw_stop(linkgw):
    response = respAction("200", "ok")
    """Implement here your function"""
    print(
        '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
    print(
        '                   Receiving action STOP linkgw                     ')

    #---------------------------------------------------gw-------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle gw category """
    attributePUB = {'what': 'gw'}

    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    attribute = {}
    gwOCCI = OCCIclient(publication['host'], publication['port'], 'CO-PARSER',
                        'gw', attribute)

    #--------------------------------------------uuid gw src-----------------------------------------------------------#
    gwsrc = gwOCCI.GetElement_pathuuid(linkgw.gwsrc)
    #--------------------------------------------uuid gw dst-----------------------------------------------------------#
    gwdst = gwOCCI.GetElement_pathuuid(linkgw.gwdst)
    #------------------------------stop gateway source and gateway destination-----------------------------------------#
    print('Sending STOP to gateway source')
    gwOCCI.action(gwsrc['uuid'], 'stop')
    print('Sending STOP to gateway destination')
    gwOCCI.action(gwdst['uuid'], 'stop')

    templinkgw = {
        'name': linkgw.name,
        'intercloudGW': linkgw.intercloudGW,
        'account': linkgw.account,
        'gwsrc': linkgw.gwsrc,
        'gwdst': linkgw.gwdst,
        'tunnelproto': linkgw.tunnelproto,
        'addressgresrc': linkgw.addressgresrc,
        'addressgredst': linkgw.addressgredst,
        'prefix': linkgw.prefix,
        'authenticationkey': linkgw.authenticationkey,
        'endpointsrc': linkgw.endpointsrc,
        'endpointdst': linkgw.endpointdst,
        'state': linkgw.state,
    }

    gwOCCI.category = 'linkgw'
    gwOCCI.attributes = templinkgw

    uuidlinkgw = gwOCCI.Get()
    uuidlinkgw = gwOCCI.GetElement_pathuuid(uuidlinkgw[0])['uuid']

    attribute = {
        'state': '0',
    }

    gwOCCI.attributes = attribute
    gwOCCI.Put(uuidlinkgw)
    print('Changing the state of the link gateway to 0')

    return response
def intercloudGW_start(intercloudGW):
    response = respAction("200", "ok")
    """Implement here your function"""
    print(
        '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
    print(
        '                Receiving action START intercloudGW                 ')

    #---------------------------------------------------intercloudGW---------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle intercloudGW category """
    attributePUB = {'what': 'intercloudGW'}

    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#

    tempintercloudGW = {
        'name': intercloudGW.name,
        'node': intercloudGW.node,
        'account': intercloudGW.account,
        'price': intercloudGW.price,
        'state': intercloudGW.state,
    }

    gwOCCI = OCCIclient(publication['host'], publication['port'],
                        'CO-NETS-PAAS', 'intercloudGW', tempintercloudGW)

    uuidintercloudGW = gwOCCI.Get()[0].replace(' ', '')

    #-------------------------------------------------contract---------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle contract category """
    attributePUB = {'what': 'contract'}

    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    attribute = {
        'provider': uuidintercloudGW,
        'profile': 'intercloudGW',
        'node': intercloudGW.node,
    }
    client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER',
                        'contract', attribute)
    listinstruction = client.GetLinks(
        client.GetElement_pathuuid(client.Get()[0])['uuid'])
    #print listinstruction

    #------------------------------------------------Instruction-------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle instruction category """
    attributePUB = {'what': 'instruction'}

    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    attribute = {}
    client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER',
                        'instruction', attribute)

    listNodeToConnect = []
    for item in listinstruction:
        nodetoConnect = client.GetElement_pathuuid(item)
        client.host = nodetoConnect['host']
        client.port = nodetoConnect['port']
        client.category = nodetoConnect['category']
        listNodeToConnect.append(
            client.GetElement(
                nodetoConnect['uuid'])['occi.instruction.source'])

    listlinkgw = []
    for i in range(len(listNodeToConnect)):
        for j in range(i + 1, len(listNodeToConnect)):
            listlinkgw.append({
                'name': intercloudGW.name,
                'intercloudGW': intercloudGW.node,
                'account': intercloudGW.account,
                'gwsrc': '',
                'gwdst': '',
                'tunnelproto': 'gre',
                'addressgresrc': '10.3.3.1',
                'addressgredst': '10.3.3.2',
                'prefix': '30',
                'authenticationkey': 'test_key_1',
                'endpointsrc': listNodeToConnect[i],
                'endpointdst': listNodeToConnect[j],
                'state': '0',
            })

    #------------------------------------------------linkgw------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle linkgw category """
    attributePUB = {'what': 'linkgw'}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    listuuidlinkgw = []
    for i in listlinkgw:
        conetsOCCI = OCCIclient(publication['host'], publication['port'],
                                'CO-NETS-PAAS', 'linkgw', i)
        uuidlinkgw = conetsOCCI.GetElement_pathuuid(conetsOCCI.Post())['uuid']
        listuuidlinkgw.append(uuidlinkgw)
        print('Sending Post to linkgw')

    for item in listuuidlinkgw:
        print('Sending START to linkgw')
        conetsOCCI.action(item, 'start')

    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    tempintercloudGW = {
        'name': intercloudGW.name,
        'node': intercloudGW.node,
        'account': intercloudGW.account,
        'price': intercloudGW.price,
        'state': intercloudGW.state,
    }
    attribute = {
        'state': '1',
    }
    conetsOCCI.category = 'intercloudGW'
    conetsOCCI.attributes = tempintercloudGW

    uuidintercloudGW = conetsOCCI.Get()
    conetsOCCI.attributes = attribute
    conetsOCCI.Put(conetsOCCI.GetElement_pathuuid(uuidintercloudGW[0])['uuid'])
    print('Changing the state of the intercloudGW to 1')

    return response
def intercloudGW_stop(intercloudGW):
    response = respAction("200", "ok")
    """Implement here your function"""
    print(
        '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
    print(
        '                Receiving action STOP intercloudGW                  ')
    #------------------------------------------------linkgw------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle linkgw category """
    attributePUB = {'what': 'linkgw'}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    attribute = {
        'intercloudGW': intercloudGW.node,
        'state': '1',
    }
    conetsOCCI = OCCIclient(publication['host'], publication['port'],
                            'CO-NETS-PAAS', 'linkgw', attribute)
    listInstance = conetsOCCI.Get()

    for item in listInstance:
        linkgws = conetsOCCI.GetElement_pathuuid(item)
        conetsOCCI.host = linkgws['host']
        conetsOCCI.port = linkgws['port']
        conetsOCCI.category = linkgws['category']
        linkgws = conetsOCCI.GetElement(linkgws['uuid'])
        print('Sending STOP to linkgw')
        conetsOCCI.action(linkgws['occi.core.id'], 'stop')

    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    tempintercloudGW = {
        'name': intercloudGW.name,
        'node': intercloudGW.node,
        'account': intercloudGW.account,
        'price': intercloudGW.price,
        'state': intercloudGW.state,
    }
    attribute = {
        'state': '0',
    }
    conetsOCCI.category = 'intercloudGW'
    conetsOCCI.attributes = tempintercloudGW

    uuidintercloudGW = conetsOCCI.Get()
    conetsOCCI.attributes = attribute
    conetsOCCI.Put(conetsOCCI.GetElement_pathuuid(uuidintercloudGW[0])['uuid'])
    print('Changing the state of the intercloudGW to 0')

    return response
def linkgw_create(linkgw):
	"""Implement here your function"""
	print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
	print('                       Receiving POST linkgw                        ')

	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#    
	attribute = {}
	client = OCCIclient(' ', ' ', ' ', ' ', attribute)
	parametersrc = client.GetElement_pathuuid(linkgw.endpointsrc)
	client.host = parametersrc['host']
	client.port = parametersrc['port']
	client.category = parametersrc['category']
	client.GetElement(parametersrc['uuid'])
	providergwsrc = client.GetElement(parametersrc['uuid'])['occi.contract.profile']
	print('The gw source provider is: '+providergwsrc)

	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#    
	parameterdst = client.GetElement_pathuuid(linkgw.endpointdst)
	client.host = parameterdst['host']
	client.port = parameterdst['port']
	client.category = parameterdst['category']
	client.GetElement(parameterdst['uuid'])
	providergwdst = client.GetElement(parameterdst['uuid'])['occi.contract.profile']
	print('The gw destination provider is: '+providergwdst)
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
  
	#----------------------------------------------------gw------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#	
	""" Determine server which handle linkgw category """
	attributePUB= {
		'what': 'gw'
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])
  
	attribute={
		'provider_type': providergwsrc
	}
	client = OCCIclient(publication['host'], publication['port'], 'CO-NET-PAAS', 'gw', attribute)
	listInstance = client.Get()
	if len(listInstance)==0:
		gw={
			'name': linkgw.name,
			'publicaddr': '',
			'privateaddr': '',
			'ethername': 'eth0',
			'intercloudGW': linkgw.intercloudGW,
			'contract': '',
			'provider_type': providergwsrc,
			'provider_platform': '',
			'connection': '1',
			'account': linkgw.account,
			'state': '0',
        	}
		client.attributes = gw
		print('Creating the first gateway in the ' + providergwsrc + ' provider')
		linkgw.gwsrc=client.Post()
	else:
		#---------------------------Incremente the number of connection in gwsrc-------------------------------------------#
		#------------------------------------------------------------------------------------------------------------------#
		linkgw.gwsrc = listInstance[0]
		gwsrc = client.GetElement_pathuuid(listInstance[0])
		client.host = gwsrc['host']
		client.port = gwsrc['port']
		client.category = gwsrc['category']
		client.GetElement(gwsrc['uuid'])
		nbconnection = client.GetElement(gwsrc['uuid'])['occi.gw.connection']
		print('The number of connection in gateway source is: '+str(int(nbconnection)+1))
		attributes = {
			'connection': str(int(nbconnection)+1)
		}
		client.attributes = attributes
		client.Put(gwsrc['uuid'])
		print('Incrementing the number of connection in gateway source')
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#    
	attribute={
		'provider_type': providergwdst
	}
	client = OCCIclient(publication['host'], publication['port'], 'CO-NET-PAAS', 'gw', attribute)
	listInstance = client.Get()
	if len(listInstance)==0:
		gw={
			'name': linkgw.name,
			'publicaddr': '',
			'privateaddr': '',
			'ethername': 'eth0',
			'intercloudGW': linkgw.intercloudGW,
			'contract': '',
			'provider_type': providergwdst,
			'provider_platform': '',
			'connection': '1',
			'account': linkgw.account,
			'state': '0',
		}
		client.attributes = gw
		linkgw.gwdst=client.Post()
		print('Creating the first gateway in the ' + providergwdst + ' provider')

	else:
		#---------------------------Incremente the number of connection in gwdst-------------------------------------------#
		#------------------------------------------------------------------------------------------------------------------#
		linkgw.gwdst = listInstance[0]
		gwdst = client.GetElement_pathuuid(listInstance[0])
		client.host = gwdst['host']
		client.port = gwdst['port']
		client.category = gwdst['category']
		client.GetElement(gwdst['uuid'])
		nbconnection = client.GetElement(gwdst['uuid'])['occi.gw.connection']
		print('The number of connection in gateway destination is: '+str(int(nbconnection)+1))
		attributes = {
			'connection': str(int(nbconnection)+1)
		}
		client.attributes = attributes
		client.Put(gwdst['uuid'])
		print('Incrementing the number of connection in gateway destination')
	linkgw.state='1'



	return linkgw
Exemple #8
0
def gw_start(gw):
	response=respAction("200","ok")
	"""Implement here your function"""
	print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
	print('                     Receiving action START gw                      ')

	#-------------------------------------------------contract---------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle contract category """
	attributePUB= {
		'what': 'contract'
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	attribute = {}
	client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', 'contract', attribute)

	#----------------------------------------------start Node----------------------------------------------------------#
	gwcontract = client.GetElement_pathuuid(gw.contract)
	print('Sending START to the contract of the gateway source')
	client.action(gwcontract['uuid'], 'start')
	gwcontract = client.GetElement(gwcontract['uuid'])

	#-------------------------------------------------provider gw------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle procci provider category """
	attributePUB= {
		'what': gwcontract['occi.contract.profile']
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	attribute = {}
	client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', gwcontract['occi.contract.profile'], attribute)

	addressgw = client.GetElement(client.GetElement_pathuuid(gwcontract['occi.contract.provider'])['uuid'])
	gwprivateaddr = addressgw['occi.'+ gwcontract['occi.contract.profile'] +'.privateaddr']
	gwpublicaddr = addressgw['occi.'+ gwcontract['occi.contract.profile'] +'.publicaddr']

	print('The private address of the gateway is: '+gwprivateaddr)
	print('The public address of the gateway is: '+gwpublicaddr)

	#---------------------------------------------------gw-------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle gw category """
	attributePUB= {
		'what': 'gw'
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])

	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	tempgw={
		'name':gw.name,
		'publicaddr':gw.publicaddr,
		'privateaddr':gw.privateaddr,
		'ethername':gw.ethername,
		'intercloudGW': gw.intercloudGW,
		'contract':gw.contract,
		'provider_type':gw.provider_type,
		'provider_platform':gw.provider_platform,
		'connection':gw.connection,
		'account':gw.account,
		'state':gw.state,
	}
	attribute = {
		'publicaddr': gwpublicaddr,
		'privateaddr': gwprivateaddr,
		'state': '1',
	}
	gwOCCI = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', 'gw', tempgw)

	uuidgw=gwOCCI.Get()
	gwOCCI.attributes=attribute
	gwOCCI.Put(gwOCCI.GetElement_pathuuid(uuidgw[0])['uuid'])
	print('updating the gateway category with the public and private address')


	return response
def gw_stop(gw):
	response=respAction("200","ok")
	"""Implement here your function"""
	print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
	print('                     Receiving action STOP gw                       ')

	#---------------------------------------------------gw-------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle gw category """
	attributePUB= {
		'what': 'gw'
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#

	tempgw={
		'name':gw.name,
		'publicaddr':gw.publicaddr,
		'privateaddr':gw.privateaddr,
		'ethername':gw.ethername,
		'intercloudGW': gw.intercloudGW,
		'contract':gw.contract,
		'provider_type':gw.provider_type,
		'provider_platform':gw.provider_platform,
		'connection':gw.connection,
		'account':gw.account,
		'state':gw.state,
	}

	gwOCCI = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', 'gw', tempgw)
	uuidgw=gwOCCI.Get()
	uuidgw=gwOCCI.GetElement_pathuuid(uuidgw[0])['uuid']
	nbconnection = gwOCCI.GetElement(uuidgw)['occi.gw.connection']

	if int(nbconnection) > 0:
		attributes = {
			'connection': str(int(nbconnection)-1)
		}
		gwOCCI.attributes = attributes
		gwOCCI.Put(uuidgw)
		print('decrement the number of connection to :'+attributes['connection'])


	if int(nbconnection) == 1:
		#-------------------------------------------------contract---------------------------------------------------------#
		#------------------------------------------------------------------------------------------------------------------#
		#------------------------------------------------------------------------------------------------------------------#
		""" Determine server which handle contract category """
		attributePUB= {
			'what': 'contract'
		}
		client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
		publication = client.GetElement_pathuuid(client.Get()[0])
		client.host = publication['host']
		client.port = publication['port']
		publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


		attribute = {}
		client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', 'contract', attribute)

		#----------------------------------------------stop Node----------------------------------------------------------#
		gwcontract = client.GetElement_pathuuid(gw.contract)
		print('the number of connection = 0 ==> stopping the gateway  ')

		client.action(gwcontract['uuid'], 'stop')
		gwcontract = client.GetElement(gwcontract['uuid'])


		attribute = {
			'publicaddr': '',
			'privateaddr': '',
			'state': '0',
		}

		gwOCCI.attributes=attribute
		gwOCCI.Put(uuidgw)
		print('Changing the state of the gateway to 0')

	return response
def linkgw_start(linkgw):
	response=respAction("200","ok")
	"""Implement here your function"""
	print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
	print('                 Receiving action START linkgw                      ')


	#---------------------------------------------------gw-------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle gw category """
	attributePUB= {
		'what': 'gw'
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])

	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	attribute = {}
	conetsOCCI = OCCIclient(publication['host'], publication['port'], 'CO-NETS-PAAS', 'gw', attribute)


	#--------------------------------------------uuid gw src-----------------------------------------------------------#
	gwsrc = conetsOCCI.GetElement_pathuuid(linkgw.gwsrc)
	addressgwsrc = conetsOCCI.GetElement(gwsrc['uuid'])
	publicaddrgwsrc = addressgwsrc['occi.gw.publicaddr']
	privateaddrgwsrc = addressgwsrc['occi.gw.privateaddr']
	ethernamegwsrc = addressgwsrc['occi.gw.ethername']

	#--------------------------------------------uuid gw dst-----------------------------------------------------------#
	gwdst = conetsOCCI.GetElement_pathuuid(linkgw.gwdst)
	addressgwdst = conetsOCCI.GetElement(gwdst['uuid'])
	publicaddrgwdst = addressgwdst['occi.gw.publicaddr']
	privateaddrgwdst = addressgwdst['occi.gw.privateaddr']
	ethernamegwdst = addressgwdst['occi.gw.ethername']
	#-----------------------------start gateway source and gateway destination-----------------------------------------#

	print('Sending START to gateway source')
	conetsOCCI.action(gwsrc['uuid'], 'start')
	print('Sending START to gateway destination')
	conetsOCCI.action(gwdst['uuid'], 'start')



	#-------------------------------------------------contract---------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle contract category """
	attributePUB= {
		'what': 'contract'
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	attribute = {}
	client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', 'contract', attribute)

	endpointsrc = client.GetElement(client.GetElement_pathuuid(linkgw.endpointsrc)['uuid'])
	endpointdst = client.GetElement(client.GetElement_pathuuid(linkgw.endpointdst)['uuid'])


	#-------------------------------------------------provider gwsrc---------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle procci provider category """
	attributePUB= {
		'what': endpointsrc['occi.contract.profile']
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	attribute = {}
	client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', endpointsrc['occi.contract.profile'], attribute)

	#print endpointsrc['occi.contract.provider']
	privateaddrvmsrc = client.GetElement(client.GetElement_pathuuid(endpointsrc['occi.contract.provider'])['uuid'])
	privateaddrvmsrc = privateaddrvmsrc['occi.'+ endpointsrc['occi.contract.profile'] +'.privateaddr']

	#-------------------------------------------------provider gwdst---------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle procci provider category """
	attributePUB= {
		'what': endpointdst['occi.contract.profile']
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	attribute = {}
	client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', endpointdst['occi.contract.profile'], attribute)

	#print endpointdst['occi.contract.provider']
	privateaddrvmdst = client.GetElement(client.GetElement_pathuuid(endpointdst['occi.contract.provider'])['uuid'])
	privateaddrvmdst = privateaddrvmdst['occi.'+ endpointdst['occi.contract.profile'] +'.privateaddr']




	gwsrc = gwProcci()
	gwdst = gwProcci()

	templist = privateaddrvmsrc.split('.')
	templist[3] = '0/24'
	privateaddrvmsrc = '.'.join(templist)
	#print privateaddrvmsrc

	templist = privateaddrvmdst.split('.')
	templist[3] = '0/24'
	privateaddrvmdst = '.'.join(templist)
	#print privateaddrvmdst

	''' Configuration des gateways'''
	gwsrc.configure_protocol_IPSEC(gwsrc, publicaddrgwsrc, ethernamegwsrc, 'IKEgwsrc', 'ESPgwsrc')
	gwdst.configure_protocol_IPSEC(gwdst, publicaddrgwdst, ethernamegwdst, 'IKEgwdst', 'ESPgwdst')

	''' Connecte les deux gateways'''
	gwsrc.connect_gw(gwsrc, linkgw.addressgresrc, linkgw.prefix, linkgw.tunnelproto, publicaddrgwsrc, publicaddrgwdst, linkgw.authenticationkey, linkgw.addressgredst, privateaddrvmdst)
	gwsrc.connect_gw(gwsrc, linkgw.addressgredst, linkgw.prefix, linkgw.tunnelproto, publicaddrgwdst, publicaddrgwsrc, linkgw.authenticationkey, linkgw.addressgresrc, privateaddrvmsrc)


	return response
def linkgw_stop(linkgw):
	response=respAction("200","ok")
	"""Implement here your function"""
	print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
	print('                   Receiving action STOP linkgw                     ')

	#---------------------------------------------------gw-------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle gw category """
	attributePUB= {
		'what': 'gw'
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])

	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	attribute = {}
	gwOCCI = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', 'gw', attribute)

	#--------------------------------------------uuid gw src-----------------------------------------------------------#
	gwsrc = gwOCCI.GetElement_pathuuid(linkgw.gwsrc)
	#--------------------------------------------uuid gw dst-----------------------------------------------------------#
	gwdst = gwOCCI.GetElement_pathuuid(linkgw.gwdst)
	#------------------------------stop gateway source and gateway destination-----------------------------------------#
	print('Sending STOP to gateway source')
	gwOCCI.action(gwsrc['uuid'], 'stop')
	print('Sending STOP to gateway destination')
	gwOCCI.action(gwdst['uuid'], 'stop')
	

	templinkgw={
		'name':linkgw.name,
		'intercloudGW':linkgw.intercloudGW,
		'account':linkgw.account,
		'gwsrc':linkgw.gwsrc,
		'gwdst': linkgw.gwdst,
		'tunnelproto':linkgw.tunnelproto,
		'addressgresrc':linkgw.addressgresrc,
		'addressgredst':linkgw.addressgredst,
		'prefix':linkgw.prefix,
		'authenticationkey':linkgw.authenticationkey,
		'endpointsrc':linkgw.endpointsrc,
		'endpointdst':linkgw.endpointdst,
		'state':linkgw.state,
	}

	gwOCCI.category = 'linkgw'
	gwOCCI.attributes=templinkgw

	uuidlinkgw=gwOCCI.Get()
	uuidlinkgw=gwOCCI.GetElement_pathuuid(uuidlinkgw[0])['uuid']

	attribute = {
		'state': '0',
	}

	gwOCCI.attributes=attribute
	gwOCCI.Put(uuidlinkgw)
	print('Changing the state of the link gateway to 0')



	return response
Exemple #12
0
def linkgw_create(linkgw):
    """Implement here your function"""
    print(
        '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
    print(
        '                       Receiving POST linkgw                        ')

    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    attribute = {}
    client = OCCIclient(' ', ' ', ' ', ' ', attribute)
    parametersrc = client.GetElement_pathuuid(linkgw.endpointsrc)
    client.host = parametersrc['host']
    client.port = parametersrc['port']
    client.category = parametersrc['category']
    client.GetElement(parametersrc['uuid'])
    providergwsrc = client.GetElement(
        parametersrc['uuid'])['occi.contract.profile']
    print('The gw source provider is: ' + providergwsrc)

    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    parameterdst = client.GetElement_pathuuid(linkgw.endpointdst)
    client.host = parameterdst['host']
    client.port = parameterdst['port']
    client.category = parameterdst['category']
    client.GetElement(parameterdst['uuid'])
    providergwdst = client.GetElement(
        parameterdst['uuid'])['occi.contract.profile']
    print('The gw destination provider is: ' + providergwdst)
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#

    #----------------------------------------------------gw------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle linkgw category """
    attributePUB = {'what': 'gw'}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    attribute = {'provider_type': providergwsrc}
    client = OCCIclient(publication['host'], publication['port'],
                        'CO-NET-PAAS', 'gw', attribute)
    listInstance = client.Get()
    if len(listInstance) == 0:
        gw = {
            'name': linkgw.name,
            'publicaddr': '',
            'privateaddr': '',
            'ethername': 'eth0',
            'intercloudGW': linkgw.intercloudGW,
            'contract': '',
            'provider_type': providergwsrc,
            'provider_platform': '',
            'connection': '1',
            'account': linkgw.account,
            'state': '0',
        }
        client.attributes = gw
        print('Creating the first gateway in the ' + providergwsrc +
              ' provider')
        linkgw.gwsrc = client.Post()
    else:
        #---------------------------Incremente the number of connection in gwsrc-------------------------------------------#
        #------------------------------------------------------------------------------------------------------------------#
        linkgw.gwsrc = listInstance[0]
        gwsrc = client.GetElement_pathuuid(listInstance[0])
        client.host = gwsrc['host']
        client.port = gwsrc['port']
        client.category = gwsrc['category']
        client.GetElement(gwsrc['uuid'])
        nbconnection = client.GetElement(gwsrc['uuid'])['occi.gw.connection']
        print('The number of connection in gateway source is: ' +
              str(int(nbconnection) + 1))
        attributes = {'connection': str(int(nbconnection) + 1)}
        client.attributes = attributes
        client.Put(gwsrc['uuid'])
        print('Incrementing the number of connection in gateway source')
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    attribute = {'provider_type': providergwdst}
    client = OCCIclient(publication['host'], publication['port'],
                        'CO-NET-PAAS', 'gw', attribute)
    listInstance = client.Get()
    if len(listInstance) == 0:
        gw = {
            'name': linkgw.name,
            'publicaddr': '',
            'privateaddr': '',
            'ethername': 'eth0',
            'intercloudGW': linkgw.intercloudGW,
            'contract': '',
            'provider_type': providergwdst,
            'provider_platform': '',
            'connection': '1',
            'account': linkgw.account,
            'state': '0',
        }
        client.attributes = gw
        linkgw.gwdst = client.Post()
        print('Creating the first gateway in the ' + providergwdst +
              ' provider')

    else:
        #---------------------------Incremente the number of connection in gwdst-------------------------------------------#
        #------------------------------------------------------------------------------------------------------------------#
        linkgw.gwdst = listInstance[0]
        gwdst = client.GetElement_pathuuid(listInstance[0])
        client.host = gwdst['host']
        client.port = gwdst['port']
        client.category = gwdst['category']
        client.GetElement(gwdst['uuid'])
        nbconnection = client.GetElement(gwdst['uuid'])['occi.gw.connection']
        print('The number of connection in gateway destination is: ' +
              str(int(nbconnection) + 1))
        attributes = {'connection': str(int(nbconnection) + 1)}
        client.attributes = attributes
        client.Put(gwdst['uuid'])
        print('Incrementing the number of connection in gateway destination')
    linkgw.state = '1'

    return linkgw
Exemple #13
0
def gw_create(gw):
    """Implement here your function"""
    """Implement here your function"""
    print(
        '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
    print(
        '                         Receiving POST gw                          ')

    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    attribute = {}
    client = OCCIclient('', '', 'CO-PROCCI', '', attribute)
    node = client.GetElement_pathuuid(gw.intercloudGW)
    client.host = node['host']
    client.port = node['port']
    client.category = node['category']
    node = client.GetElement(node['uuid'])
    infrastructure = node['occi.node.infrastructure']
    image = node['occi.node.image']
    firewall = node['occi.node.firewall']
    accsessnode = node['occi.node.access']
    scopenode = node['occi.node.scope']
    typenode = node['occi.node.type']

    infra = client.GetElement_pathuuid(infrastructure)
    client.host = infra['host']
    client.port = infra['port']
    client.category = infra['category']
    infra = client.GetElement(infra['uuid'])

    img = client.GetElement_pathuuid(image)
    client.host = img['host']
    client.port = img['port']
    client.category = img['category']
    img = client.GetElement(img['uuid'])

    fire = client.GetElement_pathuuid(firewall)
    client.host = fire['host']
    client.port = fire['port']
    client.category = fire['category']
    fire = client.GetElement(fire['uuid'])

    #-------------------------------------------Infrastructure---------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    compute = infra['occi.infrastructure.compute']
    compute = client.GetElement_pathuuid(compute)
    client.host = compute['host']
    client.port = compute['port']
    client.category = compute['category']
    compute = client.GetElement(compute['uuid'])
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle compute category """
    attributePUB = {'what': 'compute'}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    archi = compute['occi.compute.architecture']
    tempdict = {
        'name': gw.name,
        'architecture': archi,
        'cores': compute['occi.compute.cores'],
        'speed': compute['occi.compute.speed'],
        'memory': compute['occi.compute.memory']
    }
    testPost = OCCIclient(publication['host'], publication['port'],
                          'CO-PROCCI', 'compute', tempdict)
    compute = testPost.Post()
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    network = infra['occi.infrastructure.network']
    network = client.GetElement_pathuuid(network)
    client.host = network['host']
    client.port = network['port']
    client.category = network['category']
    network = client.GetElement(network['uuid'])
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle network category """
    attributePUB = {'what': 'network'}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    tempdict = {
        'name': network['occi.network.name'],
        'label': network['occi.network.label'],
        'vlan': network['occi.network.vlan']
    }
    testPost = OCCIclient(publication['host'], publication['port'], 'CO-NETS',
                          'network', tempdict)
    network = testPost.Post()
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    storage = infra['occi.infrastructure.storage']
    storage = client.GetElement_pathuuid(storage)
    client.host = storage['host']
    client.port = storage['port']
    client.category = storage['category']
    storage = client.GetElement(storage['uuid'])
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle storage category """
    attributePUB = {'what': 'storage'}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    tempdict = {'name': gw.name, 'size': storage['occi.storage.size']}
    testPost = OCCIclient(publication['host'], publication['port'],
                          'CO-PROCCI', 'storage', tempdict)
    storage = testPost.Post()
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle infrastructure category """
    attributePUB = {'what': 'infrastructure'}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    tempdict = {
        'name': gw.name,
        'compute': compute,
        'network': network,
        'storage': storage
    }
    testPost = OCCIclient(publication['host'], publication['port'],
                          'CO-PROCCI', 'infrastructure', tempdict)
    infrastructure = testPost.Post()

    #--------------------------------------------------Image-----------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    system = img['occi.image.system']
    system = client.GetElement_pathuuid(system)
    client.host = system['host']
    client.port = system['port']
    client.category = system['category']
    system = client.GetElement(system['uuid'])
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle system category """
    attributePUB = {'what': 'system'}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])
    """ Post a system category """
    tempdict = {'name': system['occi.system.name']}
    testPost = OCCIclient(publication['host'], publication['port'], 'CO-EZVM',
                          'system', tempdict)
    system = testPost.Post()
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle image category """
    attributePUB = {'what': 'image'}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])
    """ Post a image category """
    tempdict = {'name': gw.name, 'system': system}
    testPost = OCCIclient(publication['host'], publication['port'], 'CO-EZVM',
                          'image', tempdict)
    image = testPost.Post()

    #-------------------------------------------------Firewall---------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle firewall category """
    attributePUB = {'what': 'firewall'}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])
    """ Post a firewall category """
    tempdict = {}
    OCCIfirewall = OCCIclient(publication['host'], publication['port'],
                              'CO-NETS', 'firewall', tempdict)
    firewall = OCCIfirewall.Post()

    #---------------------------------------------------node-----------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle node category """
    attributePUB = {'what': 'node'}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    tempdict = {
        'name': gw.name,
        'provider': gw.provider_type,
        'infrastructure': infrastructure,
        'image': image,
        'access': accsessnode,
        'scope': scopenode,
        'type': typenode,
        'firewall': firewall
    }
    testPost = OCCIclient(publication['host'], publication['port'],
                          'CO-PROCCI', 'node', tempdict)
    node = testPost.Post()
    """ Update firewall """
    OCCIfirewall.attributes = {'node': node}
    OCCIfirewall.Put(OCCIfirewall.GetElement_pathuuid(firewall)['uuid'])

    #------------------------------------------------Provisionning-----------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle opennebula category """
    attributePUB = {'what': gw.provider_type}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    profile = client.GetElement_pathuuid(gw.account)
    client.host = profile['host']
    client.port = profile['port']
    client.category = profile['category']
    profile = client.GetElement(profile['uuid'])['occi.account.name']
    tempdict = {
        'name': gw.name,
        'flavor': 'small',
        'architecture': archi,
        'node': node,
        'account': gw.account,
        'profile': profile
    }
    testPost = OCCIclient(publication['host'], publication['port'],
                          'CO-PROCCI', gw.provider_type, tempdict)
    provider = testPost.Post()

    #--------------------------------------------------Contract--------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------------------------------------------#
    """ Determine server which handle contract category """
    attributePUB = {'what': 'contract'}
    client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication',
                        attributePUB)
    publication = client.GetElement_pathuuid(client.Get()[0])
    client.host = publication['host']
    client.port = publication['port']
    publication = client.GetElement_pathuuid(
        client.GetElement(publication['uuid'])['occi.publication.why'])

    tempdict = {
        'name': gw.name,
        'node': node,
        'provider': provider,
        'profile': gw.provider_type,
        'access': accsessnode,
        'scope': scopenode,
        'type': typenode
    }
    testPost = OCCIclient(publication['host'], publication['port'],
                          'CO-PROCCI', 'contract', tempdict)
    contract = testPost.Post()
    gw.contract = contract
    print('Creating a contract for this gateway')

    return gw
def intercloudGW_start(intercloudGW):
	response=respAction("200","ok")
	"""Implement here your function"""
	print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
	print('                Receiving action START intercloudGW                 ')


	#---------------------------------------------------intercloudGW---------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle intercloudGW category """
	attributePUB= {
		'what': 'intercloudGW'
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])

	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#

	tempintercloudGW={
		'name':intercloudGW.name,
		'node':intercloudGW.node,
		'account':intercloudGW.account,
		'price': intercloudGW.price,
		'state':intercloudGW.state,
	}

	gwOCCI = OCCIclient(publication['host'], publication['port'], 'CO-NETS-PAAS', 'intercloudGW', tempintercloudGW)

	uuidintercloudGW=gwOCCI.Get()[0].replace(' ','')
	
	#-------------------------------------------------contract---------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle contract category """
	attributePUB= {
		'what': 'contract'
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	attribute = {
		'provider': uuidintercloudGW,
		'profile': 'intercloudGW',
		'node':intercloudGW.node,
	} 
	client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', 'contract', attribute)
	listinstruction=client.GetLinks(client.GetElement_pathuuid(client.Get()[0])['uuid'])
	#print listinstruction


	#------------------------------------------------Instruction-------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#    
	""" Determine server which handle instruction category """
	attributePUB= {
		'what': 'instruction'
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])

	attribute = {}
	client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', 'instruction', attribute)

	listNodeToConnect = []
	for item in listinstruction:
		nodetoConnect = client.GetElement_pathuuid(item)
		client.host = nodetoConnect['host']
		client.port = nodetoConnect['port']
		client.category = nodetoConnect['category']
		listNodeToConnect.append(client.GetElement(nodetoConnect['uuid'])['occi.instruction.source'])


	listlinkgw = []
	for i in range(len(listNodeToConnect)):
		for j in range(i+1,len(listNodeToConnect)):
			listlinkgw.append( {
				'name': intercloudGW.name,
				'intercloudGW': intercloudGW.node,
				'account': intercloudGW.account,
				'gwsrc': '',
				'gwdst': '',
				'tunnelproto': 'gre',
				'addressgresrc': '10.3.3.1',
				'addressgredst': '10.3.3.2',
				'prefix': '30',
				'authenticationkey': 'test_key_1',
				'endpointsrc': listNodeToConnect[i],
				'endpointdst': listNodeToConnect[j],
				'state': '0',
			})



	#------------------------------------------------linkgw------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#	
	""" Determine server which handle linkgw category """
	attributePUB= {
		'what': 'linkgw'
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])
	

	listuuidlinkgw = []
	for i in listlinkgw:
		conetsOCCI = OCCIclient(publication['host'], publication['port'], 'CO-NETS-PAAS', 'linkgw', i)
		uuidlinkgw = conetsOCCI.GetElement_pathuuid(conetsOCCI.Post())['uuid']
		listuuidlinkgw.append(uuidlinkgw)
		print('Sending Post to linkgw')

	for item in listuuidlinkgw:
		print('Sending START to linkgw')
		conetsOCCI.action(item, 'start')

	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	tempintercloudGW={
		'name':intercloudGW.name,
		'node':intercloudGW.node,
		'account':intercloudGW.account,
		'price':intercloudGW.price,
		'state': intercloudGW.state,
	}
	attribute = {
		'state': '1',
	}
	conetsOCCI.category = 'intercloudGW'
        conetsOCCI.attributes = tempintercloudGW
        
	uuidintercloudGW=conetsOCCI.Get()
	conetsOCCI.attributes=attribute
	conetsOCCI.Put(conetsOCCI.GetElement_pathuuid(uuidintercloudGW[0])['uuid'])
	print('Changing the state of the intercloudGW to 1')

	return response
def gw_start(gw):
	response=respAction("200","ok")
	"""Implement here your function"""
	print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
	print('                     Receiving action START gw                      ')

	#-------------------------------------------------contract---------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle contract category """
	attributePUB= {
		'what': 'contract'
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	attribute = {}
	client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', 'contract', attribute)

	#----------------------------------------------start Node----------------------------------------------------------#
	gwcontract = client.GetElement_pathuuid(gw.contract)
	print('Sending START to the contract of the gateway source')
	client.action(gwcontract['uuid'], 'start')
	gwcontract = client.GetElement(gwcontract['uuid'])

	#-------------------------------------------------provider gw------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle procci provider category """
	attributePUB= {
		'what': gwcontract['occi.contract.profile']
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	attribute = {}
	client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', gwcontract['occi.contract.profile'], attribute)

	addressgw = client.GetElement(client.GetElement_pathuuid(gwcontract['occi.contract.provider'])['uuid'])
	gwprivateaddr = addressgw['occi.'+ gwcontract['occi.contract.profile'] +'.privateaddr']
	gwpublicaddr = addressgw['occi.'+ gwcontract['occi.contract.profile'] +'.publicaddr']

	print('The private address of the gateway is: '+gwprivateaddr)
	print('The public address of the gateway is: '+gwpublicaddr)

	#---------------------------------------------------gw-------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle gw category """
	attributePUB= {
		'what': 'gw'
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])

	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	tempgw={
		'name':gw.name,
		'publicaddr':gw.publicaddr,
		'privateaddr':gw.privateaddr,
		'ethername':gw.ethername,
		'intercloudGW': gw.intercloudGW,
		'contract':gw.contract,
		'provider_type':gw.provider_type,
		'provider_platform':gw.provider_platform,
		'connection':gw.connection,
		'account':gw.account,
		'state':gw.state,
	}
	attribute = {
		'publicaddr': gwpublicaddr,
		'privateaddr': gwprivateaddr,
		'state': '1',
	}
	gwOCCI = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', 'gw', tempgw)

	uuidgw=gwOCCI.Get()
	gwOCCI.attributes=attribute
	gwOCCI.Put(gwOCCI.GetElement_pathuuid(uuidgw[0])['uuid'])
	print('updating the gateway category with the public and private address')


	return response
def gw_create(gw):
	"""Implement here your function"""
	"""Implement here your function"""
	print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
	print('                         Receiving POST gw                          ')

	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	attribute = {}
	client = OCCIclient('', '', 'CO-PROCCI', '', attribute)
	node = client.GetElement_pathuuid(gw.intercloudGW)
	client.host = node['host']
	client.port = node['port']
	client.category = node['category']
	node = client.GetElement(node['uuid'])
	infrastructure = node['occi.node.infrastructure']
	image = node['occi.node.image']
	firewall = node['occi.node.firewall']
	accsessnode = node['occi.node.access']
	scopenode = node['occi.node.scope']
	typenode = node['occi.node.type']

	infra = client.GetElement_pathuuid(infrastructure)
	client.host = infra['host']
	client.port = infra['port']
	client.category = infra['category']
	infra = client.GetElement(infra['uuid'])

	img = client.GetElement_pathuuid(image)
	client.host = img['host']
	client.port = img['port']
	client.category = img['category']
	img = client.GetElement(img['uuid'])

	fire = client.GetElement_pathuuid(firewall)
	client.host = fire['host']
	client.port = fire['port']
	client.category = fire['category']
	fire = client.GetElement(fire['uuid'])

	#-------------------------------------------Infrastructure---------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	compute = infra['occi.infrastructure.compute']
	compute = client.GetElement_pathuuid(compute)
	client.host = compute['host']
	client.port = compute['port']
	client.category = compute['category']
	compute = client.GetElement(compute['uuid'])
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle compute category """
	attributePUB= {
		'what': 'compute'
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])

	archi = compute['occi.compute.architecture']
	tempdict = {
		'name': gw.name,
		'architecture': archi,
		'cores': compute['occi.compute.cores'],
		'speed': compute['occi.compute.speed'],
		'memory': compute['occi.compute.memory']
	}
	testPost = OCCIclient(publication['host'], publication['port'], 'CO-PROCCI', 'compute', tempdict)
	compute=testPost.Post()
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	network = infra['occi.infrastructure.network']
	network = client.GetElement_pathuuid(network)
	client.host = network['host']
	client.port = network['port']
	client.category = network['category']
	network = client.GetElement(network['uuid'])
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle network category """
	attributePUB= {
		'what': 'network'
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])

	tempdict = {
		'name': network['occi.network.name'],
		'label': network['occi.network.label'],
		'vlan': network['occi.network.vlan']
	}
	testPost = OCCIclient(publication['host'], publication['port'], 'CO-NETS', 'network', tempdict)
	network=testPost.Post()
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	storage = infra['occi.infrastructure.storage']
	storage = client.GetElement_pathuuid(storage)
	client.host = storage['host']
	client.port = storage['port']
	client.category = storage['category']
	storage = client.GetElement(storage['uuid'])
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle storage category """
	attributePUB= {
		'what': 'storage'
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])

	tempdict = {
		'name': gw.name,
		'size': storage['occi.storage.size']
	}
	testPost = OCCIclient(publication['host'], publication['port'], 'CO-PROCCI', 'storage', tempdict)
	storage=testPost.Post()
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle infrastructure category """
	attributePUB= {
		'what': 'infrastructure'
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])

	tempdict = {
		'name': gw.name,
		'compute': compute,
		'network': network,
		'storage': storage
	}
	testPost = OCCIclient(publication['host'], publication['port'], 'CO-PROCCI', 'infrastructure', tempdict)
	infrastructure=testPost.Post()



	#--------------------------------------------------Image-----------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	system = img['occi.image.system']
	system = client.GetElement_pathuuid(system)
	client.host = system['host']
	client.port = system['port']
	client.category = system['category']
	system = client.GetElement(system['uuid'])
	#------------------------------------------------------------------------------------------------------------------#

	""" Determine server which handle system category """
	attributePUB= {
		'what': 'system'
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	""" Post a system category """
	tempdict = {
		'name': system['occi.system.name']
	}
	testPost = OCCIclient(publication['host'], publication['port'], 'CO-EZVM', 'system', tempdict)
	system=testPost.Post()
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle image category """
	attributePUB= {
		'what': 'image'
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	""" Post a image category """
	tempdict = {
		'name': gw.name,
		'system': system
	}
	testPost = OCCIclient(publication['host'], publication['port'], 'CO-EZVM', 'image', tempdict)
	image=testPost.Post()


	#-------------------------------------------------Firewall---------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle firewall category """
	attributePUB= {
		'what': 'firewall'
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	""" Post a firewall category """
	tempdict = {}
	OCCIfirewall = OCCIclient(publication['host'], publication['port'], 'CO-NETS', 'firewall', tempdict)
	firewall=OCCIfirewall.Post()


	#---------------------------------------------------node-----------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle node category """
	attributePUB= {
		'what': 'node'
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	tempdict = {
		'name': gw.name,
		'provider': gw.provider_type,
		'infrastructure': infrastructure,
		'image': image,
		'access': accsessnode,
		'scope': scopenode,
		'type': typenode,
		'firewall': firewall
	}
	testPost = OCCIclient(publication['host'], publication['port'], 'CO-PROCCI', 'node', tempdict)
	node=testPost.Post()

	""" Update firewall """
	OCCIfirewall.attributes={'node':node}
	OCCIfirewall.Put(OCCIfirewall.GetElement_pathuuid(firewall)['uuid'])


	#------------------------------------------------Provisionning-----------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle opennebula category """
	attributePUB= {
		'what': gw.provider_type
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	profile = client.GetElement_pathuuid(gw.account)
	client.host = profile['host']
	client.port = profile['port']
	client.category = profile['category']
	profile = client.GetElement(profile['uuid'])['occi.account.name']
	tempdict = {
		'name': gw.name,
		'flavor': 'small',
		'architecture': archi,
		'node': node,
		'account': gw.account,
		'profile': profile
	}
	testPost = OCCIclient(publication['host'], publication['port'], 'CO-PROCCI', gw.provider_type, tempdict)
	provider=testPost.Post()



	#--------------------------------------------------Contract--------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle contract category """
	attributePUB= {
		'what': 'contract'
	}
	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


	tempdict = {
		'name': gw.name,
		'node': node,
		'provider': provider,
		'profile': gw.provider_type,
		'access': accsessnode,
		'scope': scopenode,
		'type': typenode
	}
	testPost = OCCIclient(publication['host'], publication['port'], 'CO-PROCCI', 'contract', tempdict)
	contract=testPost.Post()
	gw.contract = contract
	print('Creating a contract for this gateway')

	return gw
Exemple #17
0
def gw_stop(gw):
	response=respAction("200","ok")
	"""Implement here your function"""
	print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
	print('                     Receiving action STOP gw                       ')

	#---------------------------------------------------gw-------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#
	""" Determine server which handle gw category """
	attributePUB= {
		'what': 'gw'
	}

	client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
	publication = client.GetElement_pathuuid(client.Get()[0])
	client.host = publication['host']
	client.port = publication['port']
	publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])
	#------------------------------------------------------------------------------------------------------------------#
	#------------------------------------------------------------------------------------------------------------------#

	tempgw={
		'name':gw.name,
		'publicaddr':gw.publicaddr,
		'privateaddr':gw.privateaddr,
		'ethername':gw.ethername,
		'intercloudGW': gw.intercloudGW,
		'contract':gw.contract,
		'provider_type':gw.provider_type,
		'provider_platform':gw.provider_platform,
		'connection':gw.connection,
		'account':gw.account,
		'state':gw.state,
	}

	gwOCCI = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', 'gw', tempgw)
	uuidgw=gwOCCI.Get()
	uuidgw=gwOCCI.GetElement_pathuuid(uuidgw[0])['uuid']
	nbconnection = gwOCCI.GetElement(uuidgw)['occi.gw.connection']

	if int(nbconnection) > 0:
		attributes = {
			'connection': str(int(nbconnection)-1)
		}
		gwOCCI.attributes = attributes
		gwOCCI.Put(uuidgw)
		print('decrement the number of connection to :'+attributes['connection'])


	if int(nbconnection) == 1:
		#-------------------------------------------------contract---------------------------------------------------------#
		#------------------------------------------------------------------------------------------------------------------#
		#------------------------------------------------------------------------------------------------------------------#
		""" Determine server which handle contract category """
		attributePUB= {
			'what': 'contract'
		}
		client = OCCIclient('127.0.0.1', '8086', 'CO-PUB', 'publication', attributePUB)
		publication = client.GetElement_pathuuid(client.Get()[0])
		client.host = publication['host']
		client.port = publication['port']
		publication = client.GetElement_pathuuid(client.GetElement(publication['uuid'])['occi.publication.why'])


		attribute = {}
		client = OCCIclient(publication['host'], publication['port'], 'CO-PARSER', 'contract', attribute)

		#----------------------------------------------stop Node----------------------------------------------------------#
		gwcontract = client.GetElement_pathuuid(gw.contract)
		print('the number of connection = 0 ==> stopping the gateway  ')

		client.action(gwcontract['uuid'], 'stop')
		gwcontract = client.GetElement(gwcontract['uuid'])


		attribute = {
			'publicaddr': '',
			'privateaddr': '',
			'state': '0',
		}

		gwOCCI.attributes=attribute
		gwOCCI.Put(uuidgw)
		print('Changing the state of the gateway to 0')

	return response