def allocate_processor(logicalnetwork, walk, write, *, parameters): if 'vlanid' in parameters: try: phynet = walk(logicalnetwork.physicalnetwork.getkey()) phymap = walk( PhysicalNetworkMap._network.leftkey( logicalnetwork.physicalnetwork)) except WalkKeyNotRetrieved: ensure_keys( PhysicalNetworkMap._network.leftkey( logicalnetwork.physicalnetwork)) else: vlanid = int(parameters['vlanid']) if _isavaliablevlanid(phynet.vlanrange, phymap.network_allocation, vlanid): phymap.network_allocation[str( vlanid)] = logicalnetwork.create_weakreference() write(phymap.getkey(), phymap) else: raise ValueError("Specified VLAN ID " + str(vlanid) + " allocated or not in range") logicalnetwork.vlanid = vlanid write(logicalnetwork.getkey(), logicalnetwork) return default_processor(logicalnetwork, parameters=parameters, excluding=('id', 'vlanid'), disabled=('physicalnetwork', ))
def logicalnetwork_processor(logicalnetwork, logicalnetworkmap, physicalnetwork, physicalnetworkmap, walk, write, *, parameters): if 'vlanid' in parameters: # Allocate this vlanid vlanid = int(parameters['vlanid']) if _isavaliablevlanid(physicalnetwork.vlanrange, physicalnetworkmap.network_allocation, vlanid): physicalnetworkmap.network_allocation[str( vlanid)] = logicalnetwork.create_weakreference() write(physicalnetworkmap.getkey(), physicalnetworkmap) else: raise ValueError("Specified VLAN ID " + str(vlanid) + " allocated or not in range") else: # Allocate a vlanid from range vlanid = _findavaliablevlanid( physicalnetwork.vlanrange, physicalnetworkmap.network_allocation) if vlanid is None: raise ValueError( "no available VLAN id in physical network " + physicalnetwork.id) physicalnetworkmap.network_allocation[str( vlanid)] = logicalnetwork.create_weakreference() write(physicalnetworkmap.getkey(), physicalnetworkmap) logicalnetwork.vlanid = vlanid write(logicalnetwork.getkey(), logicalnetwork) return default_processor(logicalnetwork, parameters=parameters, excluding=('id', 'physicalnetwork', 'vlanid'))
def create_physicalnetwork_processor(physicalnetwork, walk, write, *, parameters): if 'vlanrange' not in parameters: raise ValueError( 'must specify vlanrange with physical network type=vlan') _check_vlanrange(parameters['vlanrange']) return default_processor(physicalnetwork, parameters=parameters, excluding=('id', 'type'))
def logicalnetwork_processor(logicalnetwork, logicalnetworkmap, physicalnetwork, physicalnetworkmap, walk, write, *, parameters): if physicalnetworkmap.logicnetworks.dataset(): raise ValueError( "physical network with type=native can only have one logical network" ) return default_processor(logicalnetwork, parameters=parameters, excluding=('id', 'physicalnetwork'))
def update_physicalnetwork_processor(physicalnetwork, walk, write, *, parameters): if 'vnirange' in parameters: _check_vnirange(parameters['vnirange']) try: phymap = walk(PhysicalNetworkMap.default_key(physicalnetwork.id)) except WalkKeyNotRetrieved: pass else: _check_vnirange_allocation(parameters['vnirange'], phymap.network_allocation) return default_processor(physicalnetwork, parameters=parameters, disabled=('type',))
def logicalnetwork_processor(logicalnetwork, logicalnetworkmap, physicalnetwork, physicalnetworkmap, walk, write, *, parameters): if 'vni' in parameters: # Allocate this vni vni = int(parameters['vni']) if _isavaliablevni(physicalnetwork.vnirange, physicalnetworkmap.network_allocation, vni): physicalnetworkmap.network_allocation[str(vni)] = logicalnetwork.create_weakreference() write(physicalnetworkmap.getkey(), physicalnetworkmap) else: raise ValueError("Specified VNI " + str(vni) + " allocated or not in range") else: # Allocate a vni from range vni = _findavaliablevni(physicalnetwork.vnirange, physicalnetworkmap.network_allocation) if vni is None: raise ValueError("no available VNI in physical network " + physicalnetwork.id) physicalnetworkmap.network_allocation[str(vni)] = logicalnetwork.create_weakreference() write(physicalnetworkmap.getkey(), physicalnetworkmap) logicalnetwork.vni = vni write(logicalnetwork.getkey(), logicalnetwork) # Create VXLANEndpointSet vxlanendpoint_set = VXLANEndpointSet.create_instance(logicalnetwork.id) write(vxlanendpoint_set.getkey(), vxlanendpoint_set) return default_processor(logicalnetwork, parameters=parameters, excluding=('id', 'physicalnetwork', 'vni'))