Skip to content

Commit 649d9d9

Browse files
committed
CLOUDSTACK-5840:Migration from NFS to S3 should be done in one API
(updateCloudToUseObjectStore) instead of two APIs.
1 parent 858b9b1 commit 649d9d9

11 files changed

Lines changed: 252 additions & 197 deletions

File tree

api/src/com/cloud/storage/StorageService.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
package com.cloud.storage;
1818

1919
import java.net.UnknownHostException;
20+
import java.util.Map;
2021

21-
import org.apache.cloudstack.api.command.admin.storage.AddImageStoreCmd;
2222
import org.apache.cloudstack.api.command.admin.storage.CancelPrimaryStorageMaintenanceCmd;
2323
import org.apache.cloudstack.api.command.admin.storage.CreateSecondaryStagingStoreCmd;
2424
import org.apache.cloudstack.api.command.admin.storage.CreateStoragePoolCmd;
@@ -92,7 +92,8 @@ public interface StorageService {
9292

9393
boolean deleteSecondaryStagingStore(DeleteSecondaryStagingStoreCmd cmd);
9494

95-
ImageStore discoverImageStore(AddImageStoreCmd cmd) throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException;
95+
public ImageStore discoverImageStore(String name, String url, String providerName, Long dcId, Map details) throws IllegalArgumentException, DiscoveryException,
96+
InvalidParameterValueException;
9697

9798
/**
9899
* Prepare NFS secondary storage for object store migration
@@ -105,6 +106,9 @@ public interface StorageService {
105106
* @throws InsufficientCapacityException
106107
* TODO
107108
*/
108-
public ImageStore prepareSecondaryStorageForObjectStoreMigration(Long storeId) throws ResourceUnavailableException, InsufficientCapacityException;
109+
public ImageStore migrateToObjectStore(String name, String url, String providerName, Map details) throws IllegalArgumentException, DiscoveryException,
110+
InvalidParameterValueException;
109111

112+
public ImageStore prepareSecondaryStorageForObjectStoreMigration(Long storeId) throws ResourceUnavailableException,
113+
InsufficientCapacityException;
110114
}

api/src/org/apache/cloudstack/api/command/admin/host/AddSecondaryStorageCmd.java

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.apache.cloudstack.api.BaseCmd;
2525
import org.apache.cloudstack.api.Parameter;
2626
import org.apache.cloudstack.api.ServerApiException;
27-
import org.apache.cloudstack.api.command.admin.storage.AddImageStoreCmd;
2827
import org.apache.cloudstack.api.response.ImageStoreResponse;
2928
import org.apache.cloudstack.api.response.ZoneResponse;
3029

@@ -74,20 +73,15 @@ public long getEntityOwnerId() {
7473
}
7574

