You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2012/07/24 01:37:40 UTC
[6/14] git commit: Adding tags support to the 4 EC2 Describe* API's
(DescribeImages, DescribeInstances, DescribeVolumes,
DescribeSnapshots) in AWSAPI
Adding tags support to the 4 EC2 Describe* API's (DescribeImages, DescribeInstances, DescribeVolumes, DescribeSnapshots) in AWSAPI
- List* APIs in CloudStack have tags support. Adding the corresponding support to EC2Decsribe* APIs in the AWSAPI component.
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/aef09e1b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/aef09e1b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/aef09e1b
Branch: refs/heads/vpc
Commit: aef09e1b20b1675b5ae85483de3df39b339d1cc3
Parents: 88f7872
Author: Likitha Shetty <li...@citrix.com>
Authored: Mon Jul 23 15:11:09 2012 -0700
Committer: prachi <pr...@cloud.com>
Committed: Mon Jul 23 15:22:38 2012 -0700
----------------------------------------------------------------------
.../cloud/bridge/service/EC2SoapServiceImpl.java | 53 ++++++++++-----
.../cloud/bridge/service/core/ec2/EC2Engine.java | 37 ++++++++++-
.../cloud/bridge/service/core/ec2/EC2Image.java | 15 ++++-
.../cloud/bridge/service/core/ec2/EC2Instance.java | 12 +++-
.../cloud/bridge/service/core/ec2/EC2Snapshot.java | 12 +++
.../cloud/bridge/service/core/ec2/EC2Volume.java | 15 ++++-
.../com/cloud/stack/models/CloudStackSnapshot.java | 9 +++
.../com/cloud/stack/models/CloudStackTemplate.java | 10 +++
.../com/cloud/stack/models/CloudStackUserVm.java | 9 +++
.../com/cloud/stack/models/CloudStackVolume.java | 10 +++
10 files changed, 162 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aef09e1b/awsapi/src/com/cloud/bridge/service/EC2SoapServiceImpl.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/service/EC2SoapServiceImpl.java b/awsapi/src/com/cloud/bridge/service/EC2SoapServiceImpl.java
index 9a8e777..aa048b2 100644
--- a/awsapi/src/com/cloud/bridge/service/EC2SoapServiceImpl.java
+++ b/awsapi/src/com/cloud/bridge/service/EC2SoapServiceImpl.java
@@ -956,7 +956,11 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface {
param7.addItem( param8 );
param3.setBlockDeviceMapping( param7 );
- param2.addItem( param3 );
+
+ EC2TagKeyValue[] tags = images[i].getResourceTags();
+ param3.setTagSet(setResourceTags(tags));
+
+ param2.addItem( param3 );
}
param1.setImagesSet( param2 );
@@ -1263,14 +1267,9 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface {
}
param3.setAttachmentSet( param4 );
-
- // -> try to generate an empty tag does not seem to work
- ResourceTagSetType param6 = new ResourceTagSetType();
- ResourceTagSetItemType param7 = new ResourceTagSetItemType();
- param7.setKey("");
- param7.setValue("");
- param6.addItem( param7 );
- param3.setTagSet( param6 );
+
+ EC2TagKeyValue[] tags = vol.getResourceTags();
+ param3.setTagSet( setResourceTags(tags) );
param2.addItem( param3 );
}
param1.setVolumeSet( param2 );
@@ -1398,6 +1397,9 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface {
param7.setSpotInstanceRequestId( "" );
param7.setHypervisor(inst.getHypervisor());
+ EC2TagKeyValue[] tags = inst.getResourceTags();
+ param7.setTagSet(setResourceTags(tags));
+
param6.addItem( param7 );
param3.setInstancesSet( param6 );
param2.addItem( param3 );
@@ -1880,12 +1882,9 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface {
param3.setDescription( snap.getName());
param3.setOwnerAlias( snap.getAccountName() );
- ResourceTagSetType param18 = new ResourceTagSetType();
- ResourceTagSetItemType param19 = new ResourceTagSetItemType();
- param19.setKey("");
- param19.setValue("");
- param18.addItem( param19 );
- param3.setTagSet( param18 );
+
+ EC2TagKeyValue[] tags = snap.getResourceTags();
+ param3.setTagSet(setResourceTags(tags));
param2.addItem( param3 );
}
@@ -2209,7 +2208,29 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface {
public GetPasswordDataResponse getPasswordData(GetPasswordData getPasswordData) {
return toGetPasswordData(engine.getPasswordData(getPasswordData.getGetPasswordData().getInstanceId()));
}
-
+
+ public static ResourceTagSetType setResourceTags(EC2TagKeyValue[] tags){
+ ResourceTagSetType param1 = new ResourceTagSetType();
+ if (null == tags || 0 == tags.length) {
+ ResourceTagSetItemType param2 = new ResourceTagSetItemType();
+ param2.setKey("");
+ param2.setValue("");
+ param1.addItem( param2 );
+ }
+ else {
+ for(EC2TagKeyValue tag : tags) {
+ ResourceTagSetItemType param2 = new ResourceTagSetItemType();
+ param2.setKey(tag.getKey());
+ if (tag.getValue() != null)
+ param2.setValue(tag.getValue());
+ else
+ param2.setValue("");
+ param1.addItem(param2);
+ }
+ }
+ return param1;
+ }
+
@SuppressWarnings("serial")
public static GetPasswordDataResponse toGetPasswordData(final EC2PasswordData passwdData) {
return new GetPasswordDataResponse() {{
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aef09e1b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
index 36d2b68..2906093 100644
--- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
+++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
@@ -660,6 +660,15 @@ public class EC2Engine {
shot.setAccountName(cloudSnapshot.getAccountName());
shot.setDomainId(cloudSnapshot.getDomainId());
+ List<CloudStackKeyValue> resourceTags = cloudSnapshot.getTags();
+ for(CloudStackKeyValue resourceTag : resourceTags) {
+ EC2TagKeyValue param = new EC2TagKeyValue();
+ param.setKey(resourceTag.getKey());
+ if (resourceTag.getValue() != null)
+ param.setValue(resourceTag.getValue());
+ shot.addResourceTag(param);
+ }
+
snapshots.addSnapshot(shot);
}
return snapshots;
@@ -1710,6 +1719,15 @@ public class EC2Engine {
ec2Vol.setVMState(vol.getVirtualMachineState());
ec2Vol.setZoneName(vol.getZoneName());
+ List<CloudStackKeyValue> resourceTags = vol.getTags();
+ for(CloudStackKeyValue resourceTag : resourceTags) {
+ EC2TagKeyValue param = new EC2TagKeyValue();
+ param.setKey(resourceTag.getKey());
+ if (resourceTag.getValue() != null)
+ param.setValue(resourceTag.getValue());
+ ec2Vol.addResourceTag(param);
+ }
+
volumes.addVolume(ec2Vol);
}
}
@@ -1887,7 +1905,16 @@ public class EC2Engine {
break;
}
}
-
+
+ List<CloudStackKeyValue> resourceTags = cloudVm.getTags();
+ for(CloudStackKeyValue resourceTag : resourceTags) {
+ EC2TagKeyValue param = new EC2TagKeyValue();
+ param.setKey(resourceTag.getKey());
+ if (resourceTag.getValue() != null)
+ param.setValue(resourceTag.getValue());
+ ec2Vm.addResourceTag(param);
+ }
+
if (cloudVm.getSecurityGroupList() != null && cloudVm.getSecurityGroupList().size() > 0) {
// TODO, we have a list of security groups, just return the first one?
List<CloudStackSecurityGroup> securityGroupList = cloudVm.getSecurityGroupList();
@@ -1960,6 +1987,14 @@ public class EC2Engine {
ec2Image.setIsPublic(temp.getIsPublic());
ec2Image.setIsReady(temp.getIsReady());
ec2Image.setDomainId(temp.getDomainId());
+ List<CloudStackKeyValue> resourceTags = temp.getTags();
+ for(CloudStackKeyValue resourceTag : resourceTags) {
+ EC2TagKeyValue param = new EC2TagKeyValue();
+ param.setKey(resourceTag.getKey());
+ if (resourceTag.getValue() != null)
+ param.setValue(resourceTag.getValue());
+ ec2Image.addResourceTag(param);
+ }
images.addImage(ec2Image);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aef09e1b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Image.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Image.java b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Image.java
index 75e792b..1c30b67 100644
--- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Image.java
+++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Image.java
@@ -16,6 +16,9 @@
// under the License.
package com.cloud.bridge.service.core.ec2;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* An EC2 Image is a Cloud template.
*/
@@ -29,6 +32,7 @@ public class EC2Image {
private boolean isReady;
private String accountName;
private String domainId;
+ private List<EC2TagKeyValue> tagsSet;
public EC2Image() {
id = null;
@@ -39,6 +43,7 @@ public class EC2Image {
isReady = false;
accountName = null;
domainId = null;
+ tagsSet = new ArrayList<EC2TagKeyValue>();
}
public void setId( String id ) {
@@ -104,5 +109,13 @@ public class EC2Image {
public void setDomainId(String domainId) {
this.domainId = domainId;
}
-
+
+
+ public void addResourceTag( EC2TagKeyValue param ) {
+ tagsSet.add( param );
+ }
+
+ public EC2TagKeyValue[] getResourceTags() {
+ return tagsSet.toArray(new EC2TagKeyValue[0]);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aef09e1b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Instance.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Instance.java b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Instance.java
index 064d7e0..6e2d696 100644
--- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Instance.java
+++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Instance.java
@@ -41,6 +41,7 @@ public class EC2Instance {
private String rootDeviceType;
private String rootDeviceId;
private List<String> groupSet;
+ private List<EC2TagKeyValue> tagsSet;
public EC2Instance() {
id = null;
@@ -60,6 +61,7 @@ public class EC2Instance {
rootDeviceType = null;
rootDeviceId = null;
groupSet = new ArrayList<String>();
+ tagsSet = new ArrayList<EC2TagKeyValue>();
}
public void setId( String id ) {
@@ -197,5 +199,13 @@ public class EC2Instance {
public String[] getGroupSet() {
return groupSet.toArray(new String[0]);
}
-
+
+ public void addResourceTag( EC2TagKeyValue param ) {
+ tagsSet.add( param );
+ }
+
+ public EC2TagKeyValue[] getResourceTags() {
+ return tagsSet.toArray(new EC2TagKeyValue[0]);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aef09e1b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Snapshot.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Snapshot.java b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Snapshot.java
index 339506d..9e09b71 100644
--- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Snapshot.java
+++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Snapshot.java
@@ -16,7 +16,9 @@
// under the License.
package com.cloud.bridge.service.core.ec2;
+import java.util.ArrayList;
import java.util.Calendar;
+import java.util.List;
import com.cloud.bridge.util.EC2RestAuth;
@@ -31,6 +33,7 @@ public class EC2Snapshot {
private Calendar created;
private String accountName;
private String domainId;
+ private List<EC2TagKeyValue> tagsSet;
public EC2Snapshot() {
id = null;
@@ -42,6 +45,7 @@ public class EC2Snapshot {
created = null;
accountName = null;
domainId = null;
+ tagsSet = new ArrayList<EC2TagKeyValue>();
}
public void setId(String id ) {
@@ -116,4 +120,12 @@ public class EC2Snapshot {
public void setState(String state) {
this.state = state;
}
+
+ public void addResourceTag( EC2TagKeyValue param ) {
+ tagsSet.add( param );
+ }
+
+ public EC2TagKeyValue[] getResourceTags() {
+ return tagsSet.toArray(new EC2TagKeyValue[0]);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aef09e1b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Volume.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Volume.java b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Volume.java
index 009c17a..23d6d70 100644
--- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Volume.java
+++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Volume.java
@@ -16,6 +16,9 @@
// under the License.
package com.cloud.bridge.service.core.ec2;
+import java.util.ArrayList;
+import java.util.List;
+
public class EC2Volume {
@@ -32,6 +35,7 @@ public class EC2Volume {
private String hypervisor;
private String created;
private String attached;
+ private List<EC2TagKeyValue> tagsSet;
public EC2Volume() {
id = null;
@@ -46,6 +50,7 @@ public class EC2Volume {
hypervisor = null;
created = null;
attached = null;
+ tagsSet = new ArrayList<EC2TagKeyValue>();
}
public void setSize(Long size) {
@@ -230,5 +235,13 @@ public class EC2Volume {
public void setAttached(String attached) {
this.attached = attached;
}
-
+
+ public void addResourceTag( EC2TagKeyValue param ) {
+ tagsSet.add( param );
+ }
+
+ public EC2TagKeyValue[] getResourceTags() {
+ return tagsSet.toArray(new EC2TagKeyValue[0]);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aef09e1b/awsapi/src/com/cloud/stack/models/CloudStackSnapshot.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/stack/models/CloudStackSnapshot.java b/awsapi/src/com/cloud/stack/models/CloudStackSnapshot.java
index 73dc4cd..1273cc1 100644
--- a/awsapi/src/com/cloud/stack/models/CloudStackSnapshot.java
+++ b/awsapi/src/com/cloud/stack/models/CloudStackSnapshot.java
@@ -16,6 +16,8 @@
// under the License.
package com.cloud.stack.models;
+import java.util.List;
+
import com.google.gson.annotations.SerializedName;
public class CloudStackSnapshot {
@@ -47,6 +49,8 @@ public class CloudStackSnapshot {
private String volumeName;
@SerializedName(ApiConstants.VOLUME_TYPE)
private String volumeType;
+ @SerializedName(ApiConstants.TAGS)
+ private List<CloudStackKeyValue> tags;
public CloudStackSnapshot() {
}
@@ -106,4 +110,9 @@ public class CloudStackSnapshot {
public String getState() {
return state;
}
+
+ public List<CloudStackKeyValue> getTags() {
+ return tags;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aef09e1b/awsapi/src/com/cloud/stack/models/CloudStackTemplate.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/stack/models/CloudStackTemplate.java b/awsapi/src/com/cloud/stack/models/CloudStackTemplate.java
index 14d6e82..f0390ac 100644
--- a/awsapi/src/com/cloud/stack/models/CloudStackTemplate.java
+++ b/awsapi/src/com/cloud/stack/models/CloudStackTemplate.java
@@ -17,6 +17,8 @@
package com.cloud.stack.models;
+import java.util.List;
+
import com.google.gson.annotations.SerializedName;
public class CloudStackTemplate {
@@ -82,6 +84,8 @@ public class CloudStackTemplate {
private String zoneId;
@SerializedName(ApiConstants.ZONE_NAME)
private String zoneName;
+ @SerializedName(ApiConstants.TAGS)
+ private List<CloudStackKeyValue> tags;
/**
*
@@ -306,4 +310,10 @@ public class CloudStackTemplate {
return zoneName;
}
+ /**
+ * @return all tags
+ */
+ public List<CloudStackKeyValue> getTags() {
+ return tags;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aef09e1b/awsapi/src/com/cloud/stack/models/CloudStackUserVm.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/stack/models/CloudStackUserVm.java b/awsapi/src/com/cloud/stack/models/CloudStackUserVm.java
index f72e1b6..e1db2d9 100644
--- a/awsapi/src/com/cloud/stack/models/CloudStackUserVm.java
+++ b/awsapi/src/com/cloud/stack/models/CloudStackUserVm.java
@@ -103,6 +103,8 @@ public class CloudStackUserVm {
private List<CloudStackNic> nics;
@SerializedName(ApiConstants.SECURITY_GROUP)
private List<CloudStackSecurityGroup> securityGroupList;
+ @SerializedName(ApiConstants.TAGS)
+ private List<CloudStackKeyValue> tags;
public CloudStackUserVm() {
}
@@ -394,5 +396,12 @@ public class CloudStackUserVm {
return securityGroupList;
}
+ /**
+ * @return all tags
+ */
+ public List<CloudStackKeyValue> getTags() {
+ return tags;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aef09e1b/awsapi/src/com/cloud/stack/models/CloudStackVolume.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/stack/models/CloudStackVolume.java b/awsapi/src/com/cloud/stack/models/CloudStackVolume.java
index 13d87f4..ff0b717 100644
--- a/awsapi/src/com/cloud/stack/models/CloudStackVolume.java
+++ b/awsapi/src/com/cloud/stack/models/CloudStackVolume.java
@@ -16,6 +16,8 @@
// under the License.
package com.cloud.stack.models;
+import java.util.List;
+
import com.google.gson.annotations.SerializedName;
public class CloudStackVolume {
@@ -81,6 +83,8 @@ public class CloudStackVolume {
private String zoneId;
@SerializedName(ApiConstants.ZONE_NAME)
private String zoneName;
+ @SerializedName(ApiConstants.TAGS)
+ private List<CloudStackKeyValue> tags;
public CloudStackVolume() {
@@ -334,4 +338,10 @@ public class CloudStackVolume {
return zoneName;
}
+ /**
+ * @return all tags
+ */
+ public List<CloudStackKeyValue> getTags() {
+ return tags;
+ }
}