Skip to content

Commit 84a528f

Browse files
committed
Merge branch 'master' into rbac
2 parents fa80c63 + 90c485e commit 84a528f

31 files changed

Lines changed: 175 additions & 321 deletions

File tree

api/src/com/cloud/domain/Domain.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,4 @@ enum State {
6060

6161
String getNetworkDomain();
6262

63-
@Override
64-
public String getUuid();
65-
6663
}

api/src/org/apache/cloudstack/api/ApiConstants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public class ApiConstants {
5959
public static final String CTX_ACCOUNT_ID = "ctxaccountid";
6060
public static final String CTX_USER_ID = "ctxuserid";
6161
public static final String CTXSTARTEVENTID = "ctxstarteventid";
62-
public static final String CTX_START_EVENT_ID = "ctxStartEventId";
62+
public static final String CTX_START_EVENT_ID = "ctxstarteventid";
6363
public static final String CUSTOMIZED = "customized";
6464
public static final String CUSTOMIZED_IOPS = "customizediops";
6565
public static final String CUSTOM_ID = "customid";

api/src/org/apache/cloudstack/api/BaseListCmd.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
public abstract class BaseListCmd extends BaseCmd {
2525

2626
private static Long s_maxPageSize = null;
27-
public static Long s_pageSizeUnlimited = -1L;
27+
public static final Long s_pageSizeUnlimited = -1L;
2828

2929
// ///////////////////////////////////////////////////
3030
// ///////// BaseList API parameters /////////////////

api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ public class DeployVMCmd extends BaseAsyncCreateCustomIdCmd {
181181
@Parameter(name = ApiConstants.DETAILS, type = CommandType.MAP, since = "4.3", description = "used to specify the custom parameters.")
182182
private Map details;
183183

184+
@Parameter(name = ApiConstants.DEPLOYMENT_PLANNER, type = CommandType.STRING, description = "Deployment planner to use for vm allocation. Available to ROOT admin only", since = "4.4", authorized = { RoleType.Admin })
185+
private String deploymentPlanner;
186+
184187
/////////////////////////////////////////////////////
185188
/////////////////// Accessors ///////////////////////
186189
/////////////////////////////////////////////////////
@@ -196,6 +199,10 @@ public Long getDiskOfferingId() {
196199
return diskOfferingId;
197200
}
198201

202+
public String getDeploymentPlanner() {
203+
return deploymentPlanner;
204+
}
205+
199206
public String getDisplayName() {
200207
return displayName;
201208
}

api/src/org/apache/cloudstack/api/command/user/vm/StartVMCmd.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,17 @@
1616
// under the License.
1717
package org.apache.cloudstack.api.command.user.vm;
1818

19-
import org.apache.cloudstack.api.BaseAsyncVMCmd;
2019
import org.apache.log4j.Logger;
2120

2221
import org.apache.cloudstack.acl.IAMEntityType;
22+
import org.apache.cloudstack.acl.RoleType;
2323
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
2424
import org.apache.cloudstack.api.ACL;
2525
import org.apache.cloudstack.api.APICommand;
2626
import org.apache.cloudstack.api.ApiCommandJobType;
2727
import org.apache.cloudstack.api.ApiConstants;
2828
import org.apache.cloudstack.api.ApiErrorCode;
29+
import org.apache.cloudstack.api.BaseAsyncVMCmd;
2930
import org.apache.cloudstack.api.Parameter;
3031
import org.apache.cloudstack.api.ResponseObject.ResponseView;
3132
import org.apache.cloudstack.api.ServerApiException;
@@ -66,10 +67,14 @@ public class StartVMCmd extends BaseAsyncVMCmd {
6667
since = "3.0.1")
6768
private Long hostId;
6869

70+
@Parameter(name = ApiConstants.DEPLOYMENT_PLANNER, type = CommandType.STRING, description = "Deployment planner to use for vm allocation. Available to ROOT admin only", since = "4.4", authorized = { RoleType.Admin })
71+
private String deploymentPlanner;
72+
6973
// ///////////////////////////////////////////////////
7074
// ///////////////// Accessors ///////////////////////
7175
// ///////////////////////////////////////////////////
7276

77+
@Override
7378
public Long getId() {
7479
return id;
7580
}
@@ -91,6 +96,10 @@ public static String getResultObjectName() {
9196
return "virtualmachine";
9297
}
9398

99+
public String getDeploymentPlanner() {
100+
return deploymentPlanner;
101+
}
102+
94103
@Override
95104
public long getEntityOwnerId() {
96105
UserVm vm = _responseGenerator.findUserVmById(getId());

engine/api/src/com/cloud/vm/VirtualMachineManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ void allocate(String vmInstanceName, VirtualMachineTemplate template, ServiceOff
8585

8686
void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params);
8787

88-
void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy);
88+
void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy, DeploymentPlanner planner);
8989

9090
void stop(String vmUuid) throws ResourceUnavailableException;
9191

engine/api/src/org/apache/cloudstack/engine/cloud/entity/api/VirtualMachineEntity.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.apache.cloudstack.engine.entity.api.CloudStackEntity;
3131

3232
import com.cloud.deploy.DeploymentPlan;
33+
import com.cloud.deploy.DeploymentPlanner;
3334
import com.cloud.deploy.DeploymentPlanner.ExcludeList;
3435
import com.cloud.exception.AgentUnavailableException;
3536
import com.cloud.exception.CloudException;
@@ -90,7 +91,7 @@ public interface VirtualMachineEntity extends CloudStackEntity {
9091
* @param exclude list of areas to exclude
9192
* @return a reservation id
9293
*/
93-
String reserve(String plannerToUse, @BeanParam DeploymentPlan plan, ExcludeList exclude, String caller) throws InsufficientCapacityException,
94+
String reserve(DeploymentPlanner plannerToUse, @BeanParam DeploymentPlan plan, ExcludeList exclude, String caller) throws InsufficientCapacityException,
9495
ResourceUnavailableException;
9596

9697
/**

engine/components-api/src/com/cloud/deploy/DeploymentPlanningManager.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,10 @@ DeployDestination planDeployment(VirtualMachineProfile vmProfile, DeploymentPlan
4343
ExcludeList avoids, DeploymentPlanner planner) throws InsufficientServerCapacityException, AffinityConflictException;
4444

4545
String finalizeReservation(DeployDestination plannedDestination,
46-
VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoids)
46+
VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoids, DeploymentPlanner planner)
4747
throws InsufficientServerCapacityException, AffinityConflictException;
4848

4949
void cleanupVMReservations();
50+
51+
DeploymentPlanner getDeploymentPlannerByName(String plannerName);
5052
}

engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@
4040
import javax.inject.Inject;
4141
import javax.naming.ConfigurationException;
4242

43-
import org.apache.log4j.Logger;
44-
4543
import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao;
4644
import org.apache.cloudstack.context.CallContext;
4745
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
@@ -70,6 +68,7 @@
7068
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
7169
import org.apache.cloudstack.storage.to.VolumeObjectTO;
7270
import org.apache.cloudstack.utils.identity.ManagementServerNode;
71+
import org.apache.log4j.Logger;
7372

7473
import com.cloud.agent.AgentManager;
7574
import com.cloud.agent.Listener;
@@ -80,8 +79,8 @@
8079
import com.cloud.agent.api.CheckVirtualMachineCommand;
8180
import com.cloud.agent.api.ClusterSyncAnswer;
8281
import com.cloud.agent.api.ClusterSyncCommand;
83-
import com.cloud.agent.api.ClusterVMMetaDataSyncCommand;
8482
import com.cloud.agent.api.ClusterVMMetaDataSyncAnswer;
83+
import com.cloud.agent.api.ClusterVMMetaDataSyncCommand;
8584
import com.cloud.agent.api.Command;
8685
import com.cloud.agent.api.MigrateAnswer;
8786
import com.cloud.agent.api.MigrateCommand;
@@ -608,13 +607,13 @@ protected VirtualMachineManagerImpl() {
608607

609608
@Override
610609
public void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params) {
611-
start(vmUuid, params, null);
610+
start(vmUuid, params, null, null);
612611
}
613612

614613
@Override
615-
public void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy) {
614+
public void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy, DeploymentPlanner planner) {
616615
try {
617-
advanceStart(vmUuid, params, planToDeploy, null);
616+
advanceStart(vmUuid, params, planToDeploy, planner);
618617
} catch (ConcurrentOperationException e) {
619618
throw new CloudRuntimeException("Unable to start a VM due to concurrent operation", e).add(VirtualMachine.class, vmUuid);
620619
} catch (InsufficientCapacityException e) {
@@ -779,7 +778,7 @@ public void advanceStart(String vmUuid, Map<VirtualMachineProfile.Param, Object>
779778
_workJobDao.expunge(placeHolder.getId());
780779
}
781780
} else {
782-
Outcome<VirtualMachine> outcome = startVmThroughJobQueue(vmUuid, params, planToDeploy);
781+
Outcome<VirtualMachine> outcome = startVmThroughJobQueue(vmUuid, params, planToDeploy, planner);
783782

784783
try {
785784
VirtualMachine vm = outcome.get();
@@ -4451,7 +4450,7 @@ protected VirtualMachine retrieve() {
44514450
//
44524451
public Outcome<VirtualMachine> startVmThroughJobQueue(final String vmUuid,
44534452
final Map<VirtualMachineProfile.Param, Object> params,
4454-
final DeploymentPlan planToDeploy) {
4453+
final DeploymentPlan planToDeploy, final DeploymentPlanner planner) {
44554454

44564455
final CallContext context = CallContext.current();
44574456
final User callingUser = context.getCallingUser();
@@ -4488,6 +4487,9 @@ public Object[] doInTransaction(TransactionStatus status) {
44884487
// save work context info (there are some duplications)
44894488
VmWorkStart workInfo = new VmWorkStart(callingUser.getId(), callingAccount.getId(), vm.getId(), VirtualMachineManagerImpl.VM_WORK_JOB_HANDLER);
44904489
workInfo.setPlan(planToDeploy);
4490+
if (planner != null) {
4491+
workInfo.setDeploymentPlanner(planner.getName());
4492+
}
44914493
workInfo.setParams(params);
44924494
workJob.setCmdInfo(VmWorkSerializer.serialize(workInfo));
44934495

@@ -5123,7 +5125,7 @@ private Pair<JobInfo.Status, String> orchestrateStart(VmWorkStart work) throws E
51235125
}
51245126
assert (vm != null);
51255127

5126-
orchestrateStart(vm.getUuid(), work.getParams(), work.getPlan(), null);
5128+
orchestrateStart(vm.getUuid(), work.getParams(), work.getPlan(), _dpMgr.getDeploymentPlannerByName(work.getDeploymentPlanner()));
51275129
return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, null);
51285130
}
51295131

engine/orchestration/src/com/cloud/vm/VmWorkStart.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,9 @@
2121
import java.util.HashMap;
2222
import java.util.Map;
2323

24-
import org.apache.log4j.Logger;
25-
2624
import org.apache.cloudstack.context.CallContext;
2725
import org.apache.cloudstack.framework.jobs.impl.JobSerializerHelper;
26+
import org.apache.log4j.Logger;
2827

2928
import com.cloud.deploy.DataCenterDeployment;
3029
import com.cloud.deploy.DeploymentPlan;
@@ -46,6 +45,7 @@ public class VmWorkStart extends VmWork {
4645

4746
String reservationId;
4847
String journalName;
48+
String planner;
4949

5050
// use serialization friendly map
5151
private Map<String, String> rawParams;
@@ -91,6 +91,14 @@ public void setPlan(DeploymentPlan plan) {
9191
}
9292
}
9393

94+
public void setDeploymentPlanner(String planner) {
95+
this.planner = planner;
96+
}
97+
98+
public String getDeploymentPlanner() {
99+
return this.planner;
100+
}
101+
94102
public Map<String, String> getRawParams() {
95103
return rawParams;
96104
}

0 commit comments

Comments
 (0)