Search in sources :

Example 1 with PhysicalNetwork

use of com.cloud.network.PhysicalNetwork in project CloudStack-archive by CloudStack-extras.

the class UpdatePhysicalNetworkCmd method execute.

@Override
public void execute() {
    PhysicalNetwork result = _networkService.updatePhysicalNetwork(getId(), getNetworkSpeed(), getTags(), getVlan(), getState());
    if (result != null) {
        PhysicalNetworkResponse response = _responseGenerator.createPhysicalNetworkResponse(result);
        response.setResponseName(getCommandName());
        this.setResponseObject(response);
    } else {
        throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update physical network");
    }
}
Also used : ServerApiException(com.cloud.api.ServerApiException) PhysicalNetworkResponse(com.cloud.api.response.PhysicalNetworkResponse) PhysicalNetwork(com.cloud.network.PhysicalNetwork)

Example 2 with PhysicalNetwork

use of com.cloud.network.PhysicalNetwork in project CloudStack-archive by CloudStack-extras.

the class ListPhysicalNetworksCmd method execute.

@Override
public void execute() {
    List<? extends PhysicalNetwork> result = _networkService.searchPhysicalNetworks(getId(), getZoneId(), this.getKeyword(), this.getStartIndex(), this.getPageSizeVal(), getNetworkName());
    if (result != null) {
        ListResponse<PhysicalNetworkResponse> response = new ListResponse<PhysicalNetworkResponse>();
        List<PhysicalNetworkResponse> networkResponses = new ArrayList<PhysicalNetworkResponse>();
        for (PhysicalNetwork network : result) {
            PhysicalNetworkResponse networkResponse = _responseGenerator.createPhysicalNetworkResponse(network);
            networkResponses.add(networkResponse);
        }
        response.setResponses(networkResponses);
        response.setResponseName(getCommandName());
        this.setResponseObject(response);
    } else {
        throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to search for physical networks");
    }
}
Also used : ListResponse(com.cloud.api.response.ListResponse) ServerApiException(com.cloud.api.ServerApiException) PhysicalNetworkResponse(com.cloud.api.response.PhysicalNetworkResponse) PhysicalNetwork(com.cloud.network.PhysicalNetwork) ArrayList(java.util.ArrayList)

Example 3 with PhysicalNetwork

use of com.cloud.network.PhysicalNetwork in project cloudstack by apache.

the class SspElement method isReady.

/* (non-Javadoc)
     * @see org.apache.cloudstack.network.element.NetworkElement#isReady(com.cloud.network.PhysicalNetworkServiceProvider)
     */
@Override
public boolean isReady(PhysicalNetworkServiceProvider provider) {
    PhysicalNetwork physicalNetwork = _physicalNetworkDao.findById(provider.getPhysicalNetworkId());
    assert (physicalNetwork != null);
    if (fetchSspClients(physicalNetwork.getId(), physicalNetwork.getDataCenterId(), false).size() > 0) {
        return true;
    }
    s_logger.warn("Ssp api endpoint not found. " + physicalNetwork.toString());
    return false;
}
Also used : PhysicalNetwork(com.cloud.network.PhysicalNetwork)

Example 4 with PhysicalNetwork

use of com.cloud.network.PhysicalNetwork in project cloudstack by apache.

the class ConfigurationManagerImpl method editZone.

