Skip to content

Commit 3dad7f3

Browse files
Merge pull request #3537 from shapeblue/upload-iso-template-fix
Revert #3152
2 parents a9569d5 + 263b404 commit 3dad7f3

116 files changed

Lines changed: 1600 additions & 688 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

api/src/main/java/com/cloud/template/VirtualMachineTemplate.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import com.cloud.hypervisor.Hypervisor.HypervisorType;
2727
import com.cloud.storage.Storage.ImageFormat;
2828
import com.cloud.storage.Storage.TemplateType;
29+
import com.cloud.storage.Volume.Event;
30+
import com.cloud.storage.Volume.State;
2931
import com.cloud.utils.fsm.StateMachine2;
3032
import com.cloud.utils.fsm.StateObject;
3133

api/src/main/java/org/apache/cloudstack/api/BaseListTaggedResourcesCmd.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,34 @@
1616
// under the License.
1717
package org.apache.cloudstack.api;
1818

19+
import java.util.Collection;
20+
import java.util.HashMap;
21+
import java.util.Iterator;
1922
import java.util.Map;
2023

24+
import com.cloud.exception.InvalidParameterValueException;
25+
2126
public abstract class BaseListTaggedResourcesCmd extends BaseListProjectAndAccountResourcesCmd implements IBaseListTaggedResourcesCmd {
2227
@Parameter(name = ApiConstants.TAGS, type = CommandType.MAP, description = "List resources by tags (key/value pairs)")
2328
private Map tags;
2429

2530
@Override
2631
public Map<String, String> getTags() {
27-
return TaggedResources.parseKeyValueMap(tags, false);
32+
Map<String, String> tagsMap = null;
33+
if (tags != null && !tags.isEmpty()) {
34+
tagsMap = new HashMap<String, String>();
35+
Collection<?> servicesCollection = tags.values();
36+
Iterator<?> iter = servicesCollection.iterator();
37+
while (iter.hasNext()) {
38+
HashMap<String, String> services = (HashMap<String, String>)iter.next();
39+
String key = services.get("key");
40+
String value = services.get("value");
41+
if (value == null) {
42+
throw new InvalidParameterValueException("No value is passed in for key " + key);
43+
}
44+
tagsMap.put(key, value);
45+
}
46+
}
47+
return tagsMap;
2848
}
2949
}

api/src/main/java/org/apache/cloudstack/api/BaseListTemplateOrIsoPermissionsCmd.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@
2121
import org.apache.log4j.Logger;
2222

2323
import org.apache.cloudstack.api.ResponseObject.ResponseView;
24-
import org.apache.cloudstack.api.command.ResponseViewProvider;
2524
import org.apache.cloudstack.api.response.TemplatePermissionsResponse;
2625

2726
import com.cloud.template.VirtualMachineTemplate;
2827
import com.cloud.user.Account;
2928

30-
public abstract class BaseListTemplateOrIsoPermissionsCmd extends BaseCmd implements ResponseViewProvider {
29+
public abstract class BaseListTemplateOrIsoPermissionsCmd extends BaseCmd {
3130
public Logger logger = getLogger();
3231
protected static final String s_name = "listtemplatepermissionsresponse";
3332

33+
3434
/////////////////////////////////////////////////////
3535
//////////////// API parameters /////////////////////
3636
/////////////////////////////////////////////////////
@@ -76,10 +76,6 @@ public String getMediaType() {
7676
return "templateOrIso";
7777
}
7878

79-
@Override
80-
public void execute() {
81-
executeWithView(getResponseView());
82-
}
8379

8480
protected void executeWithView(ResponseView view) {
8581
List<String> accountNames = _templateService.listTemplatePermissions(this);

api/src/main/java/org/apache/cloudstack/api/TaggedResources.java

Lines changed: 0 additions & 72 deletions
This file was deleted.

api/src/main/java/org/apache/cloudstack/api/command/ResponseViewProvider.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

api/src/main/java/org/apache/cloudstack/api/command/admin/AdminCmd.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

api/src/main/java/org/apache/cloudstack/api/command/admin/address/AssociateIPAddrCmdByAdmin.java

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,48 @@
1919
import org.apache.log4j.Logger;
2020

2121
import org.apache.cloudstack.api.APICommand;
22+
import org.apache.cloudstack.api.ApiErrorCode;
2223
import org.apache.cloudstack.api.ResponseObject.ResponseView;
23-
import org.apache.cloudstack.api.command.admin.AdminCmd;
24+
import org.apache.cloudstack.api.ServerApiException;
2425
import org.apache.cloudstack.api.command.user.address.AssociateIPAddrCmd;
2526
import org.apache.cloudstack.api.response.IPAddressResponse;
27+
import org.apache.cloudstack.context.CallContext;
28+
29+
import com.cloud.exception.ConcurrentOperationException;
30+
import com.cloud.exception.InsufficientCapacityException;
31+
import com.cloud.exception.ResourceAllocationException;
32+
import com.cloud.exception.ResourceUnavailableException;
33+
import com.cloud.network.IpAddress;
2634

2735
@APICommand(name = "associateIpAddress", description = "Acquires and associates a public IP to an account.", responseObject = IPAddressResponse.class, responseView = ResponseView.Full,
2836
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
29-
public class AssociateIPAddrCmdByAdmin extends AssociateIPAddrCmd implements AdminCmd {
37+
public class AssociateIPAddrCmdByAdmin extends AssociateIPAddrCmd {
3038
public static final Logger s_logger = Logger.getLogger(AssociateIPAddrCmdByAdmin.class.getName());
39+
40+
41+
@Override
42+
public void execute() throws ResourceUnavailableException, ResourceAllocationException,
43+
ConcurrentOperationException, InsufficientCapacityException {
44+
CallContext.current().setEventDetails("Ip Id: " + getEntityId());
45+
46+
IpAddress result = null;
47+
48+
if (getVpcId() != null) {
49+
result = _vpcService.associateIPToVpc(getEntityId(), getVpcId());
50+
} else if (getNetworkId() != null) {
51+
result = _networkService.associateIPToNetwork(getEntityId(), getNetworkId());
52+
}
53+
54+
if (result != null) {
55+
IPAddressResponse ipResponse = _responseGenerator.createIPAddressResponse(ResponseView.Full, result);
56+
ipResponse.setResponseName(getCommandName());
57+
setResponseObject(ipResponse);
58+
} else {
59+
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to assign ip address");
60+
}
61+
}
62+
63+
64+
65+
3166
}

api/src/main/java/org/apache/cloudstack/api/command/admin/address/ListPublicIpAddressesCmdByAdmin.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,39 @@
1616
// under the License.
1717
package org.apache.cloudstack.api.command.admin.address;
1818

19+
import java.util.ArrayList;
20+
import java.util.List;
21+
22+
import org.apache.log4j.Logger;
23+
1924
import org.apache.cloudstack.api.APICommand;
2025
import org.apache.cloudstack.api.ResponseObject.ResponseView;
21-
import org.apache.cloudstack.api.command.admin.AdminCmd;
2226
import org.apache.cloudstack.api.command.user.address.ListPublicIpAddressesCmd;
2327
import org.apache.cloudstack.api.response.IPAddressResponse;
28+
import org.apache.cloudstack.api.response.ListResponse;
2429

2530
import com.cloud.network.IpAddress;
31+
import com.cloud.utils.Pair;
2632

2733
@APICommand(name = "listPublicIpAddresses", description = "Lists all public ip addresses", responseObject = IPAddressResponse.class, responseView = ResponseView.Full,
2834
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, entityType = {IpAddress.class})
29-
public class ListPublicIpAddressesCmdByAdmin extends ListPublicIpAddressesCmd implements AdminCmd {}
35+
public class ListPublicIpAddressesCmdByAdmin extends ListPublicIpAddressesCmd {
36+
public static final Logger s_logger = Logger.getLogger(ListPublicIpAddressesCmdByAdmin.class.getName());
37+
38+
@Override
39+
public void execute(){
40+
Pair<List<? extends IpAddress>, Integer> result = _mgr.searchForIPAddresses(this);
41+
ListResponse<IPAddressResponse> response = new ListResponse<IPAddressResponse>();
42+
List<IPAddressResponse> ipAddrResponses = new ArrayList<IPAddressResponse>();
43+
for (IpAddress ipAddress : result.first()) {
44+
IPAddressResponse ipResponse = _responseGenerator.createIPAddressResponse(ResponseView.Full, ipAddress);
45+
ipResponse.setObjectName("publicipaddress");
46+
ipAddrResponses.add(ipResponse);
47+
}
48+
49+
response.setResponses(ipAddrResponses, result.second());
50+
response.setResponseName(getCommandName());
51+
setResponseObject(response);
52+
}
53+
54+
}

api/src/main/java/org/apache/cloudstack/api/command/admin/affinitygroup/UpdateVMAffinityGroupCmdByAdmin.java

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,23 @@
1616
// under the License.
1717
package org.apache.cloudstack.api.command.admin.affinitygroup;
1818

19+
import java.util.ArrayList;
20+
import java.util.EnumSet;
21+
1922
import org.apache.log4j.Logger;
2023

2124
import org.apache.cloudstack.api.APICommand;
25+
import org.apache.cloudstack.api.ApiConstants.VMDetails;
26+
import org.apache.cloudstack.api.ApiErrorCode;
2227
import org.apache.cloudstack.api.ResponseObject.ResponseView;
23-
import org.apache.cloudstack.api.command.admin.AdminCmd;
28+
import org.apache.cloudstack.api.ServerApiException;
2429
import org.apache.cloudstack.api.command.user.affinitygroup.UpdateVMAffinityGroupCmd;
2530
import org.apache.cloudstack.api.response.UserVmResponse;
31+
import org.apache.cloudstack.context.CallContext;
2632

33+
import com.cloud.exception.InsufficientCapacityException;
34+
import com.cloud.exception.ResourceUnavailableException;
35+
import com.cloud.uservm.UserVm;
2736
import com.cloud.vm.VirtualMachine;
2837

2938

@@ -32,6 +41,27 @@
3241
entityType = {VirtualMachine.class},
3342
requestHasSensitiveInfo = false,
3443
responseHasSensitiveInfo = true)
35-
public class UpdateVMAffinityGroupCmdByAdmin extends UpdateVMAffinityGroupCmd implements AdminCmd {
44+
public class UpdateVMAffinityGroupCmdByAdmin extends UpdateVMAffinityGroupCmd {
3645
public static final Logger s_logger = Logger.getLogger(UpdateVMAffinityGroupCmdByAdmin.class.getName());
46+
47+
48+
@Override
49+
public void execute() throws ResourceUnavailableException,
50+
InsufficientCapacityException, ServerApiException {
51+
CallContext.current().setEventDetails("Vm Id: "+getId());
52+
UserVm result = _affinityGroupService.updateVMAffinityGroups(getId(), getAffinityGroupIdList());
53+
ArrayList<VMDetails> dc = new ArrayList<VMDetails>();
54+
dc.add(VMDetails.valueOf("affgrp"));
55+
EnumSet<VMDetails> details = EnumSet.copyOf(dc);
56+
57+
if (result != null){
58+
UserVmResponse response = _responseGenerator.createUserVmResponse(ResponseView.Full, "virtualmachine", details, result).get(0);
59+
response.setResponseName(getCommandName());
60+
setResponseObject(response);
61+
} else {
62+
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update vm's affinity groups");
63+
}
64+
}
65+
66+
3767
}

api/src/main/java/org/apache/cloudstack/api/command/admin/domain/ListDomainsCmd.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.apache.cloudstack.api.BaseListCmd;
2929
import org.apache.cloudstack.api.Parameter;
3030
import org.apache.cloudstack.api.ResponseObject.ResponseView;
31-
import org.apache.cloudstack.api.command.user.UserCmd;
3231
import org.apache.cloudstack.api.response.DomainResponse;
3332
import org.apache.cloudstack.api.response.ListResponse;
3433

@@ -37,7 +36,7 @@
3736

3837
@APICommand(name = "listDomains", description = "Lists domains and provides detailed information for listed domains", responseObject = DomainResponse.class, responseView = ResponseView.Restricted, entityType = {Domain.class},
3938
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
40-
public class ListDomainsCmd extends BaseListCmd implements UserCmd {
39+
public class ListDomainsCmd extends BaseListCmd {
4140
public static final Logger s_logger = Logger.getLogger(ListDomainsCmd.class.getName());
4241

4342
private static final String s_name = "listdomainsresponse";

0 commit comments

Comments
 (0)