| // Licensed to the Apache Software Foundation (ASF) under one | |
| // or more contributor license agreements. See the NOTICE file | |
| // distributed with this work for additional information | |
| // regarding copyright ownership. The ASF licenses this file | |
| // to you under the Apache License, Version 2.0 (the | |
| // "License"); you may not use this file except in compliance | |
| // with the License. You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, | |
| // software distributed under the License is distributed on an | |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| // KIND, either express or implied. See the License for the | |
| // specific language governing permissions and limitations | |
| // under the License. | |
| package com.cloud.network; | |
| import java.util.ArrayList; | |
| import java.util.Collection; | |
| import java.util.HashMap; | |
| import java.util.List; | |
| import java.util.Map; | |
| import java.util.concurrent.ScheduledExecutorService; | |
| import javax.inject.Inject; | |
| import org.springframework.stereotype.Component; | |
| import org.apache.cloudstack.api.ApiConstants; | |
| import org.apache.cloudstack.api.command.admin.network.AddNetworkDeviceCmd; | |
| import org.apache.cloudstack.api.command.admin.network.DeleteNetworkDeviceCmd; | |
| import org.apache.cloudstack.api.command.admin.network.ListNetworkDeviceCmd; | |
| import org.apache.cloudstack.api.response.NetworkDeviceResponse; | |
| import org.apache.cloudstack.framework.config.dao.ConfigurationDao; | |
| import org.apache.cloudstack.network.ExternalNetworkDeviceManager; | |
| import com.cloud.agent.AgentManager; | |
| import com.cloud.dc.dao.DataCenterDao; | |
| import com.cloud.dc.dao.VlanDao; | |
| import com.cloud.host.Host; | |
| import com.cloud.host.HostVO; | |
| import com.cloud.host.dao.HostDao; | |
| import com.cloud.network.dao.ExternalFirewallDeviceDao; | |
| import com.cloud.network.dao.ExternalLoadBalancerDeviceDao; | |
| import com.cloud.network.dao.IPAddressDao; | |
| import com.cloud.network.dao.InlineLoadBalancerNicMapDao; | |
| import com.cloud.network.dao.LoadBalancerDao; | |
| import com.cloud.network.dao.NetworkDao; | |
| import com.cloud.network.dao.NetworkExternalFirewallDao; | |
| import com.cloud.network.dao.NetworkExternalLoadBalancerDao; | |
| import com.cloud.network.dao.PhysicalNetworkDao; | |
| import com.cloud.network.dao.PhysicalNetworkServiceProviderDao; | |
| import com.cloud.network.dao.VpnUserDao; | |
| import com.cloud.network.rules.dao.PortForwardingRulesDao; | |
| import com.cloud.offerings.dao.NetworkOfferingDao; | |
| import com.cloud.user.AccountManager; | |
| import com.cloud.user.dao.AccountDao; | |
| import com.cloud.user.dao.UserStatisticsDao; | |
| import com.cloud.utils.component.ManagerBase; | |
| import com.cloud.utils.exception.CloudRuntimeException; | |
| import com.cloud.vm.dao.DomainRouterDao; | |
| import com.cloud.vm.dao.NicDao; | |
| @Component | |
| public class ExternalNetworkDeviceManagerImpl extends ManagerBase implements ExternalNetworkDeviceManager { | |
| @Inject | |
| AgentManager _agentMgr; | |
| @Inject | |
| NetworkModel _networkMgr; | |
| @Inject | |
| HostDao _hostDao; | |
| @Inject | |
| DataCenterDao _dcDao; | |
| @Inject | |
| AccountDao _accountDao; | |
| @Inject | |
| DomainRouterDao _routerDao; | |
| @Inject | |
| IPAddressDao _ipAddressDao; | |
| @Inject | |
| VlanDao _vlanDao; | |
| @Inject | |
| UserStatisticsDao _userStatsDao; | |
| @Inject | |
| NetworkDao _networkDao; | |
| @Inject | |
| PortForwardingRulesDao _portForwardingRulesDao; | |
| @Inject | |
| LoadBalancerDao _loadBalancerDao; | |
| @Inject | |
| ConfigurationDao _configDao; | |
| @Inject | |
| NetworkOfferingDao _networkOfferingDao; | |
| @Inject | |
| NicDao _nicDao; | |
| @Inject | |
| VpnUserDao _vpnUsersDao; | |
| @Inject | |
| InlineLoadBalancerNicMapDao _inlineLoadBalancerNicMapDao; | |
| @Inject | |
| AccountManager _accountMgr; | |
| @Inject | |
| PhysicalNetworkDao _physicalNetworkDao; | |
| @Inject | |
| PhysicalNetworkServiceProviderDao _physicalNetworkServiceProviderDao; | |
| @Inject | |
| ExternalLoadBalancerDeviceDao _externalLoadBalancerDeviceDao; | |
| @Inject | |
| ExternalFirewallDeviceDao _externalFirewallDeviceDao; | |
| @Inject | |
| NetworkExternalLoadBalancerDao _networkExternalLBDao; | |
| @Inject | |
| NetworkExternalFirewallDao _networkExternalFirewallDao; | |
| ScheduledExecutorService _executor; | |
| int _externalNetworkStatsInterval; | |
| // obsolete | |
| // private final static IdentityService _identityService = (IdentityService)ComponentLocator.getLocator(ManagementServer.Name).getManager(IdentityService.class); | |
| @Override | |
| public Host addNetworkDevice(AddNetworkDeviceCmd cmd) { | |
| Map paramList = cmd.getParamList(); | |
| if (paramList == null) { | |
| throw new CloudRuntimeException("Parameter list is null"); | |
| } | |
| Collection paramsCollection = paramList.values(); | |
| HashMap params = (HashMap)(paramsCollection.toArray())[0]; | |
| return null; | |
| } | |
| @Override | |
| public NetworkDeviceResponse getApiResponse(Host device) { | |
| return null; | |
| } | |
| private List<Host> listNetworkDevice(Long zoneId, Long physicalNetworkId, Long podId, Host.Type type) { | |
| return null; | |
| } | |
| @Override | |
| public List<Host> listNetworkDevice(ListNetworkDeviceCmd cmd) { | |
| Map paramList = cmd.getParamList(); | |
| if (paramList == null) { | |
| throw new CloudRuntimeException("Parameter list is null"); | |
| } | |
| List<Host> res; | |
| Collection paramsCollection = paramList.values(); | |
| HashMap params = (HashMap)(paramsCollection.toArray())[0]; | |
| if (NetworkDevice.ExternalDhcp.getName().equalsIgnoreCase(cmd.getDeviceType())) { | |
| Long zoneId = Long.parseLong((String)params.get(ApiConstants.ZONE_ID)); | |
| Long podId = Long.parseLong((String)params.get(ApiConstants.POD_ID)); | |
| res = listNetworkDevice(zoneId, null, podId, Host.Type.ExternalDhcp); | |
| } else if (NetworkDevice.PxeServer.getName().equalsIgnoreCase(cmd.getDeviceType())) { | |
| Long zoneId = Long.parseLong((String)params.get(ApiConstants.ZONE_ID)); | |
| Long podId = Long.parseLong((String)params.get(ApiConstants.POD_ID)); | |
| res = listNetworkDevice(zoneId, null, podId, Host.Type.PxeServer); | |
| } else if (cmd.getDeviceType() == null) { | |
| Long zoneId = Long.parseLong((String)params.get(ApiConstants.ZONE_ID)); | |
| Long podId = Long.parseLong((String)params.get(ApiConstants.POD_ID)); | |
| Long physicalNetworkId = (params.get(ApiConstants.PHYSICAL_NETWORK_ID) == null) ? Long.parseLong((String)params.get(ApiConstants.PHYSICAL_NETWORK_ID)) : null; | |
| List<Host> res1 = listNetworkDevice(zoneId, physicalNetworkId, podId, Host.Type.PxeServer); | |
| List<Host> res2 = listNetworkDevice(zoneId, physicalNetworkId, podId, Host.Type.ExternalDhcp); | |
| List<Host> res3 = listNetworkDevice(zoneId, physicalNetworkId, podId, Host.Type.ExternalLoadBalancer); | |
| List<Host> res4 = listNetworkDevice(zoneId, physicalNetworkId, podId, Host.Type.ExternalFirewall); | |
| List<Host> deviceAll = new ArrayList<Host>(); | |
| deviceAll.addAll(res1); | |
| deviceAll.addAll(res2); | |
| deviceAll.addAll(res3); | |
| deviceAll.addAll(res4); | |
| res = deviceAll; | |
| } else { | |
| throw new CloudRuntimeException("Unknown network device type:" + cmd.getDeviceType()); | |
| } | |
| return res; | |
| } | |
| @Override | |
| public boolean deleteNetworkDevice(DeleteNetworkDeviceCmd cmd) { | |
| HostVO device = _hostDao.findById(cmd.getId()); | |
| return true; | |
| } | |
| } |