You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ra...@apache.org on 2015/01/20 04:54:32 UTC
git commit: updated refs/heads/volume-upload to 15ae33a
Repository: cloudstack
Updated Branches:
refs/heads/volume-upload f0b60c742 -> 15ae33a5b
volume upload: refactored post upload command and used it during template registration
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/15ae33a5
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/15ae33a5
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/15ae33a5
Branch: refs/heads/volume-upload
Commit: 15ae33a5b6a1838ab346754545d2ebb28b5345b5
Parents: f0b60c7
Author: Rajani Karuturi <ra...@gmail.com>
Authored: Tue Jan 20 09:23:20 2015 +0530
Committer: Rajani Karuturi <ra...@gmail.com>
Committed: Tue Jan 20 09:24:14 2015 +0530
----------------------------------------------------------------------
.../TemplateOrVolumePostUploadCommand.java | 108 ++++++-------------
...ateOrVolumePostUploadCommandTypeAdapter.java | 52 ---------
.../com/cloud/storage/VolumeApiServiceImpl.java | 7 +-
.../template/HypervisorTemplateAdapter.java | 6 +-
.../com/cloud/template/TemplateManagerImpl.java | 7 +-
.../resource/NfsSecondaryStorageResource.java | 2 -
6 files changed, 43 insertions(+), 139 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/15ae33a5/core/src/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommand.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommand.java b/core/src/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommand.java
index 78cfccb..8872798 100644
--- a/core/src/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommand.java
+++ b/core/src/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommand.java
@@ -19,42 +19,56 @@
package org.apache.cloudstack.storage.command;
-import org.apache.cloudstack.engine.subsystem.api.storage.DataObject;
-import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
-
public class TemplateOrVolumePostUploadCommand {
- DataObject dataObject;
- EndPoint endPoint;
long entityId;
+
String entityUUID;
+
String absolutePath;
+
String checksum;
+
String type;
+
String name;
-// String installPathPrefix;
+
String localPath;
-// String isHvm;
+
+ boolean requiresHvm;
+
String imageFormat;
+
String dataTo;
+
String dataToRole;
- public TemplateOrVolumePostUploadCommand(long entityId, String entityUUID, String absolutePath, String checksum, String type, String name,
- String localPath, String imageFormat, String dataTo, String dataToRole) {
+ String remoteEndPoint;
+
+ public TemplateOrVolumePostUploadCommand(long entityId, String entityUUID, String absolutePath, String checksum, String type, String name, String imageFormat, String dataTo,
+ String dataToRole) {
this.entityId = entityId;
this.entityUUID = entityUUID;
this.absolutePath = absolutePath;
this.checksum = checksum;
this.type = type;
this.name = name;
-// this.installPathPrefix = installPathPrefix;
- this.localPath = localPath;
-// this.isHvm = isHvm;
this.imageFormat = imageFormat;
this.dataTo = dataTo;
this.dataToRole = dataToRole;
}
+ public TemplateOrVolumePostUploadCommand() {
+ }
+
+ public String getRemoteEndPoint() {
+ return remoteEndPoint;
+ }
+
+ public void setRemoteEndPoint(String remoteEndPoint) {
+ this.remoteEndPoint = remoteEndPoint;
+ }
+
public String getDataTo() {
return dataTo;
}
@@ -70,13 +84,6 @@ public class TemplateOrVolumePostUploadCommand {
public void setDataToRole(String dataToRole) {
this.dataToRole = dataToRole;
}
- // public String getInstallPathPrefix() {
-// return installPathPrefix;
-// }
-//
-// public void setInstallPathPrefix(String installPathPrefix) {
-// this.installPathPrefix = installPathPrefix;
-// }
public String getLocalPath() {
return localPath;
@@ -86,13 +93,13 @@ public class TemplateOrVolumePostUploadCommand {
this.localPath = localPath;
}
-// public String getIsHvm() {
-// return isHvm;
-// }
+ public boolean getRequiresHvm() {
+ return requiresHvm;
+ }
-// public void setIsHvm(String isHvm) {
-// this.isHvm = isHvm;
-// }
+ public void setRequiresHvm(boolean requiresHvm) {
+ this.requiresHvm = requiresHvm;
+ }
public String getImageFormat() {
return imageFormat;
@@ -149,55 +156,4 @@ public class TemplateOrVolumePostUploadCommand {
public void setName(String name) {
this.name = name;
}
-
- public TemplateOrVolumePostUploadCommand(DataObject dataObject, EndPoint endPoint) {
- this.dataObject = dataObject;
- this.endPoint = endPoint;
- }
-
- public TemplateOrVolumePostUploadCommand() {
- }
-
- public DataObject getDataObject() {
- return dataObject;
- }
-
- public void setDataObject(DataObject dataObject) {
- this.dataObject = dataObject;
- }
-
- public EndPoint getEndPoint() {
- return endPoint;
- }
-
- public void setEndPoint(EndPoint endPoint) {
- this.endPoint = endPoint;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
-
- TemplateOrVolumePostUploadCommand that = (TemplateOrVolumePostUploadCommand)o;
-
- return dataObject.equals(that.dataObject) && endPoint.equals(that.endPoint);
-
- }
-
- @Override
- public int hashCode() {
- int result = dataObject.hashCode();
- result = 31 * result + endPoint.hashCode();
- return result;
- }
-
- @Override
- public String toString() {
- return "TemplateOrVolumePostUploadCommand{" + "dataObject=" + dataObject + ", endPoint=" + endPoint + '}';
- }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/15ae33a5/core/src/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommandTypeAdapter.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommandTypeAdapter.java b/core/src/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommandTypeAdapter.java
deleted file mode 100644
index 1739917..0000000
--- a/core/src/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommandTypeAdapter.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cloudstack.storage.command;
-
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-import org.apache.cloudstack.engine.subsystem.api.storage.DataObject;
-import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
-
-import java.lang.reflect.Type;
-
-public class TemplateOrVolumePostUploadCommandTypeAdapter implements JsonSerializer<TemplateOrVolumePostUploadCommand> {
-
- @Override public JsonElement serialize(TemplateOrVolumePostUploadCommand src, Type typeOfSrc, JsonSerializationContext context) {
- JsonObject obj = new JsonObject();
-
- EndPoint endPoint = src.getEndPoint();
- JsonObject endpointJSON = new JsonObject();
- endpointJSON.addProperty("id", endPoint.getId());
- endpointJSON.addProperty("hostAddress", endPoint.getHostAddr());
- endpointJSON.addProperty("publicAddr", endPoint.getPublicAddr());
- obj.add(endPoint.getClass().getName(), endpointJSON);
-
- DataObject dataObject = src.getDataObject();
- JsonObject dataobjectJSON = new JsonObject();
- dataobjectJSON.addProperty("id", dataObject.getId());
- dataobjectJSON.addProperty("size", dataObject.getSize());
- dataobjectJSON.addProperty("uuid", dataObject.getUuid());
- dataobjectJSON.addProperty("type", String.valueOf(dataObject.getType()));
- obj.add(dataObject.getClass().getName(), dataobjectJSON);
-
- return obj;
- }
-}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/15ae33a5/server/src/com/cloud/storage/VolumeApiServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
index 0512d4f..39ecf31 100644
--- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java
+++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
@@ -329,10 +329,9 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
*/
- TemplateOrVolumePostUploadCommand command =
- new TemplateOrVolumePostUploadCommand(vol.getId(), vol.getUuid(), volumeStore.getInstallPath(), volumeStore.getChecksum(), vol.getType().toString(), vol.getName(),
- volumeStore.getLocalDownloadPath(), vol.getFormat().toString(), dataObject.getDataStore().getUri(),
- dataObject.getDataStore().getRole().toString());
+ TemplateOrVolumePostUploadCommand command = new TemplateOrVolumePostUploadCommand(vol.getId(), vol.getUuid(), volumeStore.getInstallPath(), volumeStore.getChecksum(), vol
+ .getType().toString(), vol.getName(), vol.getFormat().toString(), dataObject.getDataStore().getUri(), dataObject.getDataStore().getRole().toString());
+ command.setLocalPath(volumeStore.getLocalDownloadPath());
Gson gson = new GsonBuilder().create();
String jsonPayload = gson.toJson(command);
response.setMetadata(EncryptionUtil.encodeData(jsonPayload, key));
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/15ae33a5/server/src/com/cloud/template/HypervisorTemplateAdapter.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/HypervisorTemplateAdapter.java b/server/src/com/cloud/template/HypervisorTemplateAdapter.java
index eecd84b..2f8a31d 100755
--- a/server/src/com/cloud/template/HypervisorTemplateAdapter.java
+++ b/server/src/com/cloud/template/HypervisorTemplateAdapter.java
@@ -256,7 +256,11 @@ public class HypervisorTemplateAdapter extends TemplateAdapterBase {
throw new CloudRuntimeException(errMsg);
}
- TemplateOrVolumePostUploadCommand payload = new TemplateOrVolumePostUploadCommand(templateOnStore, ep);
+ TemplateOrVolumePostUploadCommand payload = new TemplateOrVolumePostUploadCommand(template.getId(), template.getUuid(), tmpl.getInstallPath(), tmpl.getChecksum(), tmpl
+ .getType().toString(), template.getName(), template.getFormat().toString(), templateOnStore.getDataStore().getUri(), templateOnStore.getDataStore().getRole()
+ .toString());
+ payload.setRemoteEndPoint(ep.getPublicAddr());
+ payload.setRequiresHvm(template.requiresHvm());
payloads.add(payload);
}
_resourceLimitMgr.incrementResourceCount(profile.getAccountId(), ResourceType.template);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/15ae33a5/server/src/com/cloud/template/TemplateManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java
index aeb4b02..bf7ba11 100755
--- a/server/src/com/cloud/template/TemplateManagerImpl.java
+++ b/server/src/com/cloud/template/TemplateManagerImpl.java
@@ -39,7 +39,6 @@ import com.google.gson.GsonBuilder;
import org.apache.cloudstack.api.command.user.template.GetUploadParamsForTemplateCmd;
import org.apache.cloudstack.api.response.GetUploadParamsResponse;
import org.apache.cloudstack.storage.command.TemplateOrVolumePostUploadCommand;
-import org.apache.cloudstack.storage.command.TemplateOrVolumePostUploadCommandTypeAdapter;
import org.apache.commons.collections.CollectionUtils;
import org.apache.log4j.Logger;
@@ -348,10 +347,10 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager,
*/
TemplateOrVolumePostUploadCommand firstCommand = payload.get(0);
- String url = "https://" + firstCommand.getEndPoint().getPublicAddr() + "/upload/" + firstCommand.getDataObject().getUuid();
+ String url = "https://" + firstCommand.getRemoteEndPoint() + "/upload/" + firstCommand.getEntityUUID();
response.setPostURL(new URL(url));
- response.setId(UUID.fromString(firstCommand.getDataObject().getUuid()));
+ response.setId(UUID.fromString(firstCommand.getEntityUUID()));
/*
* TODO: hardcoding the timeout to current + 60 min for now. This needs to goto the database
@@ -365,7 +364,7 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager,
/*
* encoded metadata using the post upload config ssh key
*/
- Gson gson = new GsonBuilder().registerTypeAdapter(TemplateOrVolumePostUploadCommand.class, new TemplateOrVolumePostUploadCommandTypeAdapter()).create();
+ Gson gson = new GsonBuilder().create();
String jsonPayload = gson.toJson(payload);
response.setMetadata(EncryptionUtil.encodeData(jsonPayload, key));
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/15ae33a5/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
----------------------------------------------------------------------
diff --git a/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java b/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
index 348dac7..cb12dc5 100755
--- a/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
+++ b/services/secondary-storage/server/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java
@@ -2717,8 +2717,6 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
if (httpRequest instanceof HttpEntityEnclosingRequest) {
entity = ((HttpEntityEnclosingRequest) httpRequest).getEntity();
}
- // For some reason, just putting the incoming entity into
- // the response will not work. We have to buffer the message.
byte[] data;
if (entity == null) {
httpResponse.setEntity(new StringEntity("upload failed"));