mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-04 20:29:27 +01:00
adding userdata to router and ssh pub key to router rules.
Conflicts: server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java
This commit is contained in:
parent
631b561d9c
commit
f0189ac3c3
@ -748,7 +748,10 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
VirtualMachineProfile uservm = vm;
|
VirtualMachineProfile uservm = vm;
|
||||||
|
|
||||||
return _routerMgr.saveSSHPublicKeyToRouter(network, nic, uservm, routers, sshPublicKey);
|
DataCenterVO dcVO = _dcDao.findById(network.getDataCenterId());
|
||||||
|
NetworkTopology networkTopology = networkTopologyContext.retrieveNetworkTopology(dcVO);
|
||||||
|
|
||||||
|
return networkTopology.saveSSHPublicKeyToRouter(network, nic, uservm, routers, sshPublicKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -765,7 +768,10 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
VirtualMachineProfile uservm = vm;
|
VirtualMachineProfile uservm = vm;
|
||||||
|
|
||||||
return _routerMgr.saveUserDataToRouter(network, nic, uservm, routers);
|
DataCenterVO dcVO = _dcDao.findById(network.getDataCenterId());
|
||||||
|
NetworkTopology networkTopology = networkTopologyContext.retrieveNetworkTopology(dcVO);
|
||||||
|
|
||||||
|
return networkTopology.saveUserDataToRouter(network, nic, uservm, routers);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -26,7 +26,6 @@ import java.util.Map;
|
|||||||
|
|
||||||
import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
|
import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
|
||||||
|
|
||||||
import com.cloud.agent.api.Command;
|
|
||||||
import com.cloud.agent.api.routing.IpAssocCommand;
|
import com.cloud.agent.api.routing.IpAssocCommand;
|
||||||
import com.cloud.agent.api.routing.NetworkElementCommand;
|
import com.cloud.agent.api.routing.NetworkElementCommand;
|
||||||
import com.cloud.agent.api.to.IpAddressTO;
|
import com.cloud.agent.api.to.IpAddressTO;
|
||||||
@ -46,8 +45,6 @@ public class IpAssociationRules extends RuleApplier {
|
|||||||
|
|
||||||
private final List<? extends PublicIpAddress> ipAddresses;
|
private final List<? extends PublicIpAddress> ipAddresses;
|
||||||
|
|
||||||
private Commands commands;
|
|
||||||
|
|
||||||
public IpAssociationRules(final Network network, final List<? extends PublicIpAddress> ipAddresses) {
|
public IpAssociationRules(final Network network, final List<? extends PublicIpAddress> ipAddresses) {
|
||||||
super(network);
|
super(network);
|
||||||
this.ipAddresses = ipAddresses;
|
this.ipAddresses = ipAddresses;
|
||||||
@ -56,7 +53,6 @@ public class IpAssociationRules extends RuleApplier {
|
|||||||
@Override
|
@Override
|
||||||
public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException {
|
public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException {
|
||||||
this.router = router;
|
this.router = router;
|
||||||
commands = new Commands(Command.OnError.Continue);
|
|
||||||
|
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
}
|
}
|
||||||
@ -65,10 +61,6 @@ public class IpAssociationRules extends RuleApplier {
|
|||||||
return ipAddresses;
|
return ipAddresses;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Commands getCommands() {
|
|
||||||
return commands;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void createAssociateIPCommands(final VirtualRouter router, final List<? extends PublicIpAddress> ips, final Commands cmds, final long vmId) {
|
public void createAssociateIPCommands(final VirtualRouter router, final List<? extends PublicIpAddress> ips, final Commands cmds, final long vmId) {
|
||||||
|
|
||||||
// Ensure that in multiple vlans case we first send all ip addresses of vlan1, then all ip addresses of vlan2, etc..
|
// Ensure that in multiple vlans case we first send all ip addresses of vlan1, then all ip addresses of vlan2, etc..
|
||||||
|
|||||||
@ -29,6 +29,7 @@ import com.cloud.network.router.VirtualRouter;
|
|||||||
import com.cloud.utils.PasswordGenerator;
|
import com.cloud.utils.PasswordGenerator;
|
||||||
import com.cloud.vm.NicProfile;
|
import com.cloud.vm.NicProfile;
|
||||||
import com.cloud.vm.NicVO;
|
import com.cloud.vm.NicVO;
|
||||||
|
import com.cloud.vm.UserVmVO;
|
||||||
import com.cloud.vm.VirtualMachineProfile;
|
import com.cloud.vm.VirtualMachineProfile;
|
||||||
|
|
||||||
public class PasswordToRouterRules extends RuleApplier {
|
public class PasswordToRouterRules extends RuleApplier {
|
||||||
@ -48,6 +49,8 @@ public class PasswordToRouterRules extends RuleApplier {
|
|||||||
@Override
|
@Override
|
||||||
public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException {
|
public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException {
|
||||||
this.router = router;
|
this.router = router;
|
||||||
|
|
||||||
|
userVmDao.loadDetails((UserVmVO)profile.getVirtualMachine());
|
||||||
// for basic zone, send vm data/password information only to the router in the same pod
|
// for basic zone, send vm data/password information only to the router in the same pod
|
||||||
nicVo = nicDao.findById(nic.getId());
|
nicVo = nicDao.findById(nic.getId());
|
||||||
|
|
||||||
|
|||||||
@ -20,6 +20,11 @@ package com.cloud.network.rules;
|
|||||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||||
import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
|
import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
|
||||||
|
|
||||||
|
import com.cloud.agent.api.routing.NetworkElementCommand;
|
||||||
|
import com.cloud.agent.api.routing.VmDataCommand;
|
||||||
|
import com.cloud.agent.manager.Commands;
|
||||||
|
import com.cloud.dc.DataCenter.NetworkType;
|
||||||
|
import com.cloud.dc.DataCenterVO;
|
||||||
import com.cloud.dc.dao.DataCenterDao;
|
import com.cloud.dc.dao.DataCenterDao;
|
||||||
import com.cloud.exception.ResourceUnavailableException;
|
import com.cloud.exception.ResourceUnavailableException;
|
||||||
import com.cloud.network.Network;
|
import com.cloud.network.Network;
|
||||||
@ -32,9 +37,15 @@ import com.cloud.network.router.NEWVirtualNetworkApplianceManager;
|
|||||||
import com.cloud.network.router.RouterControlHelper;
|
import com.cloud.network.router.RouterControlHelper;
|
||||||
import com.cloud.network.router.VirtualRouter;
|
import com.cloud.network.router.VirtualRouter;
|
||||||
import com.cloud.offerings.dao.NetworkOfferingDao;
|
import com.cloud.offerings.dao.NetworkOfferingDao;
|
||||||
|
import com.cloud.service.dao.ServiceOfferingDao;
|
||||||
|
import com.cloud.storage.dao.VMTemplateDao;
|
||||||
|
import com.cloud.uservm.UserVm;
|
||||||
|
import com.cloud.utils.StringUtils;
|
||||||
|
import com.cloud.vm.NicVO;
|
||||||
import com.cloud.vm.VirtualMachineManager;
|
import com.cloud.vm.VirtualMachineManager;
|
||||||
import com.cloud.vm.dao.DomainRouterDao;
|
import com.cloud.vm.dao.DomainRouterDao;
|
||||||
import com.cloud.vm.dao.NicDao;
|
import com.cloud.vm.dao.NicDao;
|
||||||
|
import com.cloud.vm.dao.UserVmDao;
|
||||||
|
|
||||||
public abstract class RuleApplier {
|
public abstract class RuleApplier {
|
||||||
|
|
||||||
@ -56,6 +67,12 @@ public abstract class RuleApplier {
|
|||||||
|
|
||||||
protected DomainRouterDao routerDao;
|
protected DomainRouterDao routerDao;
|
||||||
|
|
||||||
|
protected UserVmDao userVmDao;
|
||||||
|
|
||||||
|
protected ServiceOfferingDao serviceOfferingDao;
|
||||||
|
|
||||||
|
protected VMTemplateDao templateDao;
|
||||||
|
|
||||||
protected NetworkDao networkDao;
|
protected NetworkDao networkDao;
|
||||||
|
|
||||||
protected FirewallRulesDao rulesDao;
|
protected FirewallRulesDao rulesDao;
|
||||||
@ -85,4 +102,68 @@ public abstract class RuleApplier {
|
|||||||
public NEWVirtualNetworkApplianceManager getApplianceManager() {
|
public NEWVirtualNetworkApplianceManager getApplianceManager() {
|
||||||
return applianceManager;
|
return applianceManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void createVmDataCommand(final VirtualRouter router, final UserVm vm, final NicVO nic, final String publicKey, final Commands cmds) {
|
||||||
|
final String serviceOffering = serviceOfferingDao.findByIdIncludingRemoved(vm.getId(), vm.getServiceOfferingId()).getDisplayText();
|
||||||
|
final String zoneName = dcDao.findById(router.getDataCenterId()).getName();
|
||||||
|
cmds.addCommand(
|
||||||
|
"vmdata",
|
||||||
|
generateVmDataCommand(router, nic.getIp4Address(), vm.getUserData(), serviceOffering, zoneName, nic.getIp4Address(), vm.getHostName(), vm.getInstanceName(),
|
||||||
|
vm.getId(), vm.getUuid(), publicKey, nic.getNetworkId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public VmDataCommand generateVmDataCommand(final VirtualRouter router, final String vmPrivateIpAddress, final String userData, final String serviceOffering, final String zoneName,
|
||||||
|
final String guestIpAddress, final String vmName, final String vmInstanceName, final long vmId, final String vmUuid, final String publicKey, final long guestNetworkId) {
|
||||||
|
final VmDataCommand cmd = new VmDataCommand(vmPrivateIpAddress, vmName, networkModel.getExecuteInSeqNtwkElmtCmd());
|
||||||
|
|
||||||
|
cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, routerControlHelper.getRouterControlIp(router.getId()));
|
||||||
|
cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()));
|
||||||
|
cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName());
|
||||||
|
|
||||||
|
final DataCenterVO dcVo = dcDao.findById(router.getDataCenterId());
|
||||||
|
cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString());
|
||||||
|
|
||||||
|
cmd.addVmData("userdata", "user-data", userData);
|
||||||
|
cmd.addVmData("metadata", "service-offering", StringUtils.unicodeEscape(serviceOffering));
|
||||||
|
cmd.addVmData("metadata", "availability-zone", StringUtils.unicodeEscape(zoneName));
|
||||||
|
cmd.addVmData("metadata", "local-ipv4", guestIpAddress);
|
||||||
|
cmd.addVmData("metadata", "local-hostname", StringUtils.unicodeEscape(vmName));
|
||||||
|
if (dcVo.getNetworkType() == NetworkType.Basic) {
|
||||||
|
cmd.addVmData("metadata", "public-ipv4", guestIpAddress);
|
||||||
|
cmd.addVmData("metadata", "public-hostname", StringUtils.unicodeEscape(vmName));
|
||||||
|
} else {
|
||||||
|
if (router.getPublicIpAddress() == null) {
|
||||||
|
cmd.addVmData("metadata", "public-ipv4", guestIpAddress);
|
||||||
|
} else {
|
||||||
|
cmd.addVmData("metadata", "public-ipv4", router.getPublicIpAddress());
|
||||||
|
}
|
||||||
|
cmd.addVmData("metadata", "public-hostname", router.getPublicIpAddress());
|
||||||
|
}
|
||||||
|
if (vmUuid == null) {
|
||||||
|
setVmInstanceId(vmInstanceName, vmId, cmd);
|
||||||
|
} else {
|
||||||
|
setVmInstanceId(vmUuid, cmd);
|
||||||
|
}
|
||||||
|
cmd.addVmData("metadata", "public-keys", publicKey);
|
||||||
|
|
||||||
|
String cloudIdentifier = configDao.getValue("cloud.identifier");
|
||||||
|
if (cloudIdentifier == null) {
|
||||||
|
cloudIdentifier = "";
|
||||||
|
} else {
|
||||||
|
cloudIdentifier = "CloudStack-{" + cloudIdentifier + "}";
|
||||||
|
}
|
||||||
|
cmd.addVmData("metadata", "cloud-identifier", cloudIdentifier);
|
||||||
|
|
||||||
|
return cmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setVmInstanceId(final String vmUuid, final VmDataCommand cmd) {
|
||||||
|
cmd.addVmData("metadata", "instance-id", vmUuid);
|
||||||
|
cmd.addVmData("metadata", "vm-id", vmUuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setVmInstanceId(final String vmInstanceName, final long vmId, final VmDataCommand cmd) {
|
||||||
|
cmd.addVmData("metadata", "instance-id", vmInstanceName);
|
||||||
|
cmd.addVmData("metadata", "vm-id", String.valueOf(vmId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -19,36 +19,87 @@ package com.cloud.network.rules;
|
|||||||
|
|
||||||
import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
|
import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
|
||||||
|
|
||||||
|
import com.cloud.agent.api.routing.NetworkElementCommand;
|
||||||
|
import com.cloud.agent.api.routing.SavePasswordCommand;
|
||||||
|
import com.cloud.agent.manager.Commands;
|
||||||
|
import com.cloud.dc.DataCenterVO;
|
||||||
import com.cloud.exception.ResourceUnavailableException;
|
import com.cloud.exception.ResourceUnavailableException;
|
||||||
import com.cloud.network.Network;
|
import com.cloud.network.Network;
|
||||||
import com.cloud.network.router.VirtualRouter;
|
import com.cloud.network.router.VirtualRouter;
|
||||||
|
import com.cloud.storage.VMTemplateVO;
|
||||||
|
import com.cloud.utils.PasswordGenerator;
|
||||||
import com.cloud.vm.NicProfile;
|
import com.cloud.vm.NicProfile;
|
||||||
|
import com.cloud.vm.NicVO;
|
||||||
|
import com.cloud.vm.UserVmVO;
|
||||||
import com.cloud.vm.VirtualMachineProfile;
|
import com.cloud.vm.VirtualMachineProfile;
|
||||||
|
|
||||||
public class SshKeyToRouterRules extends RuleApplier {
|
public class SshKeyToRouterRules extends RuleApplier {
|
||||||
|
|
||||||
private final NicProfile nic;
|
private final NicProfile nic;
|
||||||
private final VirtualMachineProfile profile;
|
private final VirtualMachineProfile profile;
|
||||||
|
private final String sshPublicKey;
|
||||||
|
|
||||||
public SshKeyToRouterRules(final Network network, final NicProfile nic, final VirtualMachineProfile profile) {
|
private NicVO nicVo;
|
||||||
|
private VMTemplateVO template;
|
||||||
|
private UserVmVO userVM;
|
||||||
|
|
||||||
|
public SshKeyToRouterRules(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final String sshPublicKey) {
|
||||||
super(network);
|
super(network);
|
||||||
|
|
||||||
this.nic = nic;
|
this.nic = nic;
|
||||||
this.profile = profile;
|
this.profile = profile;
|
||||||
|
this.sshPublicKey = sshPublicKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException {
|
public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException {
|
||||||
this.router = router;
|
this.router = router;
|
||||||
|
userVM = userVmDao.findById(profile.getVirtualMachine().getId());
|
||||||
|
userVmDao.loadDetails(userVM);
|
||||||
|
|
||||||
|
nicVo = nicDao.findById(nic.getId());
|
||||||
|
// for basic zone, send vm data/password information only to the router in the same pod
|
||||||
|
template = templateDao.findByIdIncludingRemoved(profile.getTemplateId());
|
||||||
|
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public NicProfile getNic() {
|
public void createPasswordCommand(final VirtualRouter router, final VirtualMachineProfile profile, final NicVO nic, final Commands cmds) {
|
||||||
return nic;
|
final String password = (String)profile.getParameter(VirtualMachineProfile.Param.VmPassword);
|
||||||
|
final DataCenterVO dcVo = dcDao.findById(router.getDataCenterId());
|
||||||
|
|
||||||
|
// password should be set only on default network element
|
||||||
|
if (password != null && nic.isDefaultNic()) {
|
||||||
|
final String encodedPassword = PasswordGenerator.rot13(password);
|
||||||
|
final SavePasswordCommand cmd =
|
||||||
|
new SavePasswordCommand(encodedPassword, nic.getIp4Address(), profile.getVirtualMachine().getHostName(), networkModel.getExecuteInSeqNtwkElmtCmd());
|
||||||
|
cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, routerControlHelper.getRouterControlIp(router.getId()));
|
||||||
|
cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, routerControlHelper.getRouterIpInNetwork(nic.getNetworkId(), router.getId()));
|
||||||
|
cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName());
|
||||||
|
cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, dcVo.getNetworkType().toString());
|
||||||
|
|
||||||
|
cmds.addCommand("password", cmd);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public VirtualMachineProfile getProfile() {
|
public VirtualMachineProfile getProfile() {
|
||||||
return profile;
|
return profile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSshPublicKey() {
|
||||||
|
return sshPublicKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserVmVO getUserVM() {
|
||||||
|
return userVM;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NicVO getNicVo() {
|
||||||
|
return nicVo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public VMTemplateVO getTemplate() {
|
||||||
|
return template;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -19,12 +19,12 @@ package com.cloud.network.rules;
|
|||||||
|
|
||||||
import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
|
import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
|
||||||
|
|
||||||
import com.cloud.agent.api.Command;
|
|
||||||
import com.cloud.agent.manager.Commands;
|
|
||||||
import com.cloud.exception.ResourceUnavailableException;
|
import com.cloud.exception.ResourceUnavailableException;
|
||||||
import com.cloud.network.Network;
|
import com.cloud.network.Network;
|
||||||
import com.cloud.network.router.VirtualRouter;
|
import com.cloud.network.router.VirtualRouter;
|
||||||
import com.cloud.vm.NicProfile;
|
import com.cloud.vm.NicProfile;
|
||||||
|
import com.cloud.vm.NicVO;
|
||||||
|
import com.cloud.vm.UserVmVO;
|
||||||
import com.cloud.vm.VirtualMachineProfile;
|
import com.cloud.vm.VirtualMachineProfile;
|
||||||
|
|
||||||
public class UserdataToRouterRules extends RuleApplier {
|
public class UserdataToRouterRules extends RuleApplier {
|
||||||
@ -32,6 +32,9 @@ public class UserdataToRouterRules extends RuleApplier {
|
|||||||
private final NicProfile nic;
|
private final NicProfile nic;
|
||||||
private final VirtualMachineProfile profile;
|
private final VirtualMachineProfile profile;
|
||||||
|
|
||||||
|
private NicVO nicVo;
|
||||||
|
private UserVmVO userVM;
|
||||||
|
|
||||||
public UserdataToRouterRules(final Network network, final NicProfile nic, final VirtualMachineProfile profile) {
|
public UserdataToRouterRules(final Network network, final NicProfile nic, final VirtualMachineProfile profile) {
|
||||||
super(network);
|
super(network);
|
||||||
|
|
||||||
@ -43,26 +46,20 @@ public class UserdataToRouterRules extends RuleApplier {
|
|||||||
public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException {
|
public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException {
|
||||||
this.router = router;
|
this.router = router;
|
||||||
|
|
||||||
|
userVM = userVmDao.findById(profile.getVirtualMachine().getId());
|
||||||
|
userVmDao.loadDetails(userVM);
|
||||||
|
|
||||||
// for basic zone, send vm data/password information only to the router in the same pod
|
// for basic zone, send vm data/password information only to the router in the same pod
|
||||||
final Commands cmds = new Commands(Command.OnError.Stop);
|
nicVo = nicDao.findById(nic.getId());
|
||||||
//final NicVO nicVo = _nicDao.findById(nic.getId());
|
|
||||||
|
|
||||||
//final String serviceOffering = _serviceOfferingDao.findByIdIncludingRemoved(vm.getId(), vm.getServiceOfferingId()).getDisplayText();
|
|
||||||
//final String zoneName = _dcDao.findById(router.getDataCenterId()).getName();
|
|
||||||
|
|
||||||
// cmds.addCommand(
|
|
||||||
// "vmdata",
|
|
||||||
// generateVmDataCommand(router, nic.getIp4Address(), vm.getUserData(), serviceOffering, zoneName, nic.getIp4Address(), vm.getHostName(), vm.getInstanceName(),
|
|
||||||
// vm.getId(), vm.getUuid(), null, nic.getNetworkId()));
|
|
||||||
|
|
||||||
return visitor.visit(this);
|
return visitor.visit(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public NicProfile getNic() {
|
public NicVO getNicVo() {
|
||||||
return nic;
|
return nicVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public VirtualMachineProfile getProfile() {
|
public UserVmVO getUserVM() {
|
||||||
return profile;
|
return userVM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -35,11 +35,14 @@ import com.cloud.network.lb.LoadBalancingRulesManager;
|
|||||||
import com.cloud.network.router.NEWVirtualNetworkApplianceManager;
|
import com.cloud.network.router.NEWVirtualNetworkApplianceManager;
|
||||||
import com.cloud.network.router.RouterControlHelper;
|
import com.cloud.network.router.RouterControlHelper;
|
||||||
import com.cloud.offerings.dao.NetworkOfferingDao;
|
import com.cloud.offerings.dao.NetworkOfferingDao;
|
||||||
|
import com.cloud.service.dao.ServiceOfferingDao;
|
||||||
|
import com.cloud.storage.dao.VMTemplateDao;
|
||||||
import com.cloud.vm.NicProfile;
|
import com.cloud.vm.NicProfile;
|
||||||
import com.cloud.vm.VirtualMachineManager;
|
import com.cloud.vm.VirtualMachineManager;
|
||||||
import com.cloud.vm.VirtualMachineProfile;
|
import com.cloud.vm.VirtualMachineProfile;
|
||||||
import com.cloud.vm.dao.DomainRouterDao;
|
import com.cloud.vm.dao.DomainRouterDao;
|
||||||
import com.cloud.vm.dao.NicDao;
|
import com.cloud.vm.dao.NicDao;
|
||||||
|
import com.cloud.vm.dao.UserVmDao;
|
||||||
|
|
||||||
public class VirtualNetworkApplianceFactory {
|
public class VirtualNetworkApplianceFactory {
|
||||||
|
|
||||||
@ -67,6 +70,15 @@ public class VirtualNetworkApplianceFactory {
|
|||||||
@Inject
|
@Inject
|
||||||
protected DataCenterDao dcDao;
|
protected DataCenterDao dcDao;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
protected UserVmDao userVmDao;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
protected ServiceOfferingDao serviceOfferingDao;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
protected VMTemplateDao templateDao;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
protected DomainRouterDao routerDao;
|
protected DomainRouterDao routerDao;
|
||||||
|
|
||||||
@ -150,6 +162,32 @@ public class VirtualNetworkApplianceFactory {
|
|||||||
|
|
||||||
initBeans(routerRules);
|
initBeans(routerRules);
|
||||||
|
|
||||||
|
routerRules.userVmDao = userVmDao;
|
||||||
|
|
||||||
return routerRules;
|
return routerRules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SshKeyToRouterRules createSshKeyToRouterRules(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final String sshKey) {
|
||||||
|
SshKeyToRouterRules sshKeyToRouterRules = new SshKeyToRouterRules(network, nic, profile, sshKey);
|
||||||
|
|
||||||
|
initBeans(sshKeyToRouterRules);
|
||||||
|
|
||||||
|
sshKeyToRouterRules.userVmDao = userVmDao;
|
||||||
|
sshKeyToRouterRules.templateDao = templateDao;
|
||||||
|
sshKeyToRouterRules.serviceOfferingDao = serviceOfferingDao;
|
||||||
|
|
||||||
|
return sshKeyToRouterRules;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserdataToRouterRules createUserdataToRouterRules(final Network network, final NicProfile nic, final VirtualMachineProfile profile) {
|
||||||
|
UserdataToRouterRules userdataRules = new UserdataToRouterRules(network, nic, profile);
|
||||||
|
|
||||||
|
initBeans(userdataRules);
|
||||||
|
|
||||||
|
userdataRules.userVmDao = userVmDao;
|
||||||
|
userdataRules.templateDao = templateDao;
|
||||||
|
userdataRules.serviceOfferingDao = serviceOfferingDao;
|
||||||
|
|
||||||
|
return userdataRules;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -34,7 +34,6 @@ import com.cloud.dc.dao.DataCenterDao;
|
|||||||
import com.cloud.deploy.DeployDestination;
|
import com.cloud.deploy.DeployDestination;
|
||||||
import com.cloud.exception.AgentUnavailableException;
|
import com.cloud.exception.AgentUnavailableException;
|
||||||
import com.cloud.exception.ConcurrentOperationException;
|
import com.cloud.exception.ConcurrentOperationException;
|
||||||
import com.cloud.exception.InsufficientCapacityException;
|
|
||||||
import com.cloud.exception.ResourceUnavailableException;
|
import com.cloud.exception.ResourceUnavailableException;
|
||||||
import com.cloud.host.Status;
|
import com.cloud.host.Status;
|
||||||
import com.cloud.host.dao.HostDao;
|
import com.cloud.host.dao.HostDao;
|
||||||
@ -50,8 +49,10 @@ import com.cloud.network.rules.LoadBalancingRules;
|
|||||||
import com.cloud.network.rules.PasswordToRouterRules;
|
import com.cloud.network.rules.PasswordToRouterRules;
|
||||||
import com.cloud.network.rules.RuleApplier;
|
import com.cloud.network.rules.RuleApplier;
|
||||||
import com.cloud.network.rules.RuleApplierWrapper;
|
import com.cloud.network.rules.RuleApplierWrapper;
|
||||||
|
import com.cloud.network.rules.SshKeyToRouterRules;
|
||||||
import com.cloud.network.rules.StaticNat;
|
import com.cloud.network.rules.StaticNat;
|
||||||
import com.cloud.network.rules.StaticNatRules;
|
import com.cloud.network.rules.StaticNatRules;
|
||||||
|
import com.cloud.network.rules.UserdataToRouterRules;
|
||||||
import com.cloud.network.rules.VirtualNetworkApplianceFactory;
|
import com.cloud.network.rules.VirtualNetworkApplianceFactory;
|
||||||
import com.cloud.network.rules.VpnRules;
|
import com.cloud.network.rules.VpnRules;
|
||||||
import com.cloud.user.Account;
|
import com.cloud.user.Account;
|
||||||
@ -60,7 +61,6 @@ import com.cloud.vm.NicProfile;
|
|||||||
import com.cloud.vm.UserVmVO;
|
import com.cloud.vm.UserVmVO;
|
||||||
import com.cloud.vm.VirtualMachine.State;
|
import com.cloud.vm.VirtualMachine.State;
|
||||||
import com.cloud.vm.VirtualMachineProfile;
|
import com.cloud.vm.VirtualMachineProfile;
|
||||||
import com.cloud.vm.VirtualMachineProfile.Param;
|
|
||||||
import com.cloud.vm.dao.UserVmDao;
|
import com.cloud.vm.dao.UserVmDao;
|
||||||
|
|
||||||
public class BasicNetworkTopology implements NetworkTopology {
|
public class BasicNetworkTopology implements NetworkTopology {
|
||||||
@ -259,6 +259,36 @@ public class BasicNetworkTopology implements NetworkTopology {
|
|||||||
return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(routerRules));
|
return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(routerRules));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean saveSSHPublicKeyToRouter(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final List<? extends VirtualRouter> routers,
|
||||||
|
final String sshPublicKey) throws ResourceUnavailableException {
|
||||||
|
s_logger.debug("SAVE SSH PUB KEY TO ROUTE RULES");
|
||||||
|
|
||||||
|
final String typeString = "save SSHkey entry";
|
||||||
|
final boolean isPodLevelException = false;
|
||||||
|
final boolean failWhenDisconnect = false;
|
||||||
|
final Long podId = null;
|
||||||
|
|
||||||
|
SshKeyToRouterRules keyToRouterRules = virtualNetworkApplianceFactory.createSshKeyToRouterRules(network, nic, profile, sshPublicKey);
|
||||||
|
|
||||||
|
return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(keyToRouterRules));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean saveUserDataToRouter(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final List<? extends VirtualRouter> routers)
|
||||||
|
throws ResourceUnavailableException {
|
||||||
|
s_logger.debug("SAVE USERDATA TO ROUTE RULES");
|
||||||
|
|
||||||
|
final String typeString = "save userdata entry";
|
||||||
|
final boolean isPodLevelException = false;
|
||||||
|
final boolean failWhenDisconnect = false;
|
||||||
|
final Long podId = null;
|
||||||
|
|
||||||
|
UserdataToRouterRules userdataToRouterRules = virtualNetworkApplianceFactory.createUserdataToRouterRules(network, nic, profile);
|
||||||
|
|
||||||
|
return applyRules(network, routers, typeString, isPodLevelException, podId, failWhenDisconnect, new RuleApplierWrapper<RuleApplier>(userdataToRouterRules));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean applyRules(final Network network, final List<? extends VirtualRouter> routers, final String typeString, final boolean isPodLevelException, final Long podId,
|
public boolean applyRules(final Network network, final List<? extends VirtualRouter> routers, final String typeString, final boolean isPodLevelException, final Long podId,
|
||||||
final boolean failWhenDisconnect, final RuleApplierWrapper<RuleApplier> ruleApplierWrapper) throws ResourceUnavailableException {
|
final boolean failWhenDisconnect, final RuleApplierWrapper<RuleApplier> ruleApplierWrapper) throws ResourceUnavailableException {
|
||||||
|
|||||||
@ -32,7 +32,7 @@ import com.cloud.network.PublicIpAddress;
|
|||||||
import com.cloud.network.VpnUser;
|
import com.cloud.network.VpnUser;
|
||||||
import com.cloud.network.lb.LoadBalancingRule;
|
import com.cloud.network.lb.LoadBalancingRule;
|
||||||
import com.cloud.network.router.VirtualRouter;
|
import com.cloud.network.router.VirtualRouter;
|
||||||
import com.cloud.network.rules.DhcpRules;
|
import com.cloud.network.rules.DhcpEntryRules;
|
||||||
import com.cloud.network.rules.FirewallRule;
|
import com.cloud.network.rules.FirewallRule;
|
||||||
import com.cloud.network.rules.FirewallRule.Purpose;
|
import com.cloud.network.rules.FirewallRule.Purpose;
|
||||||
import com.cloud.network.rules.FirewallRules;
|
import com.cloud.network.rules.FirewallRules;
|
||||||
@ -50,8 +50,10 @@ import com.cloud.network.rules.UserdataPwdRules;
|
|||||||
import com.cloud.network.rules.UserdataToRouterRules;
|
import com.cloud.network.rules.UserdataToRouterRules;
|
||||||
import com.cloud.network.rules.VpcIpAssociationRules;
|
import com.cloud.network.rules.VpcIpAssociationRules;
|
||||||
import com.cloud.network.rules.VpnRules;
|
import com.cloud.network.rules.VpnRules;
|
||||||
|
import com.cloud.storage.VMTemplateVO;
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
import com.cloud.vm.NicVO;
|
import com.cloud.vm.NicVO;
|
||||||
|
import com.cloud.vm.UserVmVO;
|
||||||
import com.cloud.vm.VirtualMachineProfile;
|
import com.cloud.vm.VirtualMachineProfile;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@ -68,9 +70,9 @@ public class BasicNetworkVisitor extends NetworkTopologyVisitor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean visit(final StaticNatRules nat) throws ResourceUnavailableException {
|
public boolean visit(final StaticNatRules nat) throws ResourceUnavailableException {
|
||||||
Network network = nat.getNetwork();
|
final Network network = nat.getNetwork();
|
||||||
VirtualRouter router = nat.getRouter();
|
final VirtualRouter router = nat.getRouter();
|
||||||
List<? extends StaticNat> rules = nat.getRules();
|
final List<? extends StaticNat> rules = nat.getRules();
|
||||||
|
|
||||||
final Commands cmds = new Commands(Command.OnError.Continue);
|
final Commands cmds = new Commands(Command.OnError.Continue);
|
||||||
nat.createApplyStaticNatCommands(rules, router, cmds, network.getId());
|
nat.createApplyStaticNatCommands(rules, router, cmds, network.getId());
|
||||||
@ -80,9 +82,9 @@ public class BasicNetworkVisitor extends NetworkTopologyVisitor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean visit(final LoadBalancingRules loadbalancing) throws ResourceUnavailableException {
|
public boolean visit(final LoadBalancingRules loadbalancing) throws ResourceUnavailableException {
|
||||||
Network network = loadbalancing.getNetwork();
|
final Network network = loadbalancing.getNetwork();
|
||||||
VirtualRouter router = loadbalancing.getRouter();
|
final VirtualRouter router = loadbalancing.getRouter();
|
||||||
List<LoadBalancingRule> rules = loadbalancing.getRules();
|
final List<LoadBalancingRule> rules = loadbalancing.getRules();
|
||||||
|
|
||||||
final Commands cmds = new Commands(Command.OnError.Continue);
|
final Commands cmds = new Commands(Command.OnError.Continue);
|
||||||
loadbalancing.createApplyLoadBalancingRulesCommands(rules, router, cmds, network.getId());
|
loadbalancing.createApplyLoadBalancingRulesCommands(rules, router, cmds, network.getId());
|
||||||
@ -93,12 +95,12 @@ public class BasicNetworkVisitor extends NetworkTopologyVisitor {
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public boolean visit(final FirewallRules firewall) throws ResourceUnavailableException {
|
public boolean visit(final FirewallRules firewall) throws ResourceUnavailableException {
|
||||||
Network network = firewall.getNetwork();
|
final Network network = firewall.getNetwork();
|
||||||
VirtualRouter router = firewall.getRouter();
|
final VirtualRouter router = firewall.getRouter();
|
||||||
List<? extends FirewallRule> rules = firewall.getRules();
|
final List<? extends FirewallRule> rules = firewall.getRules();
|
||||||
List<LoadBalancingRule> loadbalancingRules = firewall.getLoadbalancingRules();
|
final List<LoadBalancingRule> loadbalancingRules = firewall.getLoadbalancingRules();
|
||||||
|
|
||||||
Purpose purpose = firewall.getPurpose();
|
final Purpose purpose = firewall.getPurpose();
|
||||||
|
|
||||||
final Commands cmds = new Commands(Command.OnError.Continue);
|
final Commands cmds = new Commands(Command.OnError.Continue);
|
||||||
if (purpose == Purpose.LoadBalancing) {
|
if (purpose == Purpose.LoadBalancing) {
|
||||||
@ -133,37 +135,53 @@ public class BasicNetworkVisitor extends NetworkTopologyVisitor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean visit(final IpAssociationRules ipRules) throws ResourceUnavailableException {
|
public boolean visit(final IpAssociationRules ipRules) throws ResourceUnavailableException {
|
||||||
Network network = ipRules.getNetwork();
|
final Network network = ipRules.getNetwork();
|
||||||
VirtualRouter router = ipRules.getRouter();
|
final VirtualRouter router = ipRules.getRouter();
|
||||||
Commands commands = ipRules.getCommands();
|
|
||||||
List<? extends PublicIpAddress> ips = ipRules.getIpAddresses();
|
final Commands commands = new Commands(Command.OnError.Continue);
|
||||||
|
final List<? extends PublicIpAddress> ips = ipRules.getIpAddresses();
|
||||||
|
|
||||||
ipRules.createAssociateIPCommands(router, ips, commands, network.getId());
|
ipRules.createAssociateIPCommands(router, ips, commands, network.getId());
|
||||||
return applianceManager.sendCommandsToRouter(router, commands);
|
return applianceManager.sendCommandsToRouter(router, commands);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean visit(final UserdataPwdRules nat) throws ResourceUnavailableException {
|
public boolean visit(final UserdataPwdRules userdata) throws ResourceUnavailableException {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean visit(final DhcpRules nat) throws ResourceUnavailableException {
|
public boolean visit(final DhcpEntryRules dhcp) throws ResourceUnavailableException {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean visit(final SshKeyToRouterRules nat) throws ResourceUnavailableException {
|
public boolean visit(final SshKeyToRouterRules sshkey) throws ResourceUnavailableException {
|
||||||
return false;
|
final VirtualRouter router = sshkey.getRouter();
|
||||||
|
final VirtualMachineProfile profile = sshkey.getProfile();
|
||||||
|
final String sshKeystr = sshkey.getSshPublicKey();
|
||||||
|
final UserVmVO userVM = sshkey.getUserVM();
|
||||||
|
|
||||||
|
final Commands commands = new Commands(Command.OnError.Stop);
|
||||||
|
final NicVO nicVo = sshkey.getNicVo();
|
||||||
|
final VMTemplateVO template = sshkey.getTemplate();
|
||||||
|
|
||||||
|
if (template != null && template.getEnablePassword()) {
|
||||||
|
sshkey.createPasswordCommand(router, profile, nicVo, commands);
|
||||||
|
}
|
||||||
|
|
||||||
|
sshkey.createVmDataCommand(router, userVM, nicVo, sshKeystr, commands);
|
||||||
|
|
||||||
|
return applianceManager.sendCommandsToRouter(router, commands);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean visit(final PasswordToRouterRules passwd) throws ResourceUnavailableException {
|
public boolean visit(final PasswordToRouterRules passwd) throws ResourceUnavailableException {
|
||||||
VirtualRouter router = passwd.getRouter();
|
final VirtualRouter router = passwd.getRouter();
|
||||||
NicVO nicVo = passwd.getNicVo();
|
final NicVO nicVo = passwd.getNicVo();
|
||||||
VirtualMachineProfile profile = passwd.getProfile();
|
final VirtualMachineProfile profile = passwd.getProfile();
|
||||||
|
|
||||||
Commands cmds = new Commands(Command.OnError.Stop);
|
final Commands cmds = new Commands(Command.OnError.Stop);
|
||||||
passwd.createPasswordCommand(router, profile, nicVo, cmds);
|
passwd.createPasswordCommand(router, profile, nicVo, cmds);
|
||||||
|
|
||||||
return applianceManager.sendCommandsToRouter(router, cmds);
|
return applianceManager.sendCommandsToRouter(router, cmds);
|
||||||
@ -181,11 +199,15 @@ public class BasicNetworkVisitor extends NetworkTopologyVisitor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean visit(final UserdataToRouterRules userdata) throws ResourceUnavailableException {
|
public boolean visit(final UserdataToRouterRules userdata) throws ResourceUnavailableException {
|
||||||
Network network = userdata.getNetwork();
|
final VirtualRouter router = userdata.getRouter();
|
||||||
VirtualRouter router = userdata.getRouter();
|
|
||||||
|
|
||||||
// return sendCommandsToRouter(router, cmds);
|
final UserVmVO userVM = userdata.getUserVM();
|
||||||
return false;
|
final NicVO nicVo = userdata.getNicVo();
|
||||||
|
|
||||||
|
final Commands commands = new Commands(Command.OnError.Stop);
|
||||||
|
userdata.createVmDataCommand(router, userVM, nicVo, null, commands);
|
||||||
|
|
||||||
|
return applianceManager.sendCommandsToRouter(router, commands);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -18,12 +18,9 @@
|
|||||||
package org.apache.cloudstack.network.topology;
|
package org.apache.cloudstack.network.topology;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.cloud.dc.DataCenter;
|
import com.cloud.dc.DataCenter;
|
||||||
import com.cloud.deploy.DeployDestination;
|
import com.cloud.deploy.DeployDestination;
|
||||||
import com.cloud.exception.ConcurrentOperationException;
|
|
||||||
import com.cloud.exception.InsufficientCapacityException;
|
|
||||||
import com.cloud.exception.ResourceUnavailableException;
|
import com.cloud.exception.ResourceUnavailableException;
|
||||||
import com.cloud.network.Network;
|
import com.cloud.network.Network;
|
||||||
import com.cloud.network.PublicIpAddress;
|
import com.cloud.network.PublicIpAddress;
|
||||||
@ -34,17 +31,12 @@ import com.cloud.network.rules.FirewallRule;
|
|||||||
import com.cloud.network.rules.RuleApplier;
|
import com.cloud.network.rules.RuleApplier;
|
||||||
import com.cloud.network.rules.RuleApplierWrapper;
|
import com.cloud.network.rules.RuleApplierWrapper;
|
||||||
import com.cloud.network.rules.StaticNat;
|
import com.cloud.network.rules.StaticNat;
|
||||||
import com.cloud.user.Account;
|
|
||||||
import com.cloud.vm.DomainRouterVO;
|
import com.cloud.vm.DomainRouterVO;
|
||||||
import com.cloud.vm.NicProfile;
|
import com.cloud.vm.NicProfile;
|
||||||
import com.cloud.vm.VirtualMachineProfile;
|
import com.cloud.vm.VirtualMachineProfile;
|
||||||
import com.cloud.vm.VirtualMachineProfile.Param;
|
|
||||||
|
|
||||||
public interface NetworkTopology {
|
public interface NetworkTopology {
|
||||||
|
|
||||||
List<DomainRouterVO> findOrDeployVirtualRouterInGuestNetwork(final Network guestNetwork, final DeployDestination dest, Account owner, final boolean isRedundant,
|
|
||||||
final Map<Param, Object> params) throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException;
|
|
||||||
|
|
||||||
StringBuilder createGuestBootLoadArgs(final NicProfile guestNic, final String defaultDns1, final String defaultDns2, DomainRouterVO router);
|
StringBuilder createGuestBootLoadArgs(final NicProfile guestNic, final String defaultDns1, final String defaultDns2, DomainRouterVO router);
|
||||||
|
|
||||||
String retrieveGuestDhcpRange(final NicProfile guestNic, final Network guestNetwork, final DataCenter dc);
|
String retrieveGuestDhcpRange(final NicProfile guestNic, final Network guestNetwork, final DataCenter dc);
|
||||||
@ -76,4 +68,10 @@ public interface NetworkTopology {
|
|||||||
String[] applyVpnUsers(final Network network, final List<? extends VpnUser> users, final List<DomainRouterVO> routers) throws ResourceUnavailableException;
|
String[] applyVpnUsers(final Network network, final List<? extends VpnUser> users, final List<DomainRouterVO> routers) throws ResourceUnavailableException;
|
||||||
|
|
||||||
boolean savePasswordToRouter(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final List<? extends VirtualRouter> routers) throws ResourceUnavailableException;
|
boolean savePasswordToRouter(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final List<? extends VirtualRouter> routers) throws ResourceUnavailableException;
|
||||||
|
|
||||||
|
boolean saveSSHPublicKeyToRouter(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final List<? extends VirtualRouter> routers,
|
||||||
|
final String sshPublicKey) throws ResourceUnavailableException;
|
||||||
|
|
||||||
|
boolean saveUserDataToRouter(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final List<? extends VirtualRouter> routers)
|
||||||
|
throws ResourceUnavailableException;
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user