7675
@Override
77-
public void execute() {
78-
AddImageStoreCmd cmd = new AddImageStoreCmd();
79-
cmd.setUrl(this.getUrl());
80-
cmd.setZoneId(this.getZoneId());
81-
cmd.setProviderName("NFS");
82-
83-
try {
84-
ImageStore result = _storageService.discoverImageStore(cmd);
76+
public void execute(){
77+
try{
78+
ImageStore result = _storageService.discoverImageStore(null, getUrl(), "NFS", getZoneId(), null);
8579
ImageStoreResponse storeResponse = null;
86-
if (result != null) {
87-
storeResponse = _responseGenerator.createImageStoreResponse(result);
88-
storeResponse.setResponseName(getCommandName());
89-
storeResponse.setObjectName("secondarystorage");
90-
this.setResponseObject(storeResponse);
80+
if (result != null ) {
81+
storeResponse = _responseGenerator.createImageStoreResponse(result);
82+
storeResponse.setResponseName(getCommandName());
83+
storeResponse.setObjectName("secondarystorage");
84+
setResponseObject(storeResponse);
9185
} else {
9286
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add secondary storage");
9387
}

api/src/org/apache/cloudstack/api/command/admin/storage/AddImageStoreCmd.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public Map<String, String> getDetails() {
9595
}
9696

9797
public String getProviderName() {
98-
return this.providerName;
98+
return providerName;
9999
}
100100

101101
public void setUrl(String url) {
@@ -129,15 +129,15 @@ public long getEntityOwnerId() {
129129
}
130130

131131
@Override
132-
public void execute() {
133-
try {
134-
ImageStore result = _storageService.discoverImageStore(this);
132+
public void execute(){
133+
try{
134+
ImageStore result = _storageService.discoverImageStore(getName(), getUrl(), getProviderName(), getZoneId(), getDetails());
135135
ImageStoreResponse storeResponse = null;
136136
if (result != null) {
137137
storeResponse = _responseGenerator.createImageStoreResponse(result);
138138
storeResponse.setResponseName(getCommandName());
139139
storeResponse.setObjectName("imagestore");
140-
this.setResponseObject(storeResponse);
140+
setResponseObject(storeResponse);
141141
} else {
142142
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add secondary storage");
143143
}

api/src/org/apache/cloudstack/api/command/admin/storage/AddS3Cmd.java

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -86,33 +86,27 @@ public final class AddS3Cmd extends BaseCmd {
8686
public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException,
8787
ResourceAllocationException, NetworkRuleConflictException {
8888

89-
AddImageStoreCmd cmd = new AddImageStoreCmd() {
90-
@Override
91-
public Map<String, String> getDetails() {
92-
Map<String, String> dm = new HashMap<String, String>();
93-
dm.put(ApiConstants.S3_ACCESS_KEY, getAccessKey());
94-
dm.put(ApiConstants.S3_SECRET_KEY, getSecretKey());
95-
dm.put(ApiConstants.S3_END_POINT, getEndPoint());
96-
dm.put(ApiConstants.S3_BUCKET_NAME, getBucketName());
97-
if (getHttpsFlag() != null) {
98-
dm.put(ApiConstants.S3_HTTPS_FLAG, getHttpsFlag().toString());
99-
}
100-
if (getConnectionTimeout() != null) {
101-
dm.put(ApiConstants.S3_CONNECTION_TIMEOUT, getConnectionTimeout().toString());
102-
}
103-
if (getMaxErrorRetry() != null) {
104-
dm.put(ApiConstants.S3_MAX_ERROR_RETRY, getMaxErrorRetry().toString());
105-
}
106-
if (getSocketTimeout() != null) {
107-
dm.put(ApiConstants.S3_SOCKET_TIMEOUT, getSocketTimeout().toString());
108-
}
109-
return dm;
110-
}
111-
};
112-
cmd.setProviderName("S3");
89+
Map<String, String> dm = new HashMap<String, String>();
90+
dm.put(ApiConstants.S3_ACCESS_KEY, getAccessKey());
91+
dm.put(ApiConstants.S3_SECRET_KEY, getSecretKey());
92+
dm.put(ApiConstants.S3_END_POINT, getEndPoint());
93+
dm.put(ApiConstants.S3_BUCKET_NAME, getBucketName());
94+
if (getHttpsFlag() != null) {
95+
dm.put(ApiConstants.S3_HTTPS_FLAG, getHttpsFlag().toString());
96+
}
97+
if (getConnectionTimeout() != null) {
98+
dm.put(ApiConstants.S3_CONNECTION_TIMEOUT, getConnectionTimeout().toString());
99+
}
100+
if (getMaxErrorRetry() != null) {
101+
dm.put(ApiConstants.S3_MAX_ERROR_RETRY, getMaxErrorRetry().toString());
102+
}
103+
if (getSocketTimeout() != null) {
104+
dm.put(ApiConstants.S3_SOCKET_TIMEOUT, getSocketTimeout().toString());
105+
}
106+
113107

114-
try {
115-
ImageStore result = _storageService.discoverImageStore(cmd);
108+
try{
109+
ImageStore result = _storageService.discoverImageStore(null, null, "S3", null, dm);
116110
ImageStoreResponse storeResponse = null;
117111
if (result != null) {
118112
storeResponse = _responseGenerator.createImageStoreResponse(result);

api/src/org/apache/cloudstack/api/command/admin/storage/PrepareSecondaryStorageForMigrationCmd.java

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

0 commit comments

Comments
 (0)