mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CKS: Support deployment of CKS clusters on Advanced zones with security groups (#6132)
* CKS: Support deployment of CKS clusters on Advanced zones with security groups * use available constant * address comments - - Ingress sg rule for port 22 & 6443 - Use constant to define securityGroup Name - rename variable name from type -> vmType * unique name for security group + foreign key * use constants
This commit is contained in:
parent
5f3a392eb5
commit
2c8c476656
@ -17,6 +17,7 @@
|
|||||||
package com.cloud.network.security;
|
package com.cloud.network.security;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import com.cloud.exception.InvalidParameterValueException;
|
import com.cloud.exception.InvalidParameterValueException;
|
||||||
import com.cloud.exception.PermissionDeniedException;
|
import com.cloud.exception.PermissionDeniedException;
|
||||||
@ -48,6 +49,9 @@ public interface SecurityGroupService {
|
|||||||
|
|
||||||
public List<? extends SecurityRule> authorizeSecurityGroupIngress(AuthorizeSecurityGroupIngressCmd cmd);
|
public List<? extends SecurityRule> authorizeSecurityGroupIngress(AuthorizeSecurityGroupIngressCmd cmd);
|
||||||
|
|
||||||
|
List<? extends SecurityRule> authorizeSecurityGroupRule(final Long securityGroupId, String protocol, Integer startPort,
|
||||||
|
Integer endPort, Integer icmpType, Integer icmpCode, final List<String> cidrList, Map groupList, final SecurityRule.SecurityRuleType ruleType);
|
||||||
|
|
||||||
public List<? extends SecurityRule> authorizeSecurityGroupEgress(AuthorizeSecurityGroupEgressCmd cmd);
|
public List<? extends SecurityRule> authorizeSecurityGroupEgress(AuthorizeSecurityGroupEgressCmd cmd);
|
||||||
|
|
||||||
public boolean securityGroupRulesForVmSecIp(long nicId, String secondaryIp, boolean ruleAction);
|
public boolean securityGroupRulesForVmSecIp(long nicId, String secondaryIp, boolean ruleAction);
|
||||||
|
|||||||
@ -264,9 +264,6 @@ public interface UserVmService {
|
|||||||
* base64 encoded before adding it to the request. Currently only
|
* base64 encoded before adding it to the request. Currently only
|
||||||
* HTTP GET is supported. Using HTTP GET (via querystring), you
|
* HTTP GET is supported. Using HTTP GET (via querystring), you
|
||||||
* can send up to 2KB of data after base64 encoding
|
* can send up to 2KB of data after base64 encoding
|
||||||
* @param sshKeyPair
|
|
||||||
* - name of the ssh key pair used to login to the virtual
|
|
||||||
* machine
|
|
||||||
* @param requestedIps
|
* @param requestedIps
|
||||||
* TODO
|
* TODO
|
||||||
* @param defaultIps
|
* @param defaultIps
|
||||||
@ -274,8 +271,6 @@ public interface UserVmService {
|
|||||||
* @param displayVm
|
* @param displayVm
|
||||||
* - Boolean flag whether to the display the vm to the end user or not
|
* - Boolean flag whether to the display the vm to the end user or not
|
||||||
* @param affinityGroupIdList
|
* @param affinityGroupIdList
|
||||||
* @param memory
|
|
||||||
* @param cpuNumber
|
|
||||||
* @param customId
|
* @param customId
|
||||||
* @param dhcpOptionMap
|
* @param dhcpOptionMap
|
||||||
* - Maps the dhcp option code and the dhcp value to the network uuid
|
* - Maps the dhcp option code and the dhcp value to the network uuid
|
||||||
@ -284,6 +279,7 @@ public interface UserVmService {
|
|||||||
* an optional parameter that creates additional data disks for the virtual machine
|
* an optional parameter that creates additional data disks for the virtual machine
|
||||||
* For each of the templates in the map, a data disk will be created from the corresponding
|
* For each of the templates in the map, a data disk will be created from the corresponding
|
||||||
* disk offering obtained from the map
|
* disk offering obtained from the map
|
||||||
|
* @param type
|
||||||
* @return UserVm object if successful.
|
* @return UserVm object if successful.
|
||||||
*
|
*
|
||||||
* @throws InsufficientCapacityException
|
* @throws InsufficientCapacityException
|
||||||
@ -299,9 +295,7 @@ public interface UserVmService {
|
|||||||
List<Long> securityGroupIdList, Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor,
|
List<Long> securityGroupIdList, Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor,
|
||||||
HTTPMethod httpmethod, String userData, List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean displayVm, String keyboard,
|
HTTPMethod httpmethod, String userData, List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean displayVm, String keyboard,
|
||||||
List<Long> affinityGroupIdList, Map<String, String> customParameters, String customId, Map<String, Map<Integer, String>> dhcpOptionMap,
|
List<Long> affinityGroupIdList, Map<String, String> customParameters, String customId, Map<String, Map<Integer, String>> dhcpOptionMap,
|
||||||
Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
|
Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap, Map<String, String> userVmOVFProperties, boolean dynamicScalingEnabled, Long overrideDiskOfferingId, String vmType) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException, StorageUnavailableException, ResourceAllocationException;
|
||||||
Map<String, String> userVmOVFProperties, boolean dynamicScalingEnabled, Long overrideDiskOfferingId) throws InsufficientCapacityException,
|
|
||||||
ConcurrentOperationException, ResourceUnavailableException, StorageUnavailableException, ResourceAllocationException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a User VM in Advanced Zone (Security Group feature is disabled)
|
* Creates a User VM in Advanced Zone (Security Group feature is disabled)
|
||||||
@ -379,7 +373,7 @@ public interface UserVmService {
|
|||||||
String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor, HTTPMethod httpmethod, String userData,
|
String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor, HTTPMethod httpmethod, String userData,
|
||||||
List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean displayVm, String keyboard, List<Long> affinityGroupIdList,
|
List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean displayVm, String keyboard, List<Long> affinityGroupIdList,
|
||||||
Map<String, String> customParameters, String customId, Map<String, Map<Integer, String>> dhcpOptionMap, Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
|
Map<String, String> customParameters, String customId, Map<String, Map<Integer, String>> dhcpOptionMap, Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
|
||||||
Map<String, String> templateOvfPropertiesMap, boolean dynamicScalingEnabled, String type, Long overrideDiskOfferingId)
|
Map<String, String> templateOvfPropertiesMap, boolean dynamicScalingEnabled, String vmType, Long overrideDiskOfferingId)
|
||||||
|
|
||||||
throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException, StorageUnavailableException, ResourceAllocationException;
|
throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException, StorageUnavailableException, ResourceAllocationException;
|
||||||
|
|
||||||
|
|||||||
@ -652,3 +652,6 @@ INSERT INTO `cloud`.`user_vm_details`(`vm_id`, `name`, `value`)
|
|||||||
INNER JOIN `cloud`.`vm_instance` ON vm_instance.id = user_vm_details.vm_id
|
INNER JOIN `cloud`.`vm_instance` ON vm_instance.id = user_vm_details.vm_id
|
||||||
WHERE ssh_keypairs.account_id = vm_instance.account_id;
|
WHERE ssh_keypairs.account_id = vm_instance.account_id;
|
||||||
|
|
||||||
|
ALTER TABLE `cloud`.`kubernetes_cluster` ADD COLUMN `security_group_id` bigint unsigned DEFAULT NULL,
|
||||||
|
ADD CONSTRAINT `fk_kubernetes_cluster__security_group_id` FOREIGN KEY `fk_kubernetes_cluster__security_group_id`(`security_group_id`) REFERENCES `security_group`(`id`) ON DELETE CASCADE;
|
||||||
|
|
||||||
|
|||||||
@ -136,4 +136,5 @@ public interface KubernetesCluster extends ControlledEntity, com.cloud.utils.fsm
|
|||||||
boolean getAutoscalingEnabled();
|
boolean getAutoscalingEnabled();
|
||||||
Long getMinSize();
|
Long getMinSize();
|
||||||
Long getMaxSize();
|
Long getMaxSize();
|
||||||
|
Long getSecurityGroupId();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -70,6 +70,10 @@ import com.cloud.network.dao.NetworkVO;
|
|||||||
import com.cloud.network.dao.PhysicalNetworkDao;
|
import com.cloud.network.dao.PhysicalNetworkDao;
|
||||||
import com.cloud.network.rules.FirewallRule;
|
import com.cloud.network.rules.FirewallRule;
|
||||||
import com.cloud.network.rules.FirewallRuleVO;
|
import com.cloud.network.rules.FirewallRuleVO;
|
||||||
|
import com.cloud.network.security.SecurityGroupManager;
|
||||||
|
import com.cloud.network.security.SecurityGroupService;
|
||||||
|
import com.cloud.network.security.SecurityGroupVO;
|
||||||
|
import com.cloud.network.security.SecurityRule;
|
||||||
import com.cloud.offering.NetworkOffering;
|
import com.cloud.offering.NetworkOffering;
|
||||||
import com.cloud.offering.ServiceOffering;
|
import com.cloud.offering.ServiceOffering;
|
||||||
import com.cloud.offerings.NetworkOfferingServiceMapVO;
|
import com.cloud.offerings.NetworkOfferingServiceMapVO;
|
||||||
@ -234,6 +238,10 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne
|
|||||||
protected FirewallRulesDao firewallRulesDao;
|
protected FirewallRulesDao firewallRulesDao;
|
||||||
@Inject
|
@Inject
|
||||||
private AnnotationDao annotationDao;
|
private AnnotationDao annotationDao;
|
||||||
|
@Inject
|
||||||
|
private SecurityGroupManager securityGroupManager;
|
||||||
|
@Inject
|
||||||
|
public SecurityGroupService securityGroupService;
|
||||||
|
|
||||||
private void logMessage(final Level logLevel, final String message, final Exception e) {
|
private void logMessage(final Level logLevel, final String message, final Exception e) {
|
||||||
if (logLevel == Level.WARN) {
|
if (logLevel == Level.WARN) {
|
||||||
@ -1036,17 +1044,39 @@ public class KubernetesClusterManagerImpl extends ManagerBase implements Kuberne
|
|||||||
logAndThrow(Level.ERROR, String.format("Creating Kubernetes cluster failed due to error while finding suitable deployment plan for cluster in zone : %s", zone.getName()));
|
logAndThrow(Level.ERROR, String.format("Creating Kubernetes cluster failed due to error while finding suitable deployment plan for cluster in zone : %s", zone.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SecurityGroupVO securityGroupVO = null;
|
||||||
|
if (zone.isSecurityGroupEnabled()) {
|
||||||
|
securityGroupVO = securityGroupManager.createSecurityGroup(KubernetesClusterActionWorker.CKS_CLUSTER_SECURITY_GROUP_NAME.concat(Long.toHexString(System.currentTimeMillis())), "Security group for CKS nodes", owner.getDomainId(), owner.getId(), owner.getAccountName());
|
||||||
|
if (securityGroupVO == null) {
|
||||||
|
throw new CloudRuntimeException(String.format("Failed to create security group: %s", KubernetesClusterActionWorker.CKS_CLUSTER_SECURITY_GROUP_NAME));
|
||||||
|
}
|
||||||
|
List<String> cidrList = new ArrayList<>();
|
||||||
|
cidrList.add(NetUtils.ALL_IP4_CIDRS);
|
||||||
|
securityGroupService.authorizeSecurityGroupRule(securityGroupVO.getId(), NetUtils.TCP_PROTO,
|
||||||
|
KubernetesClusterActionWorker.CLUSTER_NODES_DEFAULT_SSH_PORT_SG, KubernetesClusterActionWorker.CLUSTER_NODES_DEFAULT_SSH_PORT_SG,
|
||||||
|
null, null, cidrList, null, SecurityRule.SecurityRuleType.IngressRule);
|
||||||
|
securityGroupService.authorizeSecurityGroupRule(securityGroupVO.getId(), NetUtils.TCP_PROTO,
|
||||||
|
KubernetesClusterActionWorker.CLUSTER_API_PORT, KubernetesClusterActionWorker.CLUSTER_API_PORT,
|
||||||
|
null, null, cidrList, null, SecurityRule.SecurityRuleType.IngressRule);
|
||||||
|
securityGroupService.authorizeSecurityGroupRule(securityGroupVO.getId(), NetUtils.ALL_PROTO,
|
||||||
|
null, null, null, null, cidrList, null, SecurityRule.SecurityRuleType.EgressRule);
|
||||||
|
}
|
||||||
|
|
||||||
final Network defaultNetwork = getKubernetesClusterNetworkIfMissing(cmd.getName(), zone, owner, (int)controlNodeCount, (int)clusterSize, cmd.getExternalLoadBalancerIpAddress(), cmd.getNetworkId());
|
final Network defaultNetwork = getKubernetesClusterNetworkIfMissing(cmd.getName(), zone, owner, (int)controlNodeCount, (int)clusterSize, cmd.getExternalLoadBalancerIpAddress(), cmd.getNetworkId());
|
||||||
final VMTemplateVO finalTemplate = getKubernetesServiceTemplate(zone, deployDestination.getCluster().getHypervisorType());
|
final VMTemplateVO finalTemplate = getKubernetesServiceTemplate(zone, deployDestination.getCluster().getHypervisorType());
|
||||||
final long cores = serviceOffering.getCpu() * (controlNodeCount + clusterSize);
|
final long cores = serviceOffering.getCpu() * (controlNodeCount + clusterSize);
|
||||||
final long memory = serviceOffering.getRamSize() * (controlNodeCount + clusterSize);
|
final long memory = serviceOffering.getRamSize() * (controlNodeCount + clusterSize);
|
||||||
|
|
||||||
|
SecurityGroupVO finalSecurityGroupVO = securityGroupVO;
|
||||||
final KubernetesClusterVO cluster = Transaction.execute(new TransactionCallback<KubernetesClusterVO>() {
|
final KubernetesClusterVO cluster = Transaction.execute(new TransactionCallback<KubernetesClusterVO>() {
|
||||||
@Override
|
@Override
|
||||||
public KubernetesClusterVO doInTransaction(TransactionStatus status) {
|
public KubernetesClusterVO doInTransaction(TransactionStatus status) {
|
||||||
KubernetesClusterVO newCluster = new KubernetesClusterVO(cmd.getName(), cmd.getDisplayName(), zone.getId(), clusterKubernetesVersion.getId(),
|
KubernetesClusterVO newCluster = new KubernetesClusterVO(cmd.getName(), cmd.getDisplayName(), zone.getId(), clusterKubernetesVersion.getId(),
|
||||||
serviceOffering.getId(), finalTemplate.getId(), defaultNetwork.getId(), owner.getDomainId(),
|
serviceOffering.getId(), finalTemplate.getId(), defaultNetwork.getId(), owner.getDomainId(),
|
||||||
owner.getAccountId(), controlNodeCount, clusterSize, KubernetesCluster.State.Created, cmd.getSSHKeyPairName(), cores, memory, cmd.getNodeRootDiskSize(), "");
|
owner.getAccountId(), controlNodeCount, clusterSize, KubernetesCluster.State.Created, cmd.getSSHKeyPairName(), cores, memory, cmd.getNodeRootDiskSize(), "");
|
||||||
|
if (zone.isSecurityGroupEnabled()) {
|
||||||
|
newCluster.setSecurityGroupId(finalSecurityGroupVO.getId());
|
||||||
|
}
|
||||||
kubernetesClusterDao.persist(newCluster);
|
kubernetesClusterDao.persist(newCluster);
|
||||||
return newCluster;
|
return newCluster;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -111,6 +111,9 @@ public class KubernetesClusterVO implements KubernetesCluster {
|
|||||||
@Column(name = "gc")
|
@Column(name = "gc")
|
||||||
private boolean checkForGc;
|
private boolean checkForGc;
|
||||||
|
|
||||||
|
@Column(name = "security_group_id")
|
||||||
|
private Long securityGroupId;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getId() {
|
public long getId() {
|
||||||
return id;
|
return id;
|
||||||
@ -339,6 +342,14 @@ public class KubernetesClusterVO implements KubernetesCluster {
|
|||||||
this.maxSize = maxSize;
|
this.maxSize = maxSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSecurityGroupId(Long securityGroupId) {
|
||||||
|
this.securityGroupId = securityGroupId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getSecurityGroupId() {
|
||||||
|
return securityGroupId;
|
||||||
|
}
|
||||||
|
|
||||||
public KubernetesClusterVO() {
|
public KubernetesClusterVO() {
|
||||||
this.uuid = UUID.randomUUID().toString();
|
this.uuid = UUID.randomUUID().toString();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -92,6 +92,9 @@ public class KubernetesClusterActionWorker {
|
|||||||
public static final String CLUSTER_NODE_VM_USER = "cloud";
|
public static final String CLUSTER_NODE_VM_USER = "cloud";
|
||||||
public static final int CLUSTER_API_PORT = 6443;
|
public static final int CLUSTER_API_PORT = 6443;
|
||||||
public static final int CLUSTER_NODES_DEFAULT_START_SSH_PORT = 2222;
|
public static final int CLUSTER_NODES_DEFAULT_START_SSH_PORT = 2222;
|
||||||
|
public static final int CLUSTER_NODES_DEFAULT_SSH_PORT_SG = 22;
|
||||||
|
|
||||||
|
public static final String CKS_CLUSTER_SECURITY_GROUP_NAME = "CKSSecurityGroup";
|
||||||
|
|
||||||
protected static final Logger LOGGER = Logger.getLogger(KubernetesClusterActionWorker.class);
|
protected static final Logger LOGGER = Logger.getLogger(KubernetesClusterActionWorker.class);
|
||||||
|
|
||||||
|
|||||||
@ -375,15 +375,25 @@ public class KubernetesClusterResourceModifierActionWorker extends KubernetesClu
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logAndThrow(Level.ERROR, "Failed to read Kubernetes node configuration file", e);
|
logAndThrow(Level.ERROR, "Failed to read Kubernetes node configuration file", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
String base64UserData = Base64.encodeBase64String(k8sNodeConfig.getBytes(com.cloud.utils.StringUtils.getPreferredCharset()));
|
String base64UserData = Base64.encodeBase64String(k8sNodeConfig.getBytes(com.cloud.utils.StringUtils.getPreferredCharset()));
|
||||||
List<String> keypairs = new ArrayList<String>();
|
List<String> keypairs = new ArrayList<String>();
|
||||||
if (StringUtils.isNotBlank(kubernetesCluster.getKeyPair())) {
|
if (StringUtils.isNotBlank(kubernetesCluster.getKeyPair())) {
|
||||||
keypairs.add(kubernetesCluster.getKeyPair());
|
keypairs.add(kubernetesCluster.getKeyPair());
|
||||||
}
|
}
|
||||||
|
if (zone.isSecurityGroupEnabled()) {
|
||||||
|
List<Long> securityGroupIds = new ArrayList<>();
|
||||||
|
securityGroupIds.add(kubernetesCluster.getSecurityGroupId());
|
||||||
|
nodeVm = userVmService.createAdvancedSecurityGroupVirtualMachine(zone, serviceOffering, clusterTemplate, networkIds, securityGroupIds, owner,
|
||||||
|
hostName, hostName, null, null, null, Hypervisor.HypervisorType.None, BaseCmd.HTTPMethod.POST,base64UserData, keypairs,
|
||||||
|
null, addrs, null, null, null, customParameterMap, null, null, null,
|
||||||
|
null, true, null, UserVmManager.CKS_NODE);
|
||||||
|
} else {
|
||||||
nodeVm = userVmService.createAdvancedVirtualMachine(zone, serviceOffering, clusterTemplate, networkIds, owner,
|
nodeVm = userVmService.createAdvancedVirtualMachine(zone, serviceOffering, clusterTemplate, networkIds, owner,
|
||||||
hostName, hostName, null, null, null,
|
hostName, hostName, null, null, null,
|
||||||
Hypervisor.HypervisorType.None, BaseCmd.HTTPMethod.POST, base64UserData, keypairs,
|
Hypervisor.HypervisorType.None, BaseCmd.HTTPMethod.POST, base64UserData, keypairs,
|
||||||
null, addrs, null, null, null, customParameterMap, null, null, null, null, true, UserVmManager.CKS_NODE, null);
|
null, addrs, null, null, null, customParameterMap, null, null, null, null, true, UserVmManager.CKS_NODE, null);
|
||||||
|
}
|
||||||
if (LOGGER.isInfoEnabled()) {
|
if (LOGGER.isInfoEnabled()) {
|
||||||
LOGGER.info(String.format("Created node VM : %s, %s in the Kubernetes cluster : %s", hostName, nodeVm.getUuid(), kubernetesCluster.getName()));
|
LOGGER.info(String.format("Created node VM : %s, %s in the Kubernetes cluster : %s", hostName, nodeVm.getUuid(), kubernetesCluster.getName()));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -217,10 +217,19 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
|
|||||||
if (StringUtils.isNotBlank(kubernetesCluster.getKeyPair())) {
|
if (StringUtils.isNotBlank(kubernetesCluster.getKeyPair())) {
|
||||||
keypairs.add(kubernetesCluster.getKeyPair());
|
keypairs.add(kubernetesCluster.getKeyPair());
|
||||||
}
|
}
|
||||||
|
if (zone.isSecurityGroupEnabled()) {
|
||||||
|
List<Long> securityGroupIds = new ArrayList<>();
|
||||||
|
securityGroupIds.add(kubernetesCluster.getSecurityGroupId());
|
||||||
|
controlVm = userVmService.createAdvancedSecurityGroupVirtualMachine(zone, serviceOffering, clusterTemplate, networkIds, securityGroupIds, owner,
|
||||||
|
hostName, hostName, null, null, null, Hypervisor.HypervisorType.None, BaseCmd.HTTPMethod.POST,base64UserData, keypairs,
|
||||||
|
requestedIps, addrs, null, null, null, customParameterMap, null, null, null,
|
||||||
|
null, true, null, UserVmManager.CKS_NODE);
|
||||||
|
} else {
|
||||||
controlVm = userVmService.createAdvancedVirtualMachine(zone, serviceOffering, clusterTemplate, networkIds, owner,
|
controlVm = userVmService.createAdvancedVirtualMachine(zone, serviceOffering, clusterTemplate, networkIds, owner,
|
||||||
hostName, hostName, null, null, null,
|
hostName, hostName, null, null, null,
|
||||||
Hypervisor.HypervisorType.None, BaseCmd.HTTPMethod.POST, base64UserData, keypairs,
|
Hypervisor.HypervisorType.None, BaseCmd.HTTPMethod.POST, base64UserData, keypairs,
|
||||||
requestedIps, addrs, null, null, null, customParameterMap, null, null, null, null, true, UserVmManager.CKS_NODE, null);
|
requestedIps, addrs, null, null, null, customParameterMap, null, null, null, null, true, UserVmManager.CKS_NODE, null);
|
||||||
|
}
|
||||||
if (LOGGER.isInfoEnabled()) {
|
if (LOGGER.isInfoEnabled()) {
|
||||||
LOGGER.info(String.format("Created control VM ID: %s, %s in the Kubernetes cluster : %s", controlVm.getUuid(), hostName, kubernetesCluster.getName()));
|
LOGGER.info(String.format("Created control VM ID: %s, %s in the Kubernetes cluster : %s", controlVm.getUuid(), hostName, kubernetesCluster.getName()));
|
||||||
}
|
}
|
||||||
@ -276,15 +285,26 @@ public class KubernetesClusterStartWorker extends KubernetesClusterResourceModif
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logAndThrow(Level.ERROR, "Failed to read Kubernetes control configuration file", e);
|
logAndThrow(Level.ERROR, "Failed to read Kubernetes control configuration file", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
String base64UserData = Base64.encodeBase64String(k8sControlNodeConfig.getBytes(com.cloud.utils.StringUtils.getPreferredCharset()));
|
String base64UserData = Base64.encodeBase64String(k8sControlNodeConfig.getBytes(com.cloud.utils.StringUtils.getPreferredCharset()));
|
||||||
List<String> keypairs = new ArrayList<String>();
|
List<String> keypairs = new ArrayList<String>();
|
||||||
if (StringUtils.isNotBlank(kubernetesCluster.getKeyPair())) {
|
if (StringUtils.isNotBlank(kubernetesCluster.getKeyPair())) {
|
||||||
keypairs.add(kubernetesCluster.getKeyPair());
|
keypairs.add(kubernetesCluster.getKeyPair());
|
||||||
}
|
}
|
||||||
|
if (zone.isSecurityGroupEnabled()) {
|
||||||
|
List<Long> securityGroupIds = new ArrayList<>();
|
||||||
|
securityGroupIds.add(kubernetesCluster.getSecurityGroupId());
|
||||||
|
additionalControlVm = userVmService.createAdvancedSecurityGroupVirtualMachine(zone, serviceOffering, clusterTemplate, networkIds, securityGroupIds, owner,
|
||||||
|
hostName, hostName, null, null, null, Hypervisor.HypervisorType.None, BaseCmd.HTTPMethod.POST,base64UserData, keypairs,
|
||||||
|
null, addrs, null, null, null, customParameterMap, null, null, null,
|
||||||
|
null, true, null, UserVmManager.CKS_NODE);
|
||||||
|
} else {
|
||||||
additionalControlVm = userVmService.createAdvancedVirtualMachine(zone, serviceOffering, clusterTemplate, networkIds, owner,
|
additionalControlVm = userVmService.createAdvancedVirtualMachine(zone, serviceOffering, clusterTemplate, networkIds, owner,
|
||||||
hostName, hostName, null, null, null,
|
hostName, hostName, null, null, null,
|
||||||
Hypervisor.HypervisorType.None, BaseCmd.HTTPMethod.POST, base64UserData, keypairs,
|
Hypervisor.HypervisorType.None, BaseCmd.HTTPMethod.POST, base64UserData, keypairs,
|
||||||
null, addrs, null, null, null, customParameterMap, null, null, null, null, true, UserVmManager.CKS_NODE, null);
|
null, addrs, null, null, null, customParameterMap, null, null, null, null, true, UserVmManager.CKS_NODE, null);
|
||||||
|
}
|
||||||
|
|
||||||
if (LOGGER.isInfoEnabled()) {
|
if (LOGGER.isInfoEnabled()) {
|
||||||
LOGGER.info(String.format("Created control VM ID : %s, %s in the Kubernetes cluster : %s", additionalControlVm.getUuid(), hostName, kubernetesCluster.getName()));
|
LOGGER.info(String.format("Created control VM ID : %s, %s in the Kubernetes cluster : %s", additionalControlVm.getUuid(), hostName, kubernetesCluster.getName()));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1336,9 +1336,7 @@ public class AutoScaleManagerImpl<Type> extends ManagerBase implements AutoScale
|
|||||||
if (zone.isSecurityGroupEnabled()) {
|
if (zone.isSecurityGroupEnabled()) {
|
||||||
vm = _userVmService.createAdvancedSecurityGroupVirtualMachine(zone, serviceOffering, template, null, null,
|
vm = _userVmService.createAdvancedSecurityGroupVirtualMachine(zone, serviceOffering, template, null, null,
|
||||||
owner, "autoScaleVm-" + asGroup.getId() + "-" + getCurrentTimeStampString(),
|
owner, "autoScaleVm-" + asGroup.getId() + "-" + getCurrentTimeStampString(),
|
||||||
"autoScaleVm-" + asGroup.getId() + "-" + getCurrentTimeStampString(), null, null, null, HypervisorType.XenServer, HTTPMethod.GET, null, null,
|
"autoScaleVm-" + asGroup.getId() + "-" + getCurrentTimeStampString(), null, null, null, HypervisorType.XenServer, HTTPMethod.GET, null, null,null, null, true, null, null, null, null, null, null, null, true, null, null);
|
||||||
null, null, true, null, null, null, null, null, null, null, true, null);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
vm = _userVmService.createAdvancedVirtualMachine(zone, serviceOffering, template, null, owner, "autoScaleVm-" + asGroup.getId() + "-" +
|
vm = _userVmService.createAdvancedVirtualMachine(zone, serviceOffering, template, null, owner, "autoScaleVm-" + asGroup.getId() + "-" +
|
||||||
getCurrentTimeStampString(), "autoScaleVm-" + asGroup.getId() + "-" + getCurrentTimeStampString(),
|
getCurrentTimeStampString(), "autoScaleVm-" + asGroup.getId() + "-" + getCurrentTimeStampString(),
|
||||||
|
|||||||
@ -612,7 +612,7 @@ public class SecurityGroupManagerImpl extends ManagerBase implements SecurityGro
|
|||||||
return authorizeSecurityGroupRule(securityGroupId, protocol, startPort, endPort, icmpType, icmpCode, cidrList, groupList, SecurityRuleType.IngressRule);
|
return authorizeSecurityGroupRule(securityGroupId, protocol, startPort, endPort, icmpType, icmpCode, cidrList, groupList, SecurityRuleType.IngressRule);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<SecurityGroupRuleVO> authorizeSecurityGroupRule(final Long securityGroupId, String protocol, Integer startPort, Integer endPort, Integer icmpType,
|
public List<SecurityGroupRuleVO> authorizeSecurityGroupRule(final Long securityGroupId, String protocol, Integer startPort, Integer endPort, Integer icmpType,
|
||||||
Integer icmpCode, final List<String> cidrList, Map groupList, final SecurityRuleType ruleType) {
|
Integer icmpCode, final List<String> cidrList, Map groupList, final SecurityRuleType ruleType) {
|
||||||
Integer startPortOrType = null;
|
Integer startPortOrType = null;
|
||||||
Integer endPortOrCode = null;
|
Integer endPortOrCode = null;
|
||||||
|
|||||||
@ -3478,8 +3478,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||||||
List<Long> securityGroupIdList, Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor,
|
List<Long> securityGroupIdList, Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor,
|
||||||
HTTPMethod httpmethod, String userData, List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean displayVm, String keyboard,
|
HTTPMethod httpmethod, String userData, List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean displayVm, String keyboard,
|
||||||
List<Long> affinityGroupIdList, Map<String, String> customParameters, String customId, Map<String, Map<Integer, String>> dhcpOptionMap,
|
List<Long> affinityGroupIdList, Map<String, String> customParameters, String customId, Map<String, Map<Integer, String>> dhcpOptionMap,
|
||||||
Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap, Map<String, String> userVmOVFProperties, boolean dynamicScalingEnabled, Long overrideDiskOfferingId) throws InsufficientCapacityException, ConcurrentOperationException,
|
Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap, Map<String, String> userVmOVFProperties, boolean dynamicScalingEnabled, Long overrideDiskOfferingId, String vmType) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException, StorageUnavailableException, ResourceAllocationException {
|
||||||
ResourceUnavailableException, StorageUnavailableException, ResourceAllocationException {
|
|
||||||
|
|
||||||
Account caller = CallContext.current().getCallingAccount();
|
Account caller = CallContext.current().getCallingAccount();
|
||||||
List<NetworkVO> networkList = new ArrayList<NetworkVO>();
|
List<NetworkVO> networkList = new ArrayList<NetworkVO>();
|
||||||
@ -3579,7 +3578,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||||||
|
|
||||||
return createVirtualMachine(zone, serviceOffering, template, hostName, displayName, owner, diskOfferingId, diskSize, networkList, securityGroupIdList, group, httpmethod,
|
return createVirtualMachine(zone, serviceOffering, template, hostName, displayName, owner, diskOfferingId, diskSize, networkList, securityGroupIdList, group, httpmethod,
|
||||||
userData, sshKeyPairs, hypervisor, caller, requestedIps, defaultIps, displayVm, keyboard, affinityGroupIdList, customParameters, customId, dhcpOptionMap, dataDiskTemplateToDiskOfferingMap,
|
userData, sshKeyPairs, hypervisor, caller, requestedIps, defaultIps, displayVm, keyboard, affinityGroupIdList, customParameters, customId, dhcpOptionMap, dataDiskTemplateToDiskOfferingMap,
|
||||||
userVmOVFProperties, dynamicScalingEnabled, null, overrideDiskOfferingId);
|
userVmOVFProperties, dynamicScalingEnabled, vmType, overrideDiskOfferingId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -3588,7 +3587,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||||||
String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor, HTTPMethod httpmethod, String userData,
|
String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor, HTTPMethod httpmethod, String userData,
|
||||||
List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean displayvm, String keyboard, List<Long> affinityGroupIdList,
|
List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean displayvm, String keyboard, List<Long> affinityGroupIdList,
|
||||||
Map<String, String> customParametrs, String customId, Map<String, Map<Integer, String>> dhcpOptionsMap, Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
|
Map<String, String> customParametrs, String customId, Map<String, Map<Integer, String>> dhcpOptionsMap, Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
|
||||||
Map<String, String> userVmOVFPropertiesMap, boolean dynamicScalingEnabled, String type, Long overrideDiskOfferingId) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException,
|
Map<String, String> userVmOVFPropertiesMap, boolean dynamicScalingEnabled, String vmType, Long overrideDiskOfferingId) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException,
|
||||||
StorageUnavailableException, ResourceAllocationException {
|
StorageUnavailableException, ResourceAllocationException {
|
||||||
|
|
||||||
Account caller = CallContext.current().getCallingAccount();
|
Account caller = CallContext.current().getCallingAccount();
|
||||||
@ -3639,7 +3638,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||||||
verifyExtraDhcpOptionsNetwork(dhcpOptionsMap, networkList);
|
verifyExtraDhcpOptionsNetwork(dhcpOptionsMap, networkList);
|
||||||
return createVirtualMachine(zone, serviceOffering, template, hostName, displayName, owner, diskOfferingId, diskSize, networkList, null, group, httpmethod, userData,
|
return createVirtualMachine(zone, serviceOffering, template, hostName, displayName, owner, diskOfferingId, diskSize, networkList, null, group, httpmethod, userData,
|
||||||
sshKeyPairs, hypervisor, caller, requestedIps, defaultIps, displayvm, keyboard, affinityGroupIdList, customParametrs, customId, dhcpOptionsMap,
|
sshKeyPairs, hypervisor, caller, requestedIps, defaultIps, displayvm, keyboard, affinityGroupIdList, customParametrs, customId, dhcpOptionsMap,
|
||||||
dataDiskTemplateToDiskOfferingMap, userVmOVFPropertiesMap, dynamicScalingEnabled, type, overrideDiskOfferingId);
|
dataDiskTemplateToDiskOfferingMap, userVmOVFPropertiesMap, dynamicScalingEnabled, vmType, overrideDiskOfferingId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private NetworkVO getNetworkToAddToNetworkList(VirtualMachineTemplate template, Account owner, HypervisorType hypervisor,
|
private NetworkVO getNetworkToAddToNetworkList(VirtualMachineTemplate template, Account owner, HypervisorType hypervisor,
|
||||||
@ -3758,7 +3757,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||||||
List<String> sshKeyPairs, HypervisorType hypervisor, Account caller, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean isDisplayVm, String keyboard,
|
List<String> sshKeyPairs, HypervisorType hypervisor, Account caller, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean isDisplayVm, String keyboard,
|
||||||
List<Long> affinityGroupIdList, Map<String, String> customParameters, String customId, Map<String, Map<Integer, String>> dhcpOptionMap,
|
List<Long> affinityGroupIdList, Map<String, String> customParameters, String customId, Map<String, Map<Integer, String>> dhcpOptionMap,
|
||||||
Map<Long, DiskOffering> datadiskTemplateToDiskOfferringMap,
|
Map<Long, DiskOffering> datadiskTemplateToDiskOfferringMap,
|
||||||
Map<String, String> userVmOVFPropertiesMap, boolean dynamicScalingEnabled, String type, Long overrideDiskOfferingId) throws InsufficientCapacityException, ResourceUnavailableException,
|
Map<String, String> userVmOVFPropertiesMap, boolean dynamicScalingEnabled, String vmType, Long overrideDiskOfferingId) throws InsufficientCapacityException, ResourceUnavailableException,
|
||||||
ConcurrentOperationException, StorageUnavailableException, ResourceAllocationException {
|
ConcurrentOperationException, StorageUnavailableException, ResourceAllocationException {
|
||||||
|
|
||||||
_accountMgr.checkAccess(caller, null, true, owner);
|
_accountMgr.checkAccess(caller, null, true, owner);
|
||||||
@ -3938,7 +3937,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (template.getTemplateType().equals(TemplateType.SYSTEM) && !CKS_NODE.equals(type)) {
|
if (template.getTemplateType().equals(TemplateType.SYSTEM) && !CKS_NODE.equals(vmType)) {
|
||||||
throw new InvalidParameterValueException("Unable to use system template " + template.getId() + " to deploy a user vm");
|
throw new InvalidParameterValueException("Unable to use system template " + template.getId() + " to deploy a user vm");
|
||||||
}
|
}
|
||||||
List<VMTemplateZoneVO> listZoneTemplate = _templateZoneDao.listByZoneTemplate(zone.getId(), template.getId());
|
List<VMTemplateZoneVO> listZoneTemplate = _templateZoneDao.listByZoneTemplate(zone.getId(), template.getId());
|
||||||
@ -4129,7 +4128,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||||||
|
|
||||||
UserVmVO vm = commitUserVm(zone, template, hostName, displayName, owner, diskOfferingId, diskSize, userData, caller, isDisplayVm, keyboard, accountId, userId, offering,
|
UserVmVO vm = commitUserVm(zone, template, hostName, displayName, owner, diskOfferingId, diskSize, userData, caller, isDisplayVm, keyboard, accountId, userId, offering,
|
||||||
isIso, sshPublicKeys, networkNicMap, id, instanceName, uuidName, hypervisorType, customParameters, dhcpOptionMap,
|
isIso, sshPublicKeys, networkNicMap, id, instanceName, uuidName, hypervisorType, customParameters, dhcpOptionMap,
|
||||||
datadiskTemplateToDiskOfferringMap, userVmOVFPropertiesMap, dynamicScalingEnabled, type, rootDiskOfferingId, keypairnames);
|
datadiskTemplateToDiskOfferringMap, userVmOVFPropertiesMap, dynamicScalingEnabled, vmType, rootDiskOfferingId, keypairnames);
|
||||||
|
|
||||||
// Assign instance to the group
|
// Assign instance to the group
|
||||||
try {
|
try {
|
||||||
@ -4266,7 +4265,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||||||
final long accountId, final long userId, final ServiceOffering offering, final boolean isIso, final String sshPublicKeys, final LinkedHashMap<String, List<NicProfile>> networkNicMap,
|
final long accountId, final long userId, final ServiceOffering offering, final boolean isIso, final String sshPublicKeys, final LinkedHashMap<String, List<NicProfile>> networkNicMap,
|
||||||
final long id, final String instanceName, final String uuidName, final HypervisorType hypervisorType, final Map<String, String> customParameters,
|
final long id, final String instanceName, final String uuidName, final HypervisorType hypervisorType, final Map<String, String> customParameters,
|
||||||
final Map<String, Map<Integer, String>> extraDhcpOptionMap, final Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
|
final Map<String, Map<Integer, String>> extraDhcpOptionMap, final Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
|
||||||
final Map<String, String> userVmOVFPropertiesMap, final VirtualMachine.PowerState powerState, final boolean dynamicScalingEnabled, String type, final Long rootDiskOfferingId, String sshkeypairs) throws InsufficientCapacityException {
|
final Map<String, String> userVmOVFPropertiesMap, final VirtualMachine.PowerState powerState, final boolean dynamicScalingEnabled, String vmType, final Long rootDiskOfferingId, String sshkeypairs) throws InsufficientCapacityException {
|
||||||
return Transaction.execute(new TransactionCallbackWithException<UserVmVO, InsufficientCapacityException>() {
|
return Transaction.execute(new TransactionCallbackWithException<UserVmVO, InsufficientCapacityException>() {
|
||||||
@Override
|
@Override
|
||||||
public UserVmVO doInTransaction(TransactionStatus status) throws InsufficientCapacityException {
|
public UserVmVO doInTransaction(TransactionStatus status) throws InsufficientCapacityException {
|
||||||
@ -4357,7 +4356,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
vm.setUserVmType(type);
|
vm.setUserVmType(vmType);
|
||||||
_vmDao.persist(vm);
|
_vmDao.persist(vm);
|
||||||
for (String key : customParameters.keySet()) {
|
for (String key : customParameters.keySet()) {
|
||||||
// BIOS was explicitly passed as the boot type, so honour it
|
// BIOS was explicitly passed as the boot type, so honour it
|
||||||
@ -4474,13 +4473,13 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||||||
final long accountId, final long userId, final ServiceOfferingVO offering, final boolean isIso, final String sshPublicKeys, final LinkedHashMap<String, List<NicProfile>> networkNicMap,
|
final long accountId, final long userId, final ServiceOfferingVO offering, final boolean isIso, final String sshPublicKeys, final LinkedHashMap<String, List<NicProfile>> networkNicMap,
|
||||||
final long id, final String instanceName, final String uuidName, final HypervisorType hypervisorType, final Map<String, String> customParameters, final Map<String,
|
final long id, final String instanceName, final String uuidName, final HypervisorType hypervisorType, final Map<String, String> customParameters, final Map<String,
|
||||||
Map<Integer, String>> extraDhcpOptionMap, final Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
|
Map<Integer, String>> extraDhcpOptionMap, final Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
|
||||||
Map<String, String> userVmOVFPropertiesMap, final boolean dynamicScalingEnabled, String type, final Long rootDiskOfferingId, String sshkeypairs) throws InsufficientCapacityException {
|
Map<String, String> userVmOVFPropertiesMap, final boolean dynamicScalingEnabled, String vmType, final Long rootDiskOfferingId, String sshkeypairs) throws InsufficientCapacityException {
|
||||||
return commitUserVm(false, zone, null, null, template, hostName, displayName, owner,
|
return commitUserVm(false, zone, null, null, template, hostName, displayName, owner,
|
||||||
diskOfferingId, diskSize, userData, caller, isDisplayVm, keyboard,
|
diskOfferingId, diskSize, userData, caller, isDisplayVm, keyboard,
|
||||||
accountId, userId, offering, isIso, sshPublicKeys, networkNicMap,
|
accountId, userId, offering, isIso, sshPublicKeys, networkNicMap,
|
||||||
id, instanceName, uuidName, hypervisorType, customParameters,
|
id, instanceName, uuidName, hypervisorType, customParameters,
|
||||||
extraDhcpOptionMap, dataDiskTemplateToDiskOfferingMap,
|
extraDhcpOptionMap, dataDiskTemplateToDiskOfferingMap,
|
||||||
userVmOVFPropertiesMap, null, dynamicScalingEnabled, type, rootDiskOfferingId, sshkeypairs);
|
userVmOVFPropertiesMap, null, dynamicScalingEnabled, vmType, rootDiskOfferingId, sshkeypairs);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void validateRootDiskResize(final HypervisorType hypervisorType, Long rootDiskSize, VMTemplateVO templateVO, UserVmVO vm, final Map<String, String> customParameters) throws InvalidParameterValueException
|
public void validateRootDiskResize(final HypervisorType hypervisorType, Long rootDiskSize, VMTemplateVO templateVO, UserVmVO vm, final Map<String, String> customParameters) throws InvalidParameterValueException
|
||||||
@ -5727,7 +5726,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||||||
vm = createAdvancedSecurityGroupVirtualMachine(zone, serviceOffering, template, networkIds, getSecurityGroupIdList(cmd), owner, name,
|
vm = createAdvancedSecurityGroupVirtualMachine(zone, serviceOffering, template, networkIds, getSecurityGroupIdList(cmd), owner, name,
|
||||||
displayName, diskOfferingId, size, group, cmd.getHypervisor(), cmd.getHttpMethod(), userData, sshKeyPairNames, cmd.getIpToNetworkMap(), addrs, displayVm, keyboard,
|
displayName, diskOfferingId, size, group, cmd.getHypervisor(), cmd.getHttpMethod(), userData, sshKeyPairNames, cmd.getIpToNetworkMap(), addrs, displayVm, keyboard,
|
||||||
cmd.getAffinityGroupIdList(), cmd.getDetails(), cmd.getCustomId(), cmd.getDhcpOptionsMap(),
|
cmd.getAffinityGroupIdList(), cmd.getDetails(), cmd.getCustomId(), cmd.getDhcpOptionsMap(),
|
||||||
dataDiskTemplateToDiskOfferingMap, userVmOVFProperties, dynamicScalingEnabled, overrideDiskOfferingId);
|
dataDiskTemplateToDiskOfferingMap, userVmOVFProperties, dynamicScalingEnabled, overrideDiskOfferingId, null);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (cmd.getSecurityGroupIdList() != null && !cmd.getSecurityGroupIdList().isEmpty()) {
|
if (cmd.getSecurityGroupIdList() != null && !cmd.getSecurityGroupIdList().isEmpty()) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user