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
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
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
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
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)
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