From 828f8c94938ba6c318a055057ddc4e136bd596ae Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 23 Feb 2011 17:20:43 -0800 Subject: [PATCH] Bug 8208 - bare metal provisioning Able to add cluster and host --- api/src/com/cloud/api/ApiConstants.java | 4 +++- api/src/com/cloud/api/commands/AddHostCmd.java | 16 +++++++++++++++- .../cloud/agent/manager/AgentManagerImpl.java | 16 ++++++++++++++-- .../src/com/cloud/resource/DiscovererBase.java | 4 ++++ .../com/cloud/resource/DummyHostDiscoverer.java | 6 ++++++ .../com/cloud/storage/dao/VMTemplateDaoImpl.java | 6 +++++- 6 files changed, 47 insertions(+), 5 deletions(-) diff --git a/api/src/com/cloud/api/ApiConstants.java b/api/src/com/cloud/api/ApiConstants.java index d860962cf16..65477ce9967 100755 --- a/api/src/com/cloud/api/ApiConstants.java +++ b/api/src/com/cloud/api/ApiConstants.java @@ -191,6 +191,8 @@ public class ApiConstants { public static final String AVAILABILITY = "availability"; public static final String NETWORKRATE = "networkrate"; public static final String HOST_CPU_CAPACITY = "hostcpucapacity"; - public static final String HOST_MEM_CAPACITY = "hostmemcapacity"; + public static final String HOST_CPU_NUM = "hostcpunum"; + public static final String HOST_MEM_CAPACITY = "hostmemcapacity"; + public static final String HOST_MAC = "hostmac"; } diff --git a/api/src/com/cloud/api/commands/AddHostCmd.java b/api/src/com/cloud/api/commands/AddHostCmd.java index 95802676c16..9a6bdc184b2 100644 --- a/api/src/com/cloud/api/commands/AddHostCmd.java +++ b/api/src/com/cloud/api/commands/AddHostCmd.java @@ -66,12 +66,18 @@ public class AddHostCmd extends BaseCmd { @Parameter(name=ApiConstants.HYPERVISOR, type=CommandType.STRING, required=true, description="hypervisor type of the host") private String hypervisor; - @Parameter(name=ApiConstants.HOST_CPU_CAPACITY, type=CommandType.LONG, description="CPU capacity of host") + @Parameter(name=ApiConstants.HOST_CPU_CAPACITY, type=CommandType.LONG, description="HZ per CPU of host") private Long cpuCapacity; + @Parameter(name=ApiConstants.HOST_CPU_NUM, type=CommandType.LONG, description="number of CPU on host") + private Long cpuNum; + @Parameter(name=ApiConstants.HOST_MEM_CAPACITY, type=CommandType.LONG, description="memory capacity of host") private Long memCapacity; + @Parameter(name=ApiConstants.HOST_MAC, type=CommandType.STRING, required=true, description="Mac of PXE nic") + private String mac; + @@ -115,10 +121,18 @@ public class AddHostCmd extends BaseCmd { return cpuCapacity; } + public Long getCpuNum() { + return cpuNum; + } + public Long getMemCapacity() { return memCapacity; } + public String getMac() { + return mac; + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index 41caf97c5bf..c95e5e375f8 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -751,6 +751,8 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, String password = cmd.getPassword(); Long memCapacity = cmd.getMemCapacity(); Long cpuCapacity = cmd.getCpuCapacity(); + Long cpuNum = cmd.getCpuNum(); + String mac = cmd.getMac(); MapbareMetalParams = new HashMap(); // this is for standalone option @@ -765,9 +767,17 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, if (cpuCapacity == null) { cpuCapacity = Long.valueOf(0); } + if (cpuNum == null) { + cpuNum = Long.valueOf(0); + } + if (mac == null) { + mac = "unknown"; + } + bareMetalParams.put("cpuNum", cpuNum.toString()); bareMetalParams.put("cpuCapacity", cpuCapacity.toString()); bareMetalParams.put("memCapacity", memCapacity.toString()); + bareMetalParams.put("mac", mac); } @@ -891,7 +901,9 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, boolean isHypervisorTypeSupported = false; while (en.hasMoreElements()) { Discoverer discoverer = en.nextElement(); - discoverer.putParam(params); + if (params != null) { + discoverer.putParam(params); + } if (!discoverer.matchHypervisor(hypervisorType)) { continue; @@ -2684,7 +2696,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, // If this command is from a KVM agent, or from an agent that has a // null hypervisor type, don't do the CIDR check if (hypervisorType == null || hypervisorType == HypervisorType.KVM - || hypervisorType == HypervisorType.VMware) { + || hypervisorType == HypervisorType.VMware || hypervisorType == HypervisorType.BareMetal) { doCidrCheck = false; } diff --git a/server/src/com/cloud/resource/DiscovererBase.java b/server/src/com/cloud/resource/DiscovererBase.java index 5681635cf83..03ac483a537 100644 --- a/server/src/com/cloud/resource/DiscovererBase.java +++ b/server/src/com/cloud/resource/DiscovererBase.java @@ -18,6 +18,7 @@ package com.cloud.resource; import java.net.URL; +import java.util.HashMap; import java.util.Map; import javax.naming.ConfigurationException; @@ -47,6 +48,9 @@ public abstract class DiscovererBase implements Discoverer { @Override public void putParam(Map params) { + if (_params == null) { + _params = new HashMap(); + } _params.putAll(params); } diff --git a/server/src/com/cloud/resource/DummyHostDiscoverer.java b/server/src/com/cloud/resource/DummyHostDiscoverer.java index a50c5eb1c33..def7167eab6 100644 --- a/server/src/com/cloud/resource/DummyHostDiscoverer.java +++ b/server/src/com/cloud/resource/DummyHostDiscoverer.java @@ -103,5 +103,11 @@ public class DummyHostDiscoverer implements Discoverer { @Override public void postDiscovery(List hosts, long msId) { //do nothing + } + + @Override + public void putParam(Map params) { + // TODO Auto-generated method stub + } } diff --git a/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java b/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java index b14941ea0f1..79cd61d807f 100755 --- a/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java +++ b/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java @@ -441,7 +441,11 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem List tmplts = listBy(sc); Collections.shuffle(tmplts); - return tmplts.get(0); + if (tmplts.size() > 0) { + return tmplts.get(0); + } else { + return null; + } } @Override