@Override
@DB
@ActionEvent(eventType = EventTypes.EVENT_ZONE_EDIT, eventDescription = "editing zone", async = false)
public DataCenter editZone(final UpdateZoneCmd cmd) {
    // Parameter validation as from execute() method in V1
    final Long zoneId = cmd.getId();
    String zoneName = cmd.getZoneName();
    String dns1 = cmd.getDns1();
    String dns2 = cmd.getDns2();
    String ip6Dns1 = cmd.getIp6Dns1();
    String ip6Dns2 = cmd.getIp6Dns2();
    String internalDns1 = cmd.getInternalDns1();
    String internalDns2 = cmd.getInternalDns2();
    String guestCidr = cmd.getGuestCidrAddress();
    final List<String> dnsSearchOrder = cmd.getDnsSearchOrder();
    final Boolean isPublic = cmd.isPublic();
    final String allocationStateStr = cmd.getAllocationState();
    final String dhcpProvider = cmd.getDhcpProvider();
    final Map<?, ?> detailsMap = cmd.getDetails();
    final String networkDomain = cmd.getDomain();
    final Boolean localStorageEnabled = cmd.getLocalStorageEnabled();
    final Map<String, String> newDetails = new HashMap<String, String>();
    if (detailsMap != null) {
        final Collection<?> zoneDetailsCollection = detailsMap.values();
        final Iterator<?> iter = zoneDetailsCollection.iterator();
        while (iter.hasNext()) {
            final HashMap<?, ?> detail = (HashMap<?, ?>) iter.next();
            final String key = (String) detail.get("key");
            final String value = (String) detail.get("value");
            if (key == null || value == null) {
                throw new InvalidParameterValueException("Invalid Zone Detail specified, fields 'key' and 'value' cannot be null, please specify details in the form:  details[0].key=XXX&details[0].value=YYY");
            }
            // validate the zone detail keys are known keys
            /*
                 * if(!ZoneConfig.doesKeyExist(key)){ throw new
                 * InvalidParameterValueException
                 * ("Invalid Zone Detail parameter: "+ key); }
                 */
            newDetails.put(key, value);
        }
    }
    // add the domain prefix list to details if not null
    if (dnsSearchOrder != null) {
        for (final String dom : dnsSearchOrder) {
            if (!NetUtils.verifyDomainName(dom)) {
                throw new InvalidParameterValueException("Invalid network domain suffixes. Total length shouldn't exceed 190 chars. Each domain label must be between 1 and 63 characters long, can contain ASCII letters 'a' through 'z', the digits '0' through '9', " + "and the hyphen ('-'); can't start or end with \"-\"");
            }
        }
        newDetails.put(ZoneConfig.DnsSearchOrder.getName(), StringUtils.join(dnsSearchOrder, ","));
    }
    final DataCenterVO zone = _zoneDao.findById(zoneId);
    if (zone == null) {
        throw new InvalidParameterValueException("unable to find zone by id " + zoneId);
    }
    if (zoneName == null) {
        zoneName = zone.getName();
    }
    if (guestCidr != null && !NetUtils.validateGuestCidr(guestCidr)) {
        throw new InvalidParameterValueException("Please enter a valid guest cidr");
    }
    // Make sure the zone exists
    if (!validZone(zoneId)) {
        throw new InvalidParameterValueException("A zone with ID: " + zoneId + " does not exist.");
    }
    final String oldZoneName = zone.getName();
    if (zoneName == null) {
        zoneName = oldZoneName;
    }
    if (dns1 == null) {
        dns1 = zone.getDns1();
    }
    if (dns2 == null) {
        dns2 = zone.getDns2();
    }
    if (ip6Dns1 == null) {
        ip6Dns1 = zone.getIp6Dns1();
    }
    if (ip6Dns2 == null) {
        ip6Dns2 = zone.getIp6Dns2();
    }
    if (internalDns1 == null) {
        internalDns1 = zone.getInternalDns1();
    }
    if (internalDns2 == null) {
        internalDns2 = zone.getInternalDns2();
    }
    if (guestCidr == null) {
        guestCidr = zone.getGuestNetworkCidr();
    }
    // validate network domain
    if (networkDomain != null && !networkDomain.isEmpty()) {
        if (!NetUtils.verifyDomainName(networkDomain)) {
            throw new InvalidParameterValueException("Invalid network domain. Total length shouldn't exceed 190 chars. Each domain label must be between 1 and 63 characters long, can contain ASCII letters 'a' through 'z', the digits '0' through '9', " + "and the hyphen ('-'); can't start or end with \"-\"");
        }
    }
    final boolean checkForDuplicates = !zoneName.equals(oldZoneName);
    // not allowing updating
    checkZoneParameters(zoneName, dns1, dns2, internalDns1, internalDns2, checkForDuplicates, null, allocationStateStr, ip6Dns1, ip6Dns2);
    // domain associated with
    // a zone, once created
    zone.setName(zoneName);
    zone.setDns1(dns1);
    zone.setDns2(dns2);
    zone.setIp6Dns1(ip6Dns1);
    zone.setIp6Dns2(ip6Dns2);
    zone.setInternalDns1(internalDns1);
    zone.setInternalDns2(internalDns2);
    zone.setGuestNetworkCidr(guestCidr);
    if (localStorageEnabled != null) {
        zone.setLocalStorageEnabled(localStorageEnabled.booleanValue());
    }
    if (networkDomain != null) {
        if (networkDomain.isEmpty()) {
            zone.setDomain(null);
        } else {
            zone.setDomain(networkDomain);
        }
    }
    Transaction.execute(new TransactionCallbackNoReturn() {

        @Override
        public void doInTransactionWithoutResult(final TransactionStatus status) {
            final Map<String, String> updatedDetails = new HashMap<String, String>();
            _zoneDao.loadDetails(zone);
            if (zone.getDetails() != null) {
                updatedDetails.putAll(zone.getDetails());
            }
            updatedDetails.putAll(newDetails);
            zone.setDetails(updatedDetails);
            if (allocationStateStr != null && !allocationStateStr.isEmpty()) {
                final Grouping.AllocationState allocationState = Grouping.AllocationState.valueOf(allocationStateStr);
                if (allocationState == Grouping.AllocationState.Enabled) {
                    // check if zone has necessary trafficTypes before enabling
                    try {
                        PhysicalNetwork mgmtPhyNetwork;
                        // zone should have a physical network with management
                        // traffiType
                        mgmtPhyNetwork = _networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Management);
                        if (NetworkType.Advanced == zone.getNetworkType() && !zone.isSecurityGroupEnabled()) {
                            // advanced zone without SG should have a physical
                            // network with public Thpe
                            _networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Public);
                        }
                        try {
                            _networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Storage);
                        } catch (final InvalidParameterValueException noStorage) {
                            final PhysicalNetworkTrafficTypeVO mgmtTraffic = _trafficTypeDao.findBy(mgmtPhyNetwork.getId(), TrafficType.Management);
                            _networkSvc.addTrafficTypeToPhysicalNetwork(mgmtPhyNetwork.getId(), TrafficType.Storage.toString(), "vlan", mgmtTraffic.getXenNetworkLabel(), mgmtTraffic.getKvmNetworkLabel(), mgmtTraffic.getVmwareNetworkLabel(), mgmtTraffic.getSimulatorNetworkLabel(), mgmtTraffic.getVlan(), mgmtTraffic.getHypervNetworkLabel(), mgmtTraffic.getOvm3NetworkLabel());
                            s_logger.info("No storage traffic type was specified by admin, create default storage traffic on physical network " + mgmtPhyNetwork.getId() + " with same configure of management traffic type");
                        }
                    } catch (final InvalidParameterValueException ex) {
                        throw new InvalidParameterValueException("Cannot enable this Zone since: " + ex.getMessage());
                    }
                }
                zone.setAllocationState(allocationState);
            }
            if (dhcpProvider != null) {
                zone.setDhcpProvider(dhcpProvider);
            }
            // update a private zone to public; not vice versa
            if (isPublic != null && isPublic) {
                zone.setDomainId(null);
                zone.setDomain(null);
                // release the dedication for this zone
                final DedicatedResourceVO resource = _dedicatedDao.findByZoneId(zoneId);
                Long resourceId = null;
                if (resource != null) {
                    resourceId = resource.getId();
                    if (!_dedicatedDao.remove(resourceId)) {
                        throw new CloudRuntimeException("Failed to delete dedicated Zone Resource " + resourceId);
                    }
                    // find the group associated and check if there are any more
                    // resources under that group
                    final List<DedicatedResourceVO> resourcesInGroup = _dedicatedDao.listByAffinityGroupId(resource.getAffinityGroupId());
                    if (resourcesInGroup.isEmpty()) {
                        // delete the group
                        _affinityGroupService.deleteAffinityGroup(resource.getAffinityGroupId(), null, null, null, null);
                    }
                }
            }
            if (!_zoneDao.update(zoneId, zone)) {
                throw new CloudRuntimeException("Failed to edit zone. Please contact Cloud Support.");
            }
        }
    });
    return zone;
}
Also used : DataCenterVO(com.cloud.dc.DataCenterVO) HashMap(java.util.HashMap) TransactionStatus(com.cloud.utils.db.TransactionStatus) TransactionCallbackNoReturn(com.cloud.utils.db.TransactionCallbackNoReturn) PhysicalNetworkTrafficTypeVO(com.cloud.network.dao.PhysicalNetworkTrafficTypeVO) InvalidParameterValueException(com.cloud.exception.InvalidParameterValueException) AllocationState(com.cloud.org.Grouping.AllocationState) PhysicalNetwork(com.cloud.network.PhysicalNetwork) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) ArrayList(java.util.ArrayList) List(java.util.List) DedicatedResourceVO(com.cloud.dc.DedicatedResourceVO) Map(java.util.Map) HashMap(java.util.HashMap) ActionEvent(com.cloud.event.ActionEvent) DB(com.cloud.utils.db.DB)

