Example #1
0
File: wicm.py Project: T-NOVA/WICM
def nfvi_request(mkt_id=None):

    if request.method == 'POST':
        nfvi_request = request.json
        logger.info('Request to create NFVI-POP: {}'.format(nfvi_request))

        mkt_id = nfvi_request['nfvi']['mkt_id']
        ce = (nfvi_request['nfvi']['switch'], nfvi_request['nfvi']['ce_port'])
        pe = (nfvi_request['nfvi']['switch'], nfvi_request['nfvi']['pe_port'])

        result = jsonify({'inserted': nfvi.put(mkt_id, ce, pe)}), 201
    elif request.method == 'DELETE':

        #  TODO: Delete bridge @ ODL!
        logger.info('Request to delete NFVI-POP: {}'.format(
            'id -> {}'.format(mkt_id) if mkt_id else 'All NFVI-PoPs'))

        result = jsonify({'deleted': nfvi.delete(mkt_id)}), 200
    else:
        logger.info('Request to get NFVI-POP: {}'.format(
            'id -> {}'.format(mkt_id) if mkt_id else 'All NFVI-PoPs'))

        result = jsonify({'nfvis': nfvi.get(mkt_id)}), 200

    return result
Example #2
0
def service_request_put(ns_instance_id=None):
    try:
        logger.info('Request enable Service: {}'.format(ns_instance_id))

        service_info = service.get(ns_instance_id)[0]
    except Exception:
        logger.error('Request enable Service {} failed : Service not found'
                     .format(ns_instance_id))

        return jsonify({'error': 'Service {} not found!'
                        .format(ns_instance_id)}), 400

    if service_info['status'] != 'ALLOCATED':
        logger.error(('Request enable Service {} failed : Service '
                      'not in ALLOCATED state').format(ns_instance_id))

        return jsonify({'error': 'Service {} is not in ALLOCATED state!'
                        .format(ns_instance_id)}), 400
    try:
        ce_pe = []
        for hop in service_info['ce_pe']:
            nfvi_info = nfvi.get(hop['nfvi_mkt_id'])[0]

            ce_pe.append(((nfvi_info['switch'], nfvi_info['port'],
                           hop['transport']['vlan_id'])))

        pe_ce = []
        for hop in service_info['pe_ce']:
            nfvi_info = nfvi.get(hop['nfvi_mkt_id'])[0]

            pe_ce.append(((nfvi_info['switch'], nfvi_info['port'],
                           hop['transport']['vlan_id'])))


        vtn.chain_create(service_info['client_mkt_id'],
                         service_info['ns_instance_id'],
                         service_info['nap_mkt_id'],
                         ce_pe, pe_ce)
    except Exception as ex:
        logger.error('Request enable Service {} failed VTN Manager: {}'
                     .format(ns_instance_id, ex))
        return jsonify({'error': 'Unable to put redirection in place!'}), 500

    logger.info('Service: {} enabled!'.format(ns_instance_id))
    service.set_status(ns_instance_id, 'ACTIVE')

    return jsonify({'activated': {'ns_instance_id': ns_instance_id}}), 201
Example #3
0
def service_redirect(odl, mkt_id):

	service_info = service.get(mkt_id)[0]
	nap_info = nap.get(service_info['nap_mkt_id'])[0]
	nfvi_info = nfvi.get(service_info['nfvi_mkt_id'])[0]

	#request new ids
	flows = service.create_service_flows(mkt_id)
	try:
		flow = 0
		odl.redirect(
			flows[flow]['switch'], flows[flow]['of_table'], flows[flow]['of_id'], 
			'SERVICE_{:}_CE_NFVI'.format(mkt_id),
			nap_info['ce_port'], nap_info['ce_transport']['vlan_id'], 
			nfvi_info['ce_port'], service_info['ce_transport']['vlan_id'],
			priority=1000, cookie=0xc01dbabe)

		flow = 1
		odl.redirect(
			flows[flow]['switch'], flows[flow]['of_table'], flows[flow]['of_id'], 
			'SERVICE_{:}_NFVI_CE'.format(mkt_id),
			nfvi_info['ce_port'], service_info['ce_transport']['vlan_id'], 
			nap_info['ce_port'], nap_info['ce_transport']['vlan_id'],
			priority=1000, cookie=0xc01dbabe)

		flow = 2
		odl.redirect(
			flows[flow]['switch'], flows[flow]['of_table'], flows[flow]['of_id'], 
			'SERVICE_{:}_PE_NFVI'.format(mkt_id),
			nap_info['pe_port'], nap_info['pe_transport']['vlan_id'], 
			nfvi_info['pe_port'], service_info['pe_transport']['vlan_id'],
			priority=1000, cookie=0xc01dbabe)

		flow = 3
		odl.redirect(
			flows[flow]['switch'], flows[flow]['of_table'], flows[flow]['of_id'], 
			'SERVICE_{:}_NFVI_PE'.format(mkt_id),
			nfvi_info['pe_port'], service_info['pe_transport']['vlan_id'], 
			nap_info['pe_port'], nap_info['pe_transport']['vlan_id'],
			priority=1000, cookie=0xc01dbabe)
		
	except Exception, e:
		for i in xrange(0, flow):
			odl.delete(
				flows[i]['switch'], 
				flows[i]['of_table'], 
				flows[i]['of_id'])
			service.delete_flows(mkt_id)
		raise e
Example #4
0
File: wicm.py Project: T-NOVA/WICM
def service_request_put(ns_instance_id=None):
    try:
        logger.info('Request enable Service: {}'.format(ns_instance_id))

        service_info = service.get(ns_instance_id)[0]
    except Exception:
        logger.error('Request enable Service {} failed : Service not found'
                     .format(ns_instance_id))

        return jsonify({'error': 'Service {} not found!'
                        .format(ns_instance_id)}), 400

    if service_info['status'] != 'ALLOCATED':
        logger.error(('Request enable Service {} failed : Service '
                      'not in ALLOCATED state').format(ns_instance_id))

        return jsonify({'error': 'Service {} is not in ALLOCATED state!'
                        .format(ns_instance_id)}), 400
    try:
        interfaces = []
        for nfvi_path in service_info['path']:
            nfvi_info = nfvi.get(nfvi_path['nfvi_mkt_id'])[0]

            interfaces.append(((nfvi_info['switch'], nfvi_info['ce_port'],
                                nfvi_path['ce_transport']['vlan_id']), (
                               nfvi_info['switch'], nfvi_info['pe_port'],
                               nfvi_path['pe_transport']['vlan_id'])))

        vtn.chain_create(service_info['client_mkt_id'],
                         service_info['ns_instance_id'],
                         service_info['nap_mkt_id'],
                         interfaces)
    except Exception as ex:
        logger.error('Request enable Service {} failed VTN Manager: {}'
                     .format(ns_instance_id, ex))
        return jsonify({'error': 'Unable to put redirection in place!'}), 500

    logger.info('Service: {} enabled!'.format(ns_instance_id))
    service.set_status(ns_instance_id, 'ACTIVE')

    return jsonify({'activated': {'ns_instance_id': ns_instance_id}}), 201
Example #5
0
def service_redirect(odl, mkt_id):

	service_info = service.get(mkt_id)[0]
	nap_info = nap.get(service_info['nap_mkt_id'])[0]
	nfvi_info = nfvi.get(service_info['nfvi_mkt_id'])[0]

	#request new ids
	flows = service.create_service_flows(mkt_id)

	flow = flows[0]
	odl.redirect(
		flow['switch'], flow['of_table'], flow['of_id'], 
		'SERVICE_{:}_CE_NFVI'.format(mkt_id),
		nap_info['ce_port'], nap_info['ce_transport']['vlan_id'], 
		nfvi_info['ce_port'], service_info['ce_transport']['vlan_id'],
		priority=1000, cookie=0xc01dbabe)

	flow = flows[1]
	odl.redirect(
		flow['switch'], flow['of_table'], flow['of_id'], 
		'SERVICE_{:}_NFVI_CE'.format(mkt_id),
		nfvi_info['ce_port'], service_info['ce_transport']['vlan_id'], 
		nap_info['ce_port'], nap_info['ce_transport']['vlan_id'],
		priority=1000, cookie=0xc01dbabe)

	flow = flows[2]
	odl.redirect(
		flow['switch'], flow['of_table'], flow['of_id'], 
		'SERVICE_{:}_PE_NFVI'.format(mkt_id),
		nap_info['pe_port'], nap_info['pe_transport']['vlan_id'], 
		nfvi_info['pe_port'], service_info['pe_transport']['vlan_id'],
		priority=1000, cookie=0xc01dbabe)

	flow = flows[3]
	odl.redirect(
		flow['switch'], flow['of_table'], flow['of_id'], 
		'SERVICE_{:}_NFVI_PE'.format(mkt_id),
		nfvi_info['pe_port'], service_info['pe_transport']['vlan_id'], 
		nap_info['pe_port'], nap_info['pe_transport']['vlan_id'],
		priority=1000, cookie=0xc01dbabe)
Example #6
0
def nfvi_request(mkt_id=None):

    if request.method == 'POST':
        nfvi_request = request.json
        logger.info('Request to create NFVI-POP: {}'.format(nfvi_request))

        mkt_id = nfvi_request['nfvi']['mkt_id']
        port = (nfvi_request['nfvi']['switch'], nfvi_request['nfvi']['port'])

        result = jsonify({'inserted': nfvi.put(mkt_id, port)}), 201
    elif request.method == 'DELETE':

        #  TODO: Delete bridge @ ODL!
        logger.info('Request to delete NFVI-POP: {}'.format(
            'id -> {}'.format(mkt_id) if mkt_id else 'All NFVI-PoPs'))

        result = jsonify({'deleted': nfvi.delete(mkt_id)}), 200
    else:
        logger.info('Request to get NFVI-POP: {}'.format(
            'id -> {}'.format(mkt_id) if mkt_id else 'All NFVI-PoPs'))

        result = jsonify({'nfvis': nfvi.get(mkt_id)}), 200

    return result