private Long getPhysicalNetworkId(Long zoneId) { Long guestPhysicalNetworkId = 0L; List<PhysicalNetworkVO> physicalNetworkList = _physicalNetworkDao.listByZone(zoneId); for (PhysicalNetworkVO phyNtwk : physicalNetworkList) { if (phyNtwk.getIsolationMethods().contains("VSP")) { guestPhysicalNetworkId = phyNtwk.getId(); break; } } return guestPhysicalNetworkId; }
@Override public void doInTransactionWithoutResult(TransactionStatus status) { if (addVnetsFinal != null) { s_logger.debug("Adding vnet range " + addVnetsFinal.toString() + " for the physicalNetwork id= " + network.getId() + " and zone id=" + network.getDataCenterId() + " as a part of updatePhysicalNetwork call"); //add vnet takes a list of strings to be added. each string is a vnet. _dcDao.addVnet(network.getDataCenterId(), network.getId(), addVnetsFinal); } if (removeVnetsFinal != null) { s_logger.debug("removing vnet range " + removeVnetsFinal.toString() + " for the physicalNetwork id= " + network.getId() + " and zone id=" + network.getDataCenterId() + " as a part of updatePhysicalNetwork call"); //deleteVnets takes a list of strings to be removed. each string is a vnet. _datacneterVnet.deleteVnets(TransactionLegacy.currentTxn(), network.getDataCenterId(), network.getId(), removeVnetsFinal); } _physicalNetworkDao.update(network.getId(), network); } });
protected Long getNonGuestNetworkPhysicalNetworkId(Network network, TrafficType trafficType) { // VMware control network is management network // we need to retrieve traffic label information through physical network Long physicalNetworkId = network.getPhysicalNetworkId(); if (physicalNetworkId == null) { List<PhysicalNetworkVO> pNtwks = _physicalNetworkDao.listByZone(network.getDataCenterId()); if (pNtwks.size() == 1) { physicalNetworkId = pNtwks.get(0).getId(); } else { // locate physicalNetwork with supported traffic type // We can make this assumptions based on the fact that Public/Management/Control traffic types are // supported only in one physical network in the zone in 3.0 for (PhysicalNetworkVO pNtwk : pNtwks) { if (_pNTrafficTypeDao.isTrafficTypeSupported(pNtwk.getId(), trafficType)) { physicalNetworkId = pNtwk.getId(); break; } } } } return physicalNetworkId; }
/** * Returns the PhysicalNetworkId based on a zoneId * @param zoneId != null, the zone id for which we need to retrieve the PhysicalNetworkId * @return the physical network id if it's found otherwise null */ private Long getPhysicalNetworkBasedOnZone(Long zoneId){ Long physicalNetworkId = null; List<PhysicalNetworkVO> physicalNetworkVOs = _physicalNetworkDao.listByZoneAndTrafficType(zoneId, Networks.TrafficType.Guest); for (PhysicalNetworkVO physicalNetwok : physicalNetworkVOs) { if (physicalNetwok.getIsolationMethods().contains(NUAGE_VSP_ISOLATION)) { physicalNetworkId = physicalNetwok.getId(); break; } } return physicalNetworkId; }
@Override public boolean isManagedPhysicalNetwork(Network network) { List<PhysicalNetworkVO> net_list = _physicalNetworkDao.listByZone(network.getDataCenterId()); for (PhysicalNetworkVO phys : net_list) { if(_physProviderDao.findByServiceProvider(phys.getId(), Provider.JuniperContrailRouter.getName()) != null || _physProviderDao.findByServiceProvider(phys.getId(), Provider.JuniperContrailVpcRouter.getName()) != null || _physProviderDao.findByServiceProvider(phys.getId(), Provider.InternalLbVm.getName()) != null) { return true; } } return false; }
@Override public PhysicalNetworkVO doInTransaction(TransactionStatus status) { // Create the new physical network in the database long id = _physicalNetworkDao.getNextInSequence(Long.class, "id"); PhysicalNetworkVO pNetwork = new PhysicalNetworkVO(id, zoneId, vnetRange, networkSpeed, domainId, broadcastDomainRangeFinal, name); pNetwork.setTags(tags); pNetwork.setIsolationMethods(isolationMethods); pNetwork = _physicalNetworkDao.persist(pNetwork); // Add vnet entries for the new zone if zone type is Advanced if (vnetRange != null) { addOrRemoveVnets(vnetRange.split(","), pNetwork); } // add VirtualRouter as the default network service provider addDefaultVirtualRouterToPhysicalNetwork(pNetwork.getId()); if (pNetwork.getIsolationMethods().contains("GRE")) { addDefaultOvsToPhysicalNetwork(pNetwork.getId()); } // add security group provider to the physical network addDefaultSecurityGroupProviderToPhysicalNetwork(pNetwork.getId()); // add VPCVirtualRouter as the defualt network service provider addDefaultVpcVirtualRouterToPhysicalNetwork(pNetwork.getId()); // add baremetal as the defualt network service provider addDefaultBaremetalProvidersToPhysicalNetwork(pNetwork.getId()); //Add Internal Load Balancer element as a default network service provider addDefaultInternalLbProviderToPhysicalNetwork(pNetwork.getId()); // Add the config drive provider addConfigDriveToPhysicalNetwork(pNetwork.getId()); return pNetwork; } });
@Override public List<PhysicalNetworkSetupInfo> getPhysicalNetworkInfo(long dcId, HypervisorType hypervisorType) { List<PhysicalNetworkSetupInfo> networkInfoList = new ArrayList<PhysicalNetworkSetupInfo>(); List<PhysicalNetworkVO> physicalNtwkList = _physicalNetworkDao.listByZone(dcId); for (PhysicalNetworkVO pNtwk : physicalNtwkList) { String publicName = _pNTrafficTypeDao.getNetworkTag(pNtwk.getId(), TrafficType.Public, hypervisorType); String privateName = _pNTrafficTypeDao.getNetworkTag(pNtwk.getId(), TrafficType.Management, hypervisorType); String guestName = _pNTrafficTypeDao.getNetworkTag(pNtwk.getId(), TrafficType.Guest, hypervisorType); String storageName = _pNTrafficTypeDao.getNetworkTag(pNtwk.getId(), TrafficType.Storage, hypervisorType); // String controlName = _pNTrafficTypeDao.getNetworkTag(pNtwk.getId(), TrafficType.Control, hypervisorType); PhysicalNetworkSetupInfo info = new PhysicalNetworkSetupInfo(); info.setPhysicalNetworkId(pNtwk.getId()); info.setGuestNetworkName(guestName); info.setPrivateNetworkName(privateName); info.setPublicNetworkName(publicName); info.setStorageNetworkName(storageName); PhysicalNetworkTrafficTypeVO mgmtTraffic = _pNTrafficTypeDao.findBy(pNtwk.getId(), TrafficType.Management); if (mgmtTraffic != null) { String vlan = mgmtTraffic.getVlan(); info.setMgmtVlan(vlan); } networkInfoList.add(info); } return networkInfoList; }
private ExternalLoadBalancerDeviceVO findGslbProvider(long zoneId, long physicalNetworkId) { List<PhysicalNetworkVO> pNtwks = _physicalNetworkDao.listByZoneAndTrafficType(zoneId, TrafficType.Guest); if (pNtwks == null || pNtwks.isEmpty()) { throw new InvalidParameterValueException( "Unable to get physical network: " + physicalNetworkId + " in zone id = " + zoneId); } else { for (PhysicalNetwork physicalNetwork : pNtwks) { if (physicalNetwork.getId() == physicalNetworkId) { PhysicalNetworkVO physNetwork = pNtwks.get(0); ExternalLoadBalancerDeviceVO nsGslbProvider = _externalLoadBalancerDeviceDao .findGslbServiceProvider(physNetwork.getId(), Provider.Netscaler.getName()); return nsGslbProvider; } } } return null; }
@Override public Network design(NetworkOffering offering, DeploymentPlan plan, Network userSpecified, Account owner) { // Check if the isolation type of the physical network is BCF_SEGMENT, then delegate GuestNetworkGuru to design PhysicalNetworkVO physnet = _physicalNetworkDao.findById(plan.getPhysicalNetworkId()); if (physnet == null || physnet.getIsolationMethods() == null || !physnet.getIsolationMethods().contains("BCF_SEGMENT")) { s_logger.debug("Refusing to design this network, the physical isolation type is not BCF_SEGMENT"); return null; } List<BigSwitchBcfDeviceVO> devices = _bigswitchBcfDao.listByPhysicalNetwork(physnet.getId()); if (devices.isEmpty()) { s_logger.error("No BigSwitch Controller on physical network " + physnet.getName()); return null; } for (BigSwitchBcfDeviceVO d: devices){ s_logger.debug("BigSwitch Controller " + d.getUuid() + " found on physical network " + physnet.getId()); } s_logger.debug("Physical isolation type is BCF_SEGMENT, asking GuestNetworkGuru to design this network"); NetworkVO networkObject = (NetworkVO)super.design(offering, plan, userSpecified, owner); if (networkObject == null) { return null; } // Override the broadcast domain type networkObject.setBroadcastDomainType(BroadcastDomainType.Vlan); return networkObject; }
@Override public ExternalFirewallDeviceVO doInTransaction(TransactionStatus status) { boolean dedicatedUse = (configParams.get(ApiConstants.FIREWALL_DEVICE_DEDICATED) != null) ? Boolean.parseBoolean(configParams.get(ApiConstants.FIREWALL_DEVICE_DEDICATED)) : false; long capacity = NumbersUtil.parseLong(configParams.get(ApiConstants.FIREWALL_DEVICE_CAPACITY), 0); if (capacity == 0) { capacity = _defaultFwCapacity; } ExternalFirewallDeviceVO fwDevice = new ExternalFirewallDeviceVO(externalFirewall.getId(), pNetworkFinal.getId(), ntwkSvcProvider.getProviderName(), deviceName, capacity, dedicatedUse); _externalFirewallDeviceDao.persist(fwDevice); DetailVO hostDetail = new DetailVO(externalFirewall.getId(), ApiConstants.FIREWALL_DEVICE_ID, String.valueOf(fwDevice.getId())); _hostDetailDao.persist(hostDetail); return fwDevice; } });
@Override public Network design(NetworkOffering offering, DeploymentPlan plan, Network userSpecified, Account owner) { PhysicalNetworkVO physnet = physicalNetworkDao.findById(plan.getPhysicalNetworkId()); DataCenter dc = _dcDao.findById(plan.getDataCenterId()); if (!canHandle(offering, dc.getNetworkType(), physnet)) { s_logger.debug("Refusing to design this network"); return null; } List<OpenDaylightControllerVO> devices = openDaylightControllerMappingDao.listByPhysicalNetwork(physnet.getId()); if (devices.isEmpty()) { s_logger.error("No Controller on physical network " + physnet.getName()); return null; } s_logger.debug("Controller " + devices.get(0).getUuid() + " found on physical network " + physnet.getId()); s_logger.debug("Physical isolation type is ODL, asking GuestNetworkGuru to design this network"); NetworkVO networkObject = (NetworkVO)super.design(offering, plan, userSpecified, owner); if (networkObject == null) { return null; } // Override the broadcast domain type networkObject.setBroadcastDomainType(BroadcastDomainType.OpenDaylight); return networkObject; }
/** * Verifies ConfigDrive entries on a zone and adds disabled ConfigDrive provider if missing. */ protected void addDisabledConfigDriveEntriesOnZone(DataCenterVO zone) { if (zone.getNetworkType() == DataCenter.NetworkType.Advanced) { List<PhysicalNetworkVO> physicalNetworks = _physicalNetworkDao.listByZoneAndTrafficType( zone.getId(), TrafficType.Guest); for (PhysicalNetworkVO physicalNetworkVO : physicalNetworks) { PhysicalNetworkServiceProviderVO provider = _pNSPDao.findByServiceProvider( physicalNetworkVO.getId(), Provider.ConfigDrive.getName()); if (provider == null) { _networkService.addProviderToPhysicalNetwork( physicalNetworkVO.getId(), Provider.ConfigDrive.getName(), null, null); } } } }
return pNtwks.get(0).getId();
@Override public Network design(final NetworkOffering offering, final DeploymentPlan plan, final Network userSpecified, final Account owner) { // Check of the isolation type of the related physical network is supported final PhysicalNetworkVO physnet = physicalNetworkDao.findById(plan.getPhysicalNetworkId()); final DataCenter dc = _dcDao.findById(plan.getDataCenterId()); if (!canHandle(offering, dc.getNetworkType(), physnet)) { s_logger.debug("Refusing to design this network"); return null; } final List<NiciraNvpDeviceVO> devices = niciraNvpDao.listByPhysicalNetwork(physnet.getId()); if (devices.isEmpty()) { s_logger.error("No NiciraNvp Controller on physical network " + physnet.getName()); return null; } s_logger.debug("Nicira Nvp " + devices.get(0).getUuid() + " found on physical network " + physnet.getId()); s_logger.debug("Physical isolation type is supported, asking GuestNetworkGuru to design this network"); final NetworkVO networkObject = (NetworkVO) super.design(offering, plan, userSpecified, owner); if (networkObject == null) { return null; } networkObject.setBroadcastDomainType(BroadcastDomainType.Lswitch); if (offering.getGuestType().equals(GuestType.Shared)){ networkObject.setState(State.Allocated); } return networkObject; }
@Override public HostVO getNuageVspHost(long physicalNetworkId) { HostVO nuageVspHost; List<NuageVspDeviceVO> nuageVspDevices = _nuageVspDao.listByPhysicalNetwork(physicalNetworkId); if (CollectionUtils.isEmpty(nuageVspDevices)) { // Perhaps another physical network is passed from within the same zone, find the VSP physical network in that case PhysicalNetwork physicalNetwork = _physicalNetworkDao.findById(physicalNetworkId); List<PhysicalNetworkVO> physicalNetworksInZone = _physicalNetworkDao.listByZone(physicalNetwork.getDataCenterId()); for (PhysicalNetworkVO physicalNetworkInZone : physicalNetworksInZone) { if (physicalNetworkInZone.getIsolationMethods().contains(NUAGE_VSP_ISOLATION)) { nuageVspDevices = _nuageVspDao.listByPhysicalNetwork(physicalNetworkInZone.getId()); break; } } } if (CollectionUtils.isNotEmpty(nuageVspDevices)) { NuageVspDeviceVO config = nuageVspDevices.iterator().next(); nuageVspHost = _hostDao.findById(config.getHostId()); _hostDao.loadDetails(nuageVspHost); } else { throw new CloudRuntimeException("There is no Nuage VSP device configured on physical network " + physicalNetworkId); } return nuageVspHost; }
@Override public List<Host> listExternalLoadBalancers(long physicalNetworkId, String deviceName) { List<Host> lbHosts = new ArrayList<Host>(); NetworkDevice lbNetworkDevice = NetworkDevice.getNetworkDevice(deviceName); PhysicalNetworkVO pNetwork = null; pNetwork = _physicalNetworkDao.findById(physicalNetworkId); if ((pNetwork == null) || (lbNetworkDevice == null)) { throw new InvalidParameterValueException("Atleast one of the required parameter physical networkId, device name is invalid."); } PhysicalNetworkServiceProviderVO ntwkSvcProvider = _physicalNetworkServiceProviderDao.findByServiceProvider(pNetwork.getId(), lbNetworkDevice.getNetworkServiceProvder()); // if provider not configured in to physical network, then there can be no instances if (ntwkSvcProvider == null) { return null; } List<ExternalLoadBalancerDeviceVO> lbDevices = _externalLoadBalancerDeviceDao.listByPhysicalNetworkAndProvider(physicalNetworkId, ntwkSvcProvider.getProviderName()); for (ExternalLoadBalancerDeviceVO provderInstance : lbDevices) { lbHosts.add(_hostDao.findById(provderInstance.getHostId())); } return lbHosts; }
@Override public List<Host> listExternalFirewalls(long physicalNetworkId, String deviceName) { List<Host> firewallHosts = new ArrayList<Host>(); NetworkDevice fwNetworkDevice = NetworkDevice.getNetworkDevice(deviceName); PhysicalNetworkVO pNetwork = null; pNetwork = _physicalNetworkDao.findById(physicalNetworkId); if (pNetwork == null) { throw new InvalidParameterValueException("Could not find phyical network with ID: " + physicalNetworkId); } if ((pNetwork == null) || (fwNetworkDevice == null)) { throw new InvalidParameterValueException("Atleast one of ther required parameter physical networkId, device name is missing or invalid."); } PhysicalNetworkServiceProviderVO ntwkSvcProvider = _physicalNetworkServiceProviderDao.findByServiceProvider(pNetwork.getId(), fwNetworkDevice.getNetworkServiceProvder()); if (ntwkSvcProvider == null) { return null; } List<ExternalFirewallDeviceVO> fwDevices = _externalFirewallDeviceDao.listByPhysicalNetworkAndProvider(physicalNetworkId, ntwkSvcProvider.getProviderName()); for (ExternalFirewallDeviceVO fwDevice : fwDevices) { firewallHosts.add(_hostDao.findById(fwDevice.getHostId())); } return firewallHosts; }
@Override public Network design(NetworkOffering offering, DeploymentPlan plan, Network userSpecified, Account owner) { PhysicalNetworkVO physnet = _physicalNetworkDao.findById(plan.getPhysicalNetworkId()); DataCenter dc = _dcDao.findById(plan.getDataCenterId()); if (!canHandle(offering, dc.getNetworkType(), physnet)) { if (s_logger.isDebugEnabled()) { s_logger.debug("Refusing to design network using network offering " + offering.getId() + (physnet != null ? " on physical network " + physnet.getId() : "")); } return null; } NetworkVO networkObject = (NetworkVO)super.design(offering, plan, userSpecified, owner); if (networkObject == null) { return null; } networkObject.setBroadcastDomainType(Networks.BroadcastDomainType.Vsp); if (userSpecified instanceof NetworkVO && userSpecified.getExternalId() != null) { if (owner.getType() < Account.ACCOUNT_TYPE_ADMIN) { throw new IllegalArgumentException("vsdManaged networks are only useable by admins."); } if (!isUniqueReference(plan.getDataCenterId(), userSpecified.getExternalId())) { s_logger.debug("Refusing to design network. VsdManaged network object already present in zone."); return null; } } return networkObject; }
@Override public ExternalLoadBalancerDeviceVO doInTransaction(TransactionStatus status) { ExternalLoadBalancerDeviceVO lbDeviceVO = new ExternalLoadBalancerDeviceVO(host.getId(), pNetworkFinal.getId(), ntwkDevice.getNetworkServiceProvder(), deviceName, capacityFinal, dedicatedUse, gslbProvider); if (gslbProvider) { lbDeviceVO.setGslbSitePublicIP(gslbSitePublicIp); lbDeviceVO.setGslbSitePrivateIP(gslbSitePrivateIp); lbDeviceVO.setExclusiveGslbProvider(exclusiveGslbProivider); } _externalLoadBalancerDeviceDao.persist(lbDeviceVO); DetailVO hostDetail = new DetailVO(host.getId(), ApiConstants.LOAD_BALANCER_DEVICE_ID, String.valueOf(lbDeviceVO.getId())); _hostDetailDao.persist(hostDetail); return lbDeviceVO; } });
@Override public List<PhysicalNetworkVO> listByZoneAndTrafficType(long dataCenterId, TrafficType trafficType) { SearchBuilder<PhysicalNetworkTrafficTypeVO> trafficTypeSearch = _trafficTypeDao.createSearchBuilder(); PhysicalNetworkTrafficTypeVO trafficTypeEntity = trafficTypeSearch.entity(); trafficTypeSearch.and("trafficType", trafficTypeSearch.entity().getTrafficType(), SearchCriteria.Op.EQ); SearchBuilder<PhysicalNetworkVO> pnSearch = createSearchBuilder(); pnSearch.and("dataCenterId", pnSearch.entity().getDataCenterId(), Op.EQ); pnSearch.join("trafficTypeSearch", trafficTypeSearch, pnSearch.entity().getId(), trafficTypeEntity.getPhysicalNetworkId(), JoinBuilder.JoinType.INNER); SearchCriteria<PhysicalNetworkVO> sc = pnSearch.create(); sc.setJoinParameters("trafficTypeSearch", "trafficType", trafficType); sc.setParameters("dataCenterId", dataCenterId); return listBy(sc); } }