Example 5 with PhysicalNetwork

use of com.cloud.network.PhysicalNetwork in project cloudstack by apache.

the class NuageVspManagerImpl method createNuageVspDeviceResponse.

@Override
public NuageVspDeviceResponse createNuageVspDeviceResponse(NuageVspDeviceVO nuageVspDeviceVO) {
    HostVO nuageVspHost = _hostDao.findById(nuageVspDeviceVO.getHostId());
    _hostDao.loadDetails(nuageVspHost);
    NuageVspResourceConfiguration resourceConfiguration = NuageVspResourceConfiguration.fromConfiguration(nuageVspHost.getDetails());
    NuageVspDeviceResponse response = new NuageVspDeviceResponse();
    response.setDeviceName(nuageVspDeviceVO.getDeviceName());
    PhysicalNetwork pnw = ApiDBUtils.findPhysicalNetworkById(nuageVspDeviceVO.getPhysicalNetworkId());
    if (pnw != null) {
        response.setPhysicalNetworkId(pnw.getUuid());
    }
    response.setId(nuageVspDeviceVO.getUuid());
    response.setProviderName(nuageVspDeviceVO.getProviderName());
    response.setHostName(resourceConfiguration.hostName());
    response.setPort(Integer.parseInt(resourceConfiguration.port()));
    String apiRelativePath = resourceConfiguration.apiRelativePath();
    response.setApiVersion(apiRelativePath.substring(apiRelativePath.lastIndexOf('/') + 1));
    response.setApiRetryCount(Integer.parseInt(resourceConfiguration.retryCount()));
    response.setApiRetryInterval(Long.parseLong(resourceConfiguration.retryInterval()));
    response.setCmsId(resourceConfiguration.nuageVspCmsId());
    response.setObjectName("nuagevspdevice");
    return response;
}
Also used : NuageVspResourceConfiguration(com.cloud.network.resource.NuageVspResourceConfiguration) PhysicalNetwork(com.cloud.network.PhysicalNetwork) HostVO(com.cloud.host.HostVO) NuageVspDeviceResponse(com.cloud.api.response.NuageVspDeviceResponse)

Aggregations

PhysicalNetwork (com.cloud.network.PhysicalNetwork)34 InvalidParameterValueException (com.cloud.exception.InvalidParameterValueException)9 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)8 ArrayList (java.util.ArrayList)8 HostVO (com.cloud.host.HostVO)7 Network (com.cloud.network.Network)7 Host (com.cloud.host.Host)6 DB (com.cloud.utils.db.DB)6 DataCenterVO (com.cloud.dc.DataCenterVO)5 TransactionStatus (com.cloud.utils.db.TransactionStatus)5 DataCenter (com.cloud.dc.DataCenter)4 ActionEvent (com.cloud.event.ActionEvent)4 NetworkVO (com.cloud.network.dao.NetworkVO)4 Account (com.cloud.user.Account)4 List (java.util.List)4 ConfigurationException (javax.naming.ConfigurationException)4 ServerApiException (com.cloud.api.ServerApiException)3 PhysicalNetworkResponse (com.cloud.api.response.PhysicalNetworkResponse)3 PhysicalNetworkVO (com.cloud.network.dao.PhysicalNetworkVO)3 NetworkOffering (com.cloud.offering.NetworkOffering)3