CLOUDSTACK-6278

Baremetal Advanced Networking support
This commit is contained in:
Frank.Zhang 2014-07-07 11:40:21 -07:00
parent 7b444183db
commit 3ddc9e7674
3 changed files with 29 additions and 3 deletions

View File

@ -1761,6 +1761,14 @@ public enum Config {
"The maximum number of retrying times to search for an available IPv6 address in the table", "The maximum number of retrying times to search for an available IPv6 address in the table",
null), null),
BaremetalPeerHypervisorType(
"Advanced",
ManagementServer.class,
String.class,
"baremetal.peer.hypervisor.type",
"XenServer",
"Hypervisor[Xenserver/KVM/VMWare] used to spring up virtual router for baremetal instances. The cluster having this hypervisor type must be in the same zone with baremetal cluster",
null),
ExternalBaremetalSystemUrl( ExternalBaremetalSystemUrl(
"Advanced", "Advanced",
ManagementServer.class, ManagementServer.class,

View File

@ -1738,7 +1738,7 @@ VirtualMachineGuru, Listener, Configurable, StateListener<State, VirtualMachine.
int startRetry = 0; int startRetry = 0;
DomainRouterVO router = null; DomainRouterVO router = null;
for (final Iterator<HypervisorType> iter = hypervisors.iterator(); iter.hasNext();) { for (final Iterator<HypervisorType> iter = hypervisors.iterator(); iter.hasNext();) {
final HypervisorType hType = iter.next(); HypervisorType hType = iter.next();
try { try {
final long id = _routerDao.getNextInSequence(Long.class, "id"); final long id = _routerDao.getNextInSequence(Long.class, "id");
if (s_logger.isDebugEnabled()) { if (s_logger.isDebugEnabled()) {
@ -1762,6 +1762,24 @@ VirtualMachineGuru, Listener, Configurable, StateListener<State, VirtualMachine.
case LXC: case LXC:
templateName = RouterTemplateLxc.valueIn(dest.getDataCenter().getId()); templateName = RouterTemplateLxc.valueIn(dest.getDataCenter().getId());
break; break;
case BareMetal:
String peerHvType = _configDao.getValue(Config.BaremetalPeerHypervisorType.key());
if (peerHvType == null) {
throw new CloudRuntimeException(String.format("To use baremetal in advanced networking, you must set %s to type of hypervisor(e.g XenServer)" +
" that exists in the same zone with baremetal host. That hyperivsor is used to spring up virtual router for baremetal instance", Config.BaremetalPeerHypervisorType.key()));
}
hType = HypervisorType.getType(peerHvType);
if (HypervisorType.XenServer.toString().equals(peerHvType)) {
templateName = RouterTemplateXen.valueIn(dest.getDataCenter().getId());
} else if (HypervisorType.KVM.toString().equals(peerHvType)) {
templateName = RouterTemplateKvm.valueIn(dest.getDataCenter().getId());
} else if (HypervisorType.VMware.toString().equals(peerHvType)) {
templateName = RouterTemplateVmware.valueIn(dest.getDataCenter().getId());
} else {
throw new CloudRuntimeException(String.format("Baremetal only supports peer hypervisor(XenServer/KVM/VMWare) right now, you specified %s", peerHvType));
}
break;
default: default:
break; break;
} }

0
utils/src/com/cloud/utils/fsm/StateObject.java Normal file → Executable file
View File