From 3de476340e312739d27af0a82552e08f43cde93e Mon Sep 17 00:00:00 2001 From: frank Date: Mon, 21 May 2012 17:50:34 -0700 Subject: [PATCH] able to add/list baremetaldhcp/baremetalpxe --- .../agent/api/StartupExternalDhcpCommand.java | 2 +- .../agent/api/StartupPxeServerCommand.java | 2 +- api/src/com/cloud/host/Host.java | 4 ++-- .../manager/BareMetalTemplateAdapter.java | 8 +++---- .../AddBaremetalPxePingServerCmd.java | 4 ++-- .../BareMetalPingServiceImpl.java | 13 +++++----- .../networkservice/BaremetalDhcpElement.java | 4 +--- .../networkservice/BaremetalDhcpManager.java | 2 ++ .../BaremetalDhcpManagerImpl.java | 17 ++++++------- .../BaremetalDhcpResourceBase.java | 2 +- .../BaremetalPingPxeResource.java | 10 ++++++-- .../networkservice/BaremetalPxeElement.java | 3 +-- .../networkservice/BaremetalPxeManager.java | 2 ++ .../BaremetalPxeManagerImpl.java | 2 +- .../BaremetalPxeResourceBase.java | 2 +- .../networkservice/ListBaremetalDhcpCmd.java | 24 +++++++++++++++---- .../ListBaremetalPxePingServersCmd.java | 6 ++--- .../baremetalpxe_commands.properties.in | 6 +++++ client/tomcatconf/components.xml.in | 4 ++++ .../src/com/cloud/host/dao/HostDaoImpl.java | 2 +- .../ExternalNetworkDeviceManagerImpl.java | 8 +++---- 21 files changed, 80 insertions(+), 47 deletions(-) create mode 100644 client/tomcatconf/baremetalpxe_commands.properties.in diff --git a/api/src/com/cloud/agent/api/StartupExternalDhcpCommand.java b/api/src/com/cloud/agent/api/StartupExternalDhcpCommand.java index 0322b2a8d5e..18081c06e3e 100644 --- a/api/src/com/cloud/agent/api/StartupExternalDhcpCommand.java +++ b/api/src/com/cloud/agent/api/StartupExternalDhcpCommand.java @@ -16,6 +16,6 @@ import com.cloud.host.Host; public class StartupExternalDhcpCommand extends StartupCommand { public StartupExternalDhcpCommand() { - super(Host.Type.ExternalDhcp); + super(Host.Type.BaremetalDhcp); } } diff --git a/api/src/com/cloud/agent/api/StartupPxeServerCommand.java b/api/src/com/cloud/agent/api/StartupPxeServerCommand.java index f36ccd77691..4bd4fea339b 100644 --- a/api/src/com/cloud/agent/api/StartupPxeServerCommand.java +++ b/api/src/com/cloud/agent/api/StartupPxeServerCommand.java @@ -16,6 +16,6 @@ import com.cloud.host.Host; public class StartupPxeServerCommand extends StartupCommand { public StartupPxeServerCommand() { - super(Host.Type.PxeServer); + super(Host.Type.BaremetalPxe); } } diff --git a/api/src/com/cloud/host/Host.java b/api/src/com/cloud/host/Host.java index c283b204749..d8632d2fd87 100755 --- a/api/src/com/cloud/host/Host.java +++ b/api/src/com/cloud/host/Host.java @@ -32,10 +32,10 @@ public interface Host extends StateObject { ExternalFirewall(false), ExternalLoadBalancer(false), ExternalVirtualSwitchSupervisor(false), - PxeServer(false), TrafficMonitor(false), - ExternalDhcp(false), + BaremetalPxe(false), + BaremetalDhcp(false), SecondaryStorageVM(true), LocalSecondaryStorage(false); boolean _virtual; diff --git a/baremetal/src/com/cloud/baremetal/manager/BareMetalTemplateAdapter.java b/baremetal/src/com/cloud/baremetal/manager/BareMetalTemplateAdapter.java index 8180ae05be4..924a00b1e73 100755 --- a/baremetal/src/com/cloud/baremetal/manager/BareMetalTemplateAdapter.java +++ b/baremetal/src/com/cloud/baremetal/manager/BareMetalTemplateAdapter.java @@ -56,13 +56,13 @@ public class BareMetalTemplateAdapter extends TemplateAdapterBase implements Tem if (profile.getZoneId() == null || profile.getZoneId() == -1) { List dcs = _dcDao.listAllIncludingRemoved(); for (DataCenterVO dc : dcs) { - List pxeServers = _resourceMgr.listAllHostsInOneZoneByType(Host.Type.PxeServer, dc.getId()); + List pxeServers = _resourceMgr.listAllHostsInOneZoneByType(Host.Type.BaremetalPxe, dc.getId()); if (pxeServers.size() == 0) { throw new CloudRuntimeException("Please add PXE server before adding baremetal template in zone " + dc.getName()); } } } else { - List pxeServers = _resourceMgr.listAllHostsInOneZoneByType(Host.Type.PxeServer, profile.getZoneId()); + List pxeServers = _resourceMgr.listAllHostsInOneZoneByType(Host.Type.BaremetalPxe, profile.getZoneId()); if (pxeServers.size() == 0) { throw new CloudRuntimeException("Please add PXE server before adding baremetal template in zone " + profile.getZoneId()); } @@ -99,7 +99,7 @@ public class BareMetalTemplateAdapter extends TemplateAdapterBase implements Tem if (zoneId == null || zoneId == -1) { List dcs = _dcDao.listAllIncludingRemoved(); for (DataCenterVO dc : dcs) { - HostVO pxe = _resourceMgr.listAllHostsInOneZoneByType(Host.Type.PxeServer, dc.getId()).get(0); + HostVO pxe = _resourceMgr.listAllHostsInOneZoneByType(Host.Type.BaremetalPxe, dc.getId()).get(0); vmTemplateHost = _tmpltHostDao.findByHostTemplate(dc.getId(), template.getId()); if (vmTemplateHost == null) { @@ -110,7 +110,7 @@ public class BareMetalTemplateAdapter extends TemplateAdapterBase implements Tem } } } else { - HostVO pxe = _resourceMgr.listAllHostsInOneZoneByType(Host.Type.PxeServer, zoneId).get(0); + HostVO pxe = _resourceMgr.listAllHostsInOneZoneByType(Host.Type.BaremetalPxe, zoneId).get(0); vmTemplateHost = new VMTemplateHostVO(pxe.getId(), template.getId(), new Date(), 100, Status.DOWNLOADED, null, null, null, null, template.getUrl()); _tmpltHostDao.persist(vmTemplateHost); diff --git a/baremetal/src/com/cloud/baremetal/networkservice/AddBaremetalPxePingServerCmd.java b/baremetal/src/com/cloud/baremetal/networkservice/AddBaremetalPxePingServerCmd.java index dc5a7316216..bcc5434f7ac 100644 --- a/baremetal/src/com/cloud/baremetal/networkservice/AddBaremetalPxePingServerCmd.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/AddBaremetalPxePingServerCmd.java @@ -15,10 +15,10 @@ public class AddBaremetalPxePingServerCmd extends AddBaremetalPxeCmd { @Parameter(name=ApiConstants.TFTP_DIR, type=CommandType.STRING, required = true, description="Tftp root directory of PXE server") private String tftpDir; - @Parameter(name=ApiConstants.PING_CIFS_USERNAME, type=CommandType.STRING, required = true, description="Username of PING storage server") + @Parameter(name=ApiConstants.PING_CIFS_USERNAME, type=CommandType.STRING, description="Username of PING storage server") private String pingStorageServerUserName; - @Parameter(name=ApiConstants.PING_CIFS_PASSWORD, type=CommandType.STRING, required = true, description="Password of PING storage server") + @Parameter(name=ApiConstants.PING_CIFS_PASSWORD, type=CommandType.STRING, description="Password of PING storage server") private String pingStorageServerPassword; public String getPingStorageServerIp() { diff --git a/baremetal/src/com/cloud/baremetal/networkservice/BareMetalPingServiceImpl.java b/baremetal/src/com/cloud/baremetal/networkservice/BareMetalPingServiceImpl.java index d577f155134..0b62e1159be 100755 --- a/baremetal/src/com/cloud/baremetal/networkservice/BareMetalPingServiceImpl.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/BareMetalPingServiceImpl.java @@ -28,6 +28,7 @@ import com.cloud.agent.api.baremetal.PreparePxeServerAnswer; import com.cloud.agent.api.baremetal.PreparePxeServerCommand; import com.cloud.agent.api.baremetal.prepareCreateTemplateCommand; import com.cloud.agent.api.baremetal.IpmISetBootDevCommand.BootDev; +import com.cloud.baremetal.database.BaremetalPxeDao; import com.cloud.baremetal.database.BaremetalPxeVO; import com.cloud.baremetal.networkservice.BaremetalPxeService; import com.cloud.baremetal.networkservice.BaremetalPxeManager.BaremetalPxeType; @@ -67,6 +68,7 @@ public class BareMetalPingServiceImpl extends BareMetalPxeServiceBase implements @Inject PhysicalNetworkDao _physicalNetworkDao; @Inject PhysicalNetworkServiceProviderDao _physicalNetworkServiceProviderDao; @Inject HostDetailsDao _hostDetailsDao; + @Inject BaremetalPxeDao _pxeDao; @Override @@ -170,10 +172,9 @@ public class BareMetalPingServiceImpl extends BareMetalPxeServiceBase implements } zoneId = pNetwork.getDataCenterId(); - NetworkDevice ntwkDevice = NetworkDevice.PxeServer; - PhysicalNetworkServiceProviderVO ntwkSvcProvider = _physicalNetworkServiceProviderDao.findByServiceProvider(pNetwork.getId(), ntwkDevice.getNetworkServiceProvder()); + PhysicalNetworkServiceProviderVO ntwkSvcProvider = _physicalNetworkServiceProviderDao.findByServiceProvider(pNetwork.getId(), BaremetalPxeManager.BAREMETAL_PXE_SERVICE_PROVIDER.getName()); if (ntwkSvcProvider == null) { - throw new CloudRuntimeException("Network Service Provider: " + ntwkDevice.getNetworkServiceProvder() + + throw new CloudRuntimeException("Network Service Provider: " + BaremetalPxeManager.BAREMETAL_PXE_SERVICE_PROVIDER.getName() + " is not enabled in the physical network: " + cmd.getPhysicalNetworkId() + "to add this device"); } else if (ntwkSvcProvider.getState() == PhysicalNetworkServiceProvider.State.Shutdown) { throw new CloudRuntimeException("Network Service Provider: " + ntwkSvcProvider.getProviderName() + @@ -185,7 +186,7 @@ public class BareMetalPingServiceImpl extends BareMetalPxeServiceBase implements throw new InvalidParameterValueException("Could not find pod with ID: " + cmd.getPodId()); } - List pxes = _resourceMgr.listAllUpAndEnabledHosts(Host.Type.PxeServer, null, cmd.getPodId(), zoneId); + List pxes = _resourceMgr.listAllUpAndEnabledHosts(Host.Type.BaremetalPxe, null, cmd.getPodId(), zoneId); if (pxes.size() != 0) { throw new InvalidParameterValueException("Already had a PXE server in Pod: " + cmd.getPodId() + " zone: " + zoneId); } @@ -226,7 +227,6 @@ public class BareMetalPingServiceImpl extends BareMetalPxeServiceBase implements ServerResource resource = null; Map params = new HashMap(); - params.put(BaremetalPxeService.PXE_PARAM_ZONE, BaremetalPxeType.PING.toString()); params.put(BaremetalPxeService.PXE_PARAM_ZONE, Long.toString(zoneId)); params.put(BaremetalPxeService.PXE_PARAM_POD, String.valueOf(pod.getId())); params.put(BaremetalPxeService.PXE_PARAM_IP, ipAddress); @@ -247,7 +247,7 @@ public class BareMetalPingServiceImpl extends BareMetalPxeServiceBase implements throw new CloudRuntimeException(e.getMessage()); } - Host pxeServer = _resourceMgr.addHost(zoneId, resource, Host.Type.PxeServer, params); + Host pxeServer = _resourceMgr.addHost(zoneId, resource, Host.Type.BaremetalPxe, params); if (pxeServer == null) { throw new CloudRuntimeException("Cannot add PXE server as a host"); } @@ -259,6 +259,7 @@ public class BareMetalPingServiceImpl extends BareMetalPxeServiceBase implements vo.setPodId(pod.getId()); vo.setPhysicalNetworkId(pcmd.getPhysicalNetworkId()); vo.setDeviceType(BaremetalPxeType.PING.toString()); + _pxeDao.persist(vo); txn.commit(); return vo; } diff --git a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpElement.java b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpElement.java index 9a3d33a23ce..cdff4111f9f 100644 --- a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpElement.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpElement.java @@ -47,7 +47,6 @@ import com.cloud.vm.VirtualMachineProfile; public class BaremetalDhcpElement extends AdapterBase implements DhcpServiceProvider { private static final Logger s_logger = Logger.getLogger(BaremetalDhcpElement.class); private static final Map> capabilities; - private static final Provider provider = new Provider("BaremetalDhcpProvider", true); @Inject NicDao _nicDao; @Inject BaremetalDhcpManager _dhcpMgr; @@ -67,7 +66,7 @@ public class BaremetalDhcpElement extends AdapterBase implements DhcpServiceProv @Override public Provider getProvider() { - return provider; + return BaremetalDhcpManager.BAREMETAL_DHCP_SERVICE_PROVIDER; } private boolean canHandle(DeployDestination dest, TrafficType trafficType, GuestType networkType) { @@ -155,5 +154,4 @@ public class BaremetalDhcpElement extends AdapterBase implements DhcpServiceProv } return _dhcpMgr.addVirtualMachineIntoNetwork(network, nic, vm, dest, context); } - } diff --git a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpManager.java b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpManager.java index 8b03b760172..5f1a8717e5c 100644 --- a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpManager.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpManager.java @@ -19,6 +19,7 @@ import com.cloud.deploy.DeployDestination; import com.cloud.exception.ResourceUnavailableException; import com.cloud.host.Host; import com.cloud.network.Network; +import com.cloud.network.Network.Provider; import com.cloud.uservm.UserVm; import com.cloud.utils.component.Manager; import com.cloud.utils.component.PluggableService; @@ -43,4 +44,5 @@ public interface BaremetalDhcpManager extends Manager, PluggableService { public static final String BAREMETAL_DHCP_SERVICE_CAPABITLITY = "BaremetalDhcp"; public static final String BAREMETAL_DHCP_SERVICE_PROPERTIES = "baremetaldhcp_commands.properties"; + public static final Provider BAREMETAL_DHCP_SERVICE_PROVIDER = new Provider("BaremetalDhcpProvider", true); } diff --git a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpManagerImpl.java b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpManagerImpl.java index ffb0cf241b1..2ac791233e3 100755 --- a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpManagerImpl.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpManagerImpl.java @@ -125,7 +125,7 @@ public class BaremetalDhcpManagerImpl implements BaremetalDhcpManager, ResourceS DeployDestination dest, ReservationContext context) throws ResourceUnavailableException { Long zoneId = profile.getVirtualMachine().getDataCenterIdToDeployIn(); Long podId = profile.getVirtualMachine().getPodIdToDeployIn(); - List hosts = _resourceMgr.listAllUpAndEnabledHosts(Type.ExternalDhcp, null, podId, zoneId); + List hosts = _resourceMgr.listAllUpAndEnabledHosts(Type.BaremetalDhcp, null, podId, zoneId); if (hosts.size() == 0) { throw new CloudRuntimeException("No external Dhcp found in zone " + zoneId + " pod " + podId); } @@ -173,7 +173,7 @@ public class BaremetalDhcpManagerImpl implements BaremetalDhcpManager, ResourceS return null; } - host.setType(Host.Type.ExternalDhcp); + host.setType(Host.Type.BaremetalDhcp); return host; } @@ -205,11 +205,10 @@ public class BaremetalDhcpManagerImpl implements BaremetalDhcpManager, ResourceS zoneId = pNetwork.getDataCenterId(); DataCenterVO zone = _dcDao.findById(zoneId); - NetworkDevice ntwkDevice = NetworkDevice.ExternalDhcp; PhysicalNetworkServiceProviderVO ntwkSvcProvider = _physicalNetworkServiceProviderDao.findByServiceProvider(pNetwork.getId(), - ntwkDevice.getNetworkServiceProvder()); + BaremetalDhcpManager.BAREMETAL_DHCP_SERVICE_PROVIDER.getName()); if (ntwkSvcProvider == null) { - throw new CloudRuntimeException("Network Service Provider: " + ntwkDevice.getNetworkServiceProvder() + " is not enabled in the physical network: " + throw new CloudRuntimeException("Network Service Provider: " + BaremetalDhcpManager.BAREMETAL_DHCP_SERVICE_PROVIDER.getName() + " is not enabled in the physical network: " + cmd.getPhysicalNetworkId() + "to add this device"); } else if (ntwkSvcProvider.getState() == PhysicalNetworkServiceProvider.State.Shutdown) { throw new CloudRuntimeException("Network Service Provider: " + ntwkSvcProvider.getProviderName() @@ -221,7 +220,7 @@ public class BaremetalDhcpManagerImpl implements BaremetalDhcpManager, ResourceS throw new InvalidParameterValueException("Could not find pod with ID: " + cmd.getPodId()); } - List dhcps = _resourceMgr.listAllUpAndEnabledHosts(Host.Type.ExternalDhcp, null, cmd.getPodId(), zoneId); + List dhcps = _resourceMgr.listAllUpAndEnabledHosts(Host.Type.BaremetalDhcp, null, cmd.getPodId(), zoneId); if (dhcps.size() != 0) { throw new InvalidParameterValueException("Already had a DHCP server in Pod: " + cmd.getPodId() + " zone: " + zoneId); } @@ -267,7 +266,7 @@ public class BaremetalDhcpManagerImpl implements BaremetalDhcpManager, ResourceS throw new CloudRuntimeException(e.getMessage()); } - Host dhcpServer = _resourceMgr.addHost(zoneId, resource, Host.Type.ExternalDhcp, params); + Host dhcpServer = _resourceMgr.addHost(zoneId, resource, Host.Type.BaremetalDhcp, params); if (dhcpServer == null) { throw new CloudRuntimeException("Cannot add external Dhcp server as a host"); } @@ -298,7 +297,9 @@ public class BaremetalDhcpManagerImpl implements BaremetalDhcpManager, ResourceS @Override public List listBaremetalDhcps(ListBaremetalDhcpCmd cmd) { SearchCriteriaService sc = SearchCriteria2.create(BaremetalDhcpVO.class); - sc.addAnd(sc.getEntity().getDeviceType(), Op.EQ, cmd.getDeviceType()); + if (cmd.getDeviceType() != null) { + sc.addAnd(sc.getEntity().getDeviceType(), Op.EQ, cmd.getDeviceType()); + } if (cmd.getPodId() != null) { sc.addAnd(sc.getEntity().getPodId(), Op.EQ, cmd.getPodId()); if (cmd.getId() != null) { diff --git a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpResourceBase.java b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpResourceBase.java index e29d1bbd2bf..79fd475e73b 100644 --- a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpResourceBase.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpResourceBase.java @@ -112,7 +112,7 @@ public class BaremetalDhcpResourceBase implements ServerResource { @Override public Type getType() { - return Type.ExternalDhcp; + return Type.BaremetalDhcp; } @Override diff --git a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java index f06e75372b4..33687f3b563 100755 --- a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java @@ -19,21 +19,28 @@ import javax.naming.ConfigurationException; import org.apache.log4j.Logger; +import com.cloud.agent.IAgentControl; import com.cloud.agent.api.Answer; import com.cloud.agent.api.Command; import com.cloud.agent.api.PingCommand; import com.cloud.agent.api.PingRoutingCommand; +import com.cloud.agent.api.StartupCommand; +import com.cloud.agent.api.StartupExternalDhcpCommand; import com.cloud.agent.api.baremetal.PreparePxeServerAnswer; import com.cloud.agent.api.baremetal.PreparePxeServerCommand; import com.cloud.agent.api.baremetal.prepareCreateTemplateCommand; +import com.cloud.api.ApiConstants; import com.cloud.baremetal.networkservice.BaremetalPxeService; +import com.cloud.host.Host.Type; +import com.cloud.resource.ServerResource; import com.cloud.utils.script.Script; import com.cloud.utils.ssh.SSHCmdHelper; import com.cloud.vm.VirtualMachine.State; import com.trilead.ssh2.SCPClient; -public class BaremetalPingPxeResource extends BareMetalResourceBase { +public class BaremetalPingPxeResource extends BaremetalPxeResourceBase { private static final Logger s_logger = Logger.getLogger(BaremetalPingPxeResource.class); + private static final String _name = "BaremetalPingPxeResource"; String _storageServer; String _pingDir; String _share; @@ -45,7 +52,6 @@ public class BaremetalPingPxeResource extends BareMetalResourceBase { @Override public boolean configure(String name, Map params) throws ConfigurationException { super.configure(name, params); - _storageServer = (String)params.get(BaremetalPxeService.PXE_PARAM_PING_STORAGE_SERVER_IP); _pingDir = (String)params.get(BaremetalPxeService.PXE_PARAM_PING_ROOT_DIR); _tftpDir = (String)params.get(BaremetalPxeService.PXE_PARAM_TFTP_DIR); diff --git a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java index d0d9eb425f4..79c803c8ef7 100644 --- a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java @@ -42,7 +42,6 @@ import com.cloud.vm.VirtualMachine.Type; public class BaremetalPxeElement extends AdapterBase implements NetworkElement { private static final Logger s_logger = Logger.getLogger(BaremetalPxeElement.class); private static final Map> capabilities; - private static final Provider provider = new Provider("BaremetalPxeProvider", true); @Inject BaremetalPxeManager _pxeMgr;; @@ -61,7 +60,7 @@ public class BaremetalPxeElement extends AdapterBase implements NetworkElement { @Override public Provider getProvider() { - return provider; + return BaremetalPxeManager.BAREMETAL_PXE_SERVICE_PROVIDER; } private boolean canHandle(DeployDestination dest, TrafficType trafficType, GuestType networkType) { diff --git a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeManager.java b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeManager.java index a3f38c5c7d4..17ed64611fa 100644 --- a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeManager.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeManager.java @@ -18,6 +18,7 @@ import com.cloud.baremetal.database.BaremetalPxeVO; import com.cloud.deploy.DeployDestination; import com.cloud.host.HostVO; import com.cloud.network.Network; +import com.cloud.network.Network.Provider; import com.cloud.uservm.UserVm; import com.cloud.utils.component.Manager; import com.cloud.utils.component.PluggableService; @@ -45,4 +46,5 @@ public interface BaremetalPxeManager extends Manager, PluggableService { public static final Network.Service BAREMETAL_PXE_SERVICE = new Network.Service("BaremetalPxeService"); public static final String BAREMETAL_PXE_CAPABILITY = "BaremetalPxe"; public static final String BAREMETAL_PXE_SERVICE_PROPERTIES = "baremetalpxe_commands.properties"; + public static final Provider BAREMETAL_PXE_SERVICE_PROVIDER = new Provider("BaremetalPxeProvider", true);; } diff --git a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeManagerImpl.java b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeManagerImpl.java index 4e38ed7a67c..f2b3395992c 100755 --- a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeManagerImpl.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeManagerImpl.java @@ -121,7 +121,7 @@ public class BaremetalPxeManagerImpl implements BaremetalPxeManager, ResourceSta return null; } - host.setType(Host.Type.PxeServer); + host.setType(Host.Type.BaremetalPxe); return host; } diff --git a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeResourceBase.java b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeResourceBase.java index fd7ff7ed88b..aa289b35b56 100644 --- a/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeResourceBase.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeResourceBase.java @@ -99,7 +99,7 @@ public class BaremetalPxeResourceBase implements ServerResource { @Override public Type getType() { - return Type.PxeServer; + return Type.BaremetalPxe; } @Override diff --git a/baremetal/src/com/cloud/baremetal/networkservice/ListBaremetalDhcpCmd.java b/baremetal/src/com/cloud/baremetal/networkservice/ListBaremetalDhcpCmd.java index dac14c58641..b49c4a4644d 100644 --- a/baremetal/src/com/cloud/baremetal/networkservice/ListBaremetalDhcpCmd.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/ListBaremetalDhcpCmd.java @@ -1,16 +1,20 @@ package com.cloud.baremetal.networkservice; +import java.util.List; + import org.apache.log4j.Logger; import com.cloud.api.BaseListCmd; import com.cloud.api.ApiConstants; +import com.cloud.api.BaseCmd; import com.cloud.api.IdentityMapper; import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.PlugService; import com.cloud.api.ServerApiException; import com.cloud.api.BaseCmd.CommandType; +import com.cloud.api.response.ListResponse; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; import com.cloud.exception.NetworkRuleConflictException; @@ -26,15 +30,15 @@ public class ListBaremetalDhcpCmd extends BaseListCmd { // /////////////////////////////////////////////////// // ////////////// API parameters ///////////////////// // /////////////////////////////////////////////////// - @IdentityMapper(entityTableName = "external_dhcp_devices") - @Parameter(name = ApiConstants.ID, type = CommandType.LONG, required = true, description = "DHCP server device ID") + @IdentityMapper(entityTableName = "baremetal_dhcp_devices") + @Parameter(name = ApiConstants.ID, type = CommandType.LONG, description = "DHCP server device ID") private Long id; @IdentityMapper(entityTableName = "host_pod_ref") - @Parameter(name = ApiConstants.POD_ID, type = CommandType.LONG, required = true, description = "Pod ID where pxe server is in") + @Parameter(name = ApiConstants.POD_ID, type = CommandType.LONG, description = "Pod ID where pxe server is in") private Long podId; - @Parameter(name = ApiConstants.DHCP_SERVER_TYPE, type = CommandType.STRING, required = true, description = "Type of DHCP device") + @Parameter(name = ApiConstants.DHCP_SERVER_TYPE, type = CommandType.STRING, description = "Type of DHCP device") private String deviceType; public Long getId() { @@ -64,12 +68,22 @@ public class ListBaremetalDhcpCmd extends BaseListCmd { @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { + try { + ListResponse response = new ListResponse(); + List dhcpResponses = _dhcpMgr.listBaremetalDhcps(this); + response.setResponses(dhcpResponses); + response.setResponseName(getCommandName()); + this.setResponseObject(response); + } catch (Exception e) { + s_logger.debug("Exception happend while executing ListBaremetalDhcpCmd"); + throw new ServerApiException(BaseCmd.INTERNAL_ERROR, e.getMessage()); + } } @Override public String getCommandName() { - return null; + return s_name; } } diff --git a/baremetal/src/com/cloud/baremetal/networkservice/ListBaremetalPxePingServersCmd.java b/baremetal/src/com/cloud/baremetal/networkservice/ListBaremetalPxePingServersCmd.java index 6de32c289cb..75dd37704a9 100644 --- a/baremetal/src/com/cloud/baremetal/networkservice/ListBaremetalPxePingServersCmd.java +++ b/baremetal/src/com/cloud/baremetal/networkservice/ListBaremetalPxePingServersCmd.java @@ -32,12 +32,12 @@ public class ListBaremetalPxePingServersCmd extends BaseListCmd { // ////////////// API parameters ///////////////////// // /////////////////////////////////////////////////// - @IdentityMapper(entityTableName = "external_pxe_devices") - @Parameter(name = ApiConstants.ID, type = CommandType.LONG, required = true, description = "Ping pxe server device ID") + @IdentityMapper(entityTableName = "baremetal_pxe_devices") + @Parameter(name = ApiConstants.ID, type = CommandType.LONG, description = "Ping pxe server device ID") private Long id; @IdentityMapper(entityTableName = "host_pod_ref") - @Parameter(name = ApiConstants.POD_ID, type = CommandType.LONG, required = true, description = "Pod ID where pxe server is in") + @Parameter(name = ApiConstants.POD_ID, type = CommandType.LONG, description = "Pod ID where pxe server is in") private Long podId; public Long getId() { diff --git a/client/tomcatconf/baremetalpxe_commands.properties.in b/client/tomcatconf/baremetalpxe_commands.properties.in new file mode 100644 index 00000000000..c300ca642f9 --- /dev/null +++ b/client/tomcatconf/baremetalpxe_commands.properties.in @@ -0,0 +1,6 @@ +### bitmap of permissions at the end of each classname, 1 = ADMIN, 2 = RESOURCE_DOMAIN_ADMIN, 4 = DOMAIN_ADMIN, 8 = USER +### Please standardize naming conventions to camel-case (even for acronyms). + +### baremetal dhcp commands +addBaremetalPxePingServer=com.cloud.baremetal.networkservice.AddBaremetalPxePingServerCmd;1 +listBaremetalPxePingServer=com.cloud.baremetal.networkservice.ListBaremetalPxePingServersCmd;1 diff --git a/client/tomcatconf/components.xml.in b/client/tomcatconf/components.xml.in index 85cd31c74ec..c878709ee8c 100755 --- a/client/tomcatconf/components.xml.in +++ b/client/tomcatconf/components.xml.in @@ -163,6 +163,10 @@ + + + + diff --git a/server/src/com/cloud/host/dao/HostDaoImpl.java b/server/src/com/cloud/host/dao/HostDaoImpl.java index 6587e65aa38..458860e0caf 100755 --- a/server/src/com/cloud/host/dao/HostDaoImpl.java +++ b/server/src/com/cloud/host/dao/HostDaoImpl.java @@ -350,7 +350,7 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao txn.start(); SearchCriteria sc = UnmanagedApplianceSearch.create(); sc.setParameters("lastPinged", lastPingSecondsAfter); - sc.setParameters("types", Type.ExternalDhcp, Type.ExternalFirewall, Type.ExternalLoadBalancer, Type.PxeServer, Type.TrafficMonitor); + sc.setParameters("types", Type.BaremetalDhcp, Type.ExternalFirewall, Type.ExternalLoadBalancer, Type.BaremetalPxe, Type.TrafficMonitor); List hosts = lockRows(sc, null, true); for (HostVO host : hosts) { diff --git a/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java b/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java index adc7300b0f0..d41f01258a4 100755 --- a/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java +++ b/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java @@ -235,11 +235,11 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa 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); + res = listNetworkDevice(zoneId, null, podId, Host.Type.BaremetalDhcp); } 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); + res = listNetworkDevice(zoneId, null, podId, Host.Type.BaremetalPxe); } else if (cmd.getDeviceType().equalsIgnoreCase(NetworkDevice.NetscalerMPXLoadBalancer.getName()) || cmd.getDeviceType().equalsIgnoreCase(NetworkDevice.NetscalerVPXLoadBalancer.getName()) || cmd.getDeviceType().equalsIgnoreCase(NetworkDevice.NetscalerSDXLoadBalancer.getName()) || @@ -257,8 +257,8 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa 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 res1 = listNetworkDevice(zoneId, physicalNetworkId, podId, Host.Type.PxeServer); - List res2 = listNetworkDevice(zoneId, physicalNetworkId, podId, Host.Type.ExternalDhcp); + List res1 = listNetworkDevice(zoneId, physicalNetworkId, podId, Host.Type.BaremetalDhcp); + List res2 = listNetworkDevice(zoneId, physicalNetworkId, podId, Host.Type.BaremetalPxe); List res3 = listNetworkDevice(zoneId, physicalNetworkId, podId, Host.Type.ExternalLoadBalancer); List res4 = listNetworkDevice(zoneId, physicalNetworkId, podId, Host.Type.ExternalFirewall); List deviceAll = new ArrayList();