weizhouapache commented on PR #7597:
URL: https://github.com/apache/cloudstack/pull/7597#issuecomment-1584695790

   > > > Do we need to make java changes as well ? cc @DaanHoogland 
@rohityadavcloud
   > > 
   > > 
   > > this is just a UI change @weizhouapache . Do we need/want to block this 
on the API as well? I see no need for that but if we think so I will look into 
it.
   > 
   > I checked the code and the `clusterid` and `hostid` are not guarded 
against use by users in the API, so I think it makes no sense to guard against 
the use of `considerlasthost`. it is true by default whic is the old bahaviour. 
Having it as false will only make the process resemble a start of a fresh 
installed VM. Can you agree @weizhouapache ?
   
   @DaanHoogland 
   if normal user passes `clusterid` or `hostid`, it will might get an exception
   
   
https://github.com/apache/cloudstack/blob/4.18.0.0/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java#L5421-L5451
   
   ```
       private Cluster getDestinationCluster(Long clusterId, boolean 
isRootAdmin) {
           Cluster destinationCluster = null;
           if (clusterId != null) {
               if (!isRootAdmin) {
                   throw new PermissionDeniedException(
                           "Parameter " + ApiConstants.CLUSTER_ID + " can only 
be specified by a Root Admin, permission denied");
               }
               destinationCluster = _clusterDao.findById(clusterId);
               if (destinationCluster == null) {
                   throw new InvalidParameterValueException("Unable to find the 
cluster to deploy the VM, cluster id=" + clusterId);
               }
           }
           return destinationCluster;
       }
   
       private Host getDestinationHost(Long hostId, boolean isRootAdmin, 
boolean isExplicitHost) {
           Host destinationHost = null;
           if (hostId != null) {
               if (isExplicitHost && !isRootAdmin) {
                   throw new PermissionDeniedException(
                           "Parameter " + ApiConstants.HOST_ID + " can only be 
specified by a Root Admin, permission denied");
               }
               destinationHost = _hostDao.findById(hostId);
               if (destinationHost == null) {
                   throw new InvalidParameterValueException("Unable to find the 
host to deploy the VM, host id=" + hostId);
               } else if (destinationHost.getResourceState() != 
ResourceState.Enabled || destinationHost.getStatus() != Status.Up ) {
                   throw new InvalidParameterValueException("Unable to deploy 
the VM as the host: " + destinationHost.getName() + " is not in the right 
state");
               }
           }
           return destinationHost;
       }
   ```
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to