mirror of https://github.com/apache/jclouds.git
Issue 112: added getVApp support for terremark
git-svn-id: http://jclouds.googlecode.com/svn/trunk@2257 3d8758e0-26b5-11de-8745-db77d3ebf521
This commit is contained in:
parent
2a914127ec
commit
f8377f3adc
|
@ -46,6 +46,8 @@ import org.jclouds.vcloud.domain.Task;
|
|||
import org.jclouds.vcloud.domain.TasksList;
|
||||
import org.jclouds.vcloud.domain.VDC;
|
||||
import org.jclouds.vcloud.filters.SetVCloudTokenCookie;
|
||||
import org.jclouds.vcloud.terremark.domain.VApp;
|
||||
import org.jclouds.vcloud.terremark.xml.TerremarkVAppHandler;
|
||||
import org.jclouds.vcloud.xml.CatalogHandler;
|
||||
import org.jclouds.vcloud.xml.TaskHandler;
|
||||
import org.jclouds.vcloud.xml.TasksListHandler;
|
||||
|
@ -148,13 +150,7 @@ public interface VCloudClient {
|
|||
|
||||
@GET
|
||||
@Consumes(VAPP_XML)
|
||||
// TODO parse
|
||||
String getVApp(@Endpoint URI vApp);
|
||||
|
||||
//
|
||||
// @GET
|
||||
// @Endpoint(vDC.class)
|
||||
// public Set<String> getvDCs();
|
||||
//
|
||||
@XMLResponseParser(TerremarkVAppHandler.class)
|
||||
Future<? extends VApp> getVApp(@Endpoint URI vApp);
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
package org.jclouds.vcloud.domain;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import org.jclouds.vcloud.VCloudClient;
|
||||
|
||||
/**
|
||||
*
|
||||
* VirtualResource such as disks or CPU
|
||||
*
|
||||
* @author Adrian Cole
|
||||
* @see VCloudClient#getVApp
|
||||
*
|
||||
*
|
||||
*/
|
||||
public enum ResourceType {
|
||||
|
||||
VIRTUAL_CPU,
|
||||
|
||||
MEMORY,
|
||||
|
||||
SCSI_CONTROLLER,
|
||||
|
||||
VIRTUAL_DISK;
|
||||
|
||||
public String value() {
|
||||
switch (this) {
|
||||
case VIRTUAL_CPU:
|
||||
return "3";
|
||||
case MEMORY:
|
||||
return "4";
|
||||
case SCSI_CONTROLLER:
|
||||
return "6";
|
||||
case VIRTUAL_DISK:
|
||||
return "17";
|
||||
default:
|
||||
throw new IllegalArgumentException("invalid type:" + this);
|
||||
}
|
||||
}
|
||||
|
||||
public static ResourceType fromValue(String type) {
|
||||
return fromValue(Integer.parseInt(checkNotNull(type, "type")));
|
||||
}
|
||||
|
||||
public static ResourceType fromValue(int v) {
|
||||
switch (v) {
|
||||
case 3:
|
||||
return VIRTUAL_CPU;
|
||||
case 4:
|
||||
return MEMORY;
|
||||
case 6:
|
||||
return SCSI_CONTROLLER;
|
||||
case 17:
|
||||
return VIRTUAL_DISK;
|
||||
default:
|
||||
throw new IllegalArgumentException("invalid type:" + v);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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.jclouds.vcloud.domain;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
/**
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public enum VAppStatus {
|
||||
CREATING, OFF, ON;
|
||||
|
||||
public String value() {
|
||||
switch (this) {
|
||||
case CREATING:
|
||||
return "0";
|
||||
case OFF:
|
||||
return "2";
|
||||
case ON:
|
||||
return "4";
|
||||
default:
|
||||
throw new IllegalArgumentException("invalid status:" + this);
|
||||
}
|
||||
}
|
||||
|
||||
public static VAppStatus fromValue(String status) {
|
||||
return fromValue(Integer.parseInt(checkNotNull(status, "status")));
|
||||
}
|
||||
|
||||
public static VAppStatus fromValue(int v) {
|
||||
switch (v) {
|
||||
case 0:
|
||||
return CREATING;
|
||||
case 2:
|
||||
return OFF;
|
||||
case 4:
|
||||
return ON;
|
||||
default:
|
||||
throw new IllegalArgumentException("invalid status:" + v);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,348 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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.jclouds.vcloud.terremark.domain;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
/**
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class ResourceAllocation implements Comparable<ResourceAllocation> {
|
||||
private final Integer address;
|
||||
private final Integer addressOnParent;
|
||||
private final String allocationUnits;
|
||||
private final String automaticAllocation;
|
||||
private final String automaticDeallocation;
|
||||
private final String caption;
|
||||
private final String consumerVisibility;
|
||||
private final String description;
|
||||
private final String elementName;
|
||||
private final String hostResource;
|
||||
private final int instanceID;
|
||||
private final String limit;
|
||||
private final String mappingBehavior;
|
||||
private final String otherResourceType;
|
||||
private final Integer parent;
|
||||
private final String poolID;
|
||||
private final String reservation;
|
||||
private final String resourceSubType;
|
||||
private final ResourceType resourceType;
|
||||
private final long virtualQuantity;
|
||||
private final String virtualQuantityUnits;
|
||||
private final String weight;
|
||||
|
||||
public ResourceAllocation(Integer address, Integer addressOnParent, String allocationUnits,
|
||||
String automaticAllocation, String automaticDeallocation, String caption,
|
||||
String consumerVisibility, String description, String elementName, String hostResource,
|
||||
int instanceID, String limit, String mappingBehavior, String otherResourceType,
|
||||
Integer parent, String poolID, String reservation, String resourceSubType,
|
||||
ResourceType resourceType, long virtualQuantity, String virtualQuantityUnits,
|
||||
String weight) {
|
||||
this.address = address;
|
||||
this.addressOnParent = addressOnParent;
|
||||
this.allocationUnits = allocationUnits;
|
||||
this.automaticAllocation = automaticAllocation;
|
||||
this.automaticDeallocation = automaticDeallocation;
|
||||
this.caption = caption;
|
||||
this.consumerVisibility = consumerVisibility;
|
||||
this.description = description;
|
||||
this.elementName = elementName;
|
||||
this.hostResource = hostResource;
|
||||
this.instanceID = checkNotNull(instanceID, "instanceID");
|
||||
this.limit = limit;
|
||||
this.mappingBehavior = mappingBehavior;
|
||||
this.otherResourceType = otherResourceType;
|
||||
this.parent = parent;
|
||||
this.poolID = poolID;
|
||||
this.reservation = reservation;
|
||||
this.resourceSubType = resourceSubType;
|
||||
this.resourceType = checkNotNull(resourceType, "resourceType");
|
||||
this.virtualQuantity = virtualQuantity;
|
||||
this.virtualQuantityUnits = virtualQuantityUnits;
|
||||
this.weight = weight;
|
||||
}
|
||||
|
||||
public Integer getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public Integer getAddressOnParent() {
|
||||
return addressOnParent;
|
||||
}
|
||||
|
||||
public String getAllocationUnits() {
|
||||
return allocationUnits;
|
||||
}
|
||||
|
||||
public String getAutomaticAllocation() {
|
||||
return automaticAllocation;
|
||||
}
|
||||
|
||||
public String getAutomaticDeallocation() {
|
||||
return automaticDeallocation;
|
||||
}
|
||||
|
||||
public String getCaption() {
|
||||
return caption;
|
||||
}
|
||||
|
||||
public String getConsumerVisibility() {
|
||||
return consumerVisibility;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public String getElementName() {
|
||||
return elementName;
|
||||
}
|
||||
|
||||
public int getInstanceID() {
|
||||
return instanceID;
|
||||
}
|
||||
|
||||
public String getLimit() {
|
||||
return limit;
|
||||
}
|
||||
|
||||
public String getMappingBehavior() {
|
||||
return mappingBehavior;
|
||||
}
|
||||
|
||||
public String getOtherResourceType() {
|
||||
return otherResourceType;
|
||||
}
|
||||
|
||||
public Integer getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
public String getPoolID() {
|
||||
return poolID;
|
||||
}
|
||||
|
||||
public String getReservation() {
|
||||
return reservation;
|
||||
}
|
||||
|
||||
public String getResourceSubType() {
|
||||
return resourceSubType;
|
||||
}
|
||||
|
||||
public ResourceType getResourceType() {
|
||||
return resourceType;
|
||||
}
|
||||
|
||||
public long getVirtualQuantity() {
|
||||
return virtualQuantity;
|
||||
}
|
||||
|
||||
public String getVirtualQuantityUnits() {
|
||||
return virtualQuantityUnits;
|
||||
}
|
||||
|
||||
public String getWeight() {
|
||||
return weight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((address == null) ? 0 : address.hashCode());
|
||||
result = prime * result + ((addressOnParent == null) ? 0 : addressOnParent.hashCode());
|
||||
result = prime * result + ((allocationUnits == null) ? 0 : allocationUnits.hashCode());
|
||||
result = prime * result
|
||||
+ ((automaticAllocation == null) ? 0 : automaticAllocation.hashCode());
|
||||
result = prime * result
|
||||
+ ((automaticDeallocation == null) ? 0 : automaticDeallocation.hashCode());
|
||||
result = prime * result + ((caption == null) ? 0 : caption.hashCode());
|
||||
result = prime * result + ((consumerVisibility == null) ? 0 : consumerVisibility.hashCode());
|
||||
result = prime * result + ((description == null) ? 0 : description.hashCode());
|
||||
result = prime * result + ((elementName == null) ? 0 : elementName.hashCode());
|
||||
result = prime * result + instanceID;
|
||||
result = prime * result + ((limit == null) ? 0 : limit.hashCode());
|
||||
result = prime * result + ((mappingBehavior == null) ? 0 : mappingBehavior.hashCode());
|
||||
result = prime * result + ((otherResourceType == null) ? 0 : otherResourceType.hashCode());
|
||||
result = prime * result + ((parent == null) ? 0 : parent.hashCode());
|
||||
result = prime * result + ((poolID == null) ? 0 : poolID.hashCode());
|
||||
result = prime * result + ((reservation == null) ? 0 : reservation.hashCode());
|
||||
result = prime * result + ((resourceSubType == null) ? 0 : resourceSubType.hashCode());
|
||||
result = prime * result + ((resourceType == null) ? 0 : resourceType.hashCode());
|
||||
result = prime * result + (int) (virtualQuantity ^ (virtualQuantity >>> 32));
|
||||
result = prime * result
|
||||
+ ((virtualQuantityUnits == null) ? 0 : virtualQuantityUnits.hashCode());
|
||||
result = prime * result + ((weight == null) ? 0 : weight.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
ResourceAllocation other = (ResourceAllocation) obj;
|
||||
if (address == null) {
|
||||
if (other.address != null)
|
||||
return false;
|
||||
} else if (!address.equals(other.address))
|
||||
return false;
|
||||
if (addressOnParent == null) {
|
||||
if (other.addressOnParent != null)
|
||||
return false;
|
||||
} else if (!addressOnParent.equals(other.addressOnParent))
|
||||
return false;
|
||||
if (allocationUnits == null) {
|
||||
if (other.allocationUnits != null)
|
||||
return false;
|
||||
} else if (!allocationUnits.equals(other.allocationUnits))
|
||||
return false;
|
||||
if (automaticAllocation == null) {
|
||||
if (other.automaticAllocation != null)
|
||||
return false;
|
||||
} else if (!automaticAllocation.equals(other.automaticAllocation))
|
||||
return false;
|
||||
if (automaticDeallocation == null) {
|
||||
if (other.automaticDeallocation != null)
|
||||
return false;
|
||||
} else if (!automaticDeallocation.equals(other.automaticDeallocation))
|
||||
return false;
|
||||
if (caption == null) {
|
||||
if (other.caption != null)
|
||||
return false;
|
||||
} else if (!caption.equals(other.caption))
|
||||
return false;
|
||||
if (consumerVisibility == null) {
|
||||
if (other.consumerVisibility != null)
|
||||
return false;
|
||||
} else if (!consumerVisibility.equals(other.consumerVisibility))
|
||||
return false;
|
||||
if (description == null) {
|
||||
if (other.description != null)
|
||||
return false;
|
||||
} else if (!description.equals(other.description))
|
||||
return false;
|
||||
if (elementName == null) {
|
||||
if (other.elementName != null)
|
||||
return false;
|
||||
} else if (!elementName.equals(other.elementName))
|
||||
return false;
|
||||
if (instanceID != other.instanceID)
|
||||
return false;
|
||||
if (limit == null) {
|
||||
if (other.limit != null)
|
||||
return false;
|
||||
} else if (!limit.equals(other.limit))
|
||||
return false;
|
||||
if (mappingBehavior == null) {
|
||||
if (other.mappingBehavior != null)
|
||||
return false;
|
||||
} else if (!mappingBehavior.equals(other.mappingBehavior))
|
||||
return false;
|
||||
if (otherResourceType == null) {
|
||||
if (other.otherResourceType != null)
|
||||
return false;
|
||||
} else if (!otherResourceType.equals(other.otherResourceType))
|
||||
return false;
|
||||
if (parent == null) {
|
||||
if (other.parent != null)
|
||||
return false;
|
||||
} else if (!parent.equals(other.parent))
|
||||
return false;
|
||||
if (poolID == null) {
|
||||
if (other.poolID != null)
|
||||
return false;
|
||||
} else if (!poolID.equals(other.poolID))
|
||||
return false;
|
||||
if (reservation == null) {
|
||||
if (other.reservation != null)
|
||||
return false;
|
||||
} else if (!reservation.equals(other.reservation))
|
||||
return false;
|
||||
if (resourceSubType == null) {
|
||||
if (other.resourceSubType != null)
|
||||
return false;
|
||||
} else if (!resourceSubType.equals(other.resourceSubType))
|
||||
return false;
|
||||
if (resourceType == null) {
|
||||
if (other.resourceType != null)
|
||||
return false;
|
||||
} else if (!resourceType.equals(other.resourceType))
|
||||
return false;
|
||||
if (virtualQuantity != other.virtualQuantity)
|
||||
return false;
|
||||
if (virtualQuantityUnits == null) {
|
||||
if (other.virtualQuantityUnits != null)
|
||||
return false;
|
||||
} else if (!virtualQuantityUnits.equals(other.virtualQuantityUnits))
|
||||
return false;
|
||||
if (weight == null) {
|
||||
if (other.weight != null)
|
||||
return false;
|
||||
} else if (!weight.equals(other.weight))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ResourceAllocation [address=" + address + ", addressOnParent=" + addressOnParent
|
||||
+ ", allocationUnits=" + allocationUnits + ", automaticAllocation="
|
||||
+ automaticAllocation + ", automaticDeallocation=" + automaticDeallocation
|
||||
+ ", caption=" + caption + ", consumerVisibility=" + consumerVisibility
|
||||
+ ", description=" + description + ", elementName=" + elementName + ", instanceID="
|
||||
+ instanceID + ", limit=" + limit + ", mappingBehavior=" + mappingBehavior
|
||||
+ ", otherResourceType=" + otherResourceType + ", parent=" + parent + ", poolID="
|
||||
+ poolID + ", reservation=" + reservation + ", resourceSubType=" + resourceSubType
|
||||
+ ", resourceType=" + resourceType + ", virtualQuantity=" + virtualQuantity
|
||||
+ ", virtualQuantityUnits=" + virtualQuantityUnits + ", weight=" + weight + "]";
|
||||
}
|
||||
|
||||
public int compareTo(ResourceAllocation that) {
|
||||
final int BEFORE = -1;
|
||||
final int EQUAL = 0;
|
||||
final int AFTER = 1;
|
||||
|
||||
if (this == that)
|
||||
return EQUAL;
|
||||
|
||||
int comparison = this.resourceType.compareTo(that.resourceType);
|
||||
if (comparison != EQUAL)
|
||||
return comparison;
|
||||
|
||||
if (this.instanceID < that.instanceID)
|
||||
return BEFORE;
|
||||
if (this.instanceID > that.instanceID)
|
||||
return AFTER;
|
||||
return EQUAL;
|
||||
}
|
||||
|
||||
public String getHostResource() {
|
||||
return hostResource;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
package org.jclouds.vcloud.terremark.domain;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import org.jclouds.vcloud.VCloudClient;
|
||||
|
||||
/**
|
||||
*
|
||||
* VirtualResource such as disks or CPU
|
||||
*
|
||||
* @author Adrian Cole
|
||||
* @see VCloudClient#getVApp
|
||||
*
|
||||
*
|
||||
*/
|
||||
public enum ResourceType {
|
||||
|
||||
VIRTUAL_CPU,
|
||||
|
||||
MEMORY,
|
||||
|
||||
SCSI_CONTROLLER,
|
||||
|
||||
VIRTUAL_DISK;
|
||||
|
||||
public String value() {
|
||||
switch (this) {
|
||||
case VIRTUAL_CPU:
|
||||
return "3";
|
||||
case MEMORY:
|
||||
return "4";
|
||||
case SCSI_CONTROLLER:
|
||||
return "6";
|
||||
case VIRTUAL_DISK:
|
||||
return "17";
|
||||
default:
|
||||
throw new IllegalArgumentException("invalid type:" + this);
|
||||
}
|
||||
}
|
||||
|
||||
public static ResourceType fromValue(String type) {
|
||||
return fromValue(Integer.parseInt(checkNotNull(type, "type")));
|
||||
}
|
||||
|
||||
public static ResourceType fromValue(int v) {
|
||||
switch (v) {
|
||||
case 3:
|
||||
return VIRTUAL_CPU;
|
||||
case 4:
|
||||
return MEMORY;
|
||||
case 6:
|
||||
return SCSI_CONTROLLER;
|
||||
case 17:
|
||||
return VIRTUAL_DISK;
|
||||
default:
|
||||
throw new IllegalArgumentException("invalid type:" + v);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -23,10 +23,16 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.terremark.domain;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.Map;
|
||||
import java.util.SortedSet;
|
||||
|
||||
import org.jclouds.rest.domain.Link;
|
||||
import org.jclouds.rest.domain.NamedLink;
|
||||
import org.jclouds.vcloud.domain.VAppStatus;
|
||||
import org.jclouds.vcloud.terremark.domain.internal.VAppImpl;
|
||||
|
||||
import com.google.common.collect.ListMultimap;
|
||||
import com.google.inject.ImplementedBy;
|
||||
|
||||
/**
|
||||
|
@ -35,10 +41,24 @@ import com.google.inject.ImplementedBy;
|
|||
@ImplementedBy(VAppImpl.class)
|
||||
public interface VApp extends NamedLink {
|
||||
|
||||
int getStatus();
|
||||
VAppStatus getStatus();
|
||||
|
||||
int getSize();
|
||||
long getSize();
|
||||
|
||||
Link getVDC();
|
||||
|
||||
Link getComputeOptions();
|
||||
|
||||
Link getCustomizationOptions();
|
||||
|
||||
ListMultimap<String, InetAddress> getNetworkToAddresses();
|
||||
|
||||
String getOperatingSystemDescription();
|
||||
|
||||
VirtualSystem getSystem();
|
||||
|
||||
SortedSet<ResourceAllocation> getResourceAllocations();
|
||||
|
||||
Map<ResourceType, ResourceAllocation> getResourceAllocationByType();
|
||||
|
||||
}
|
|
@ -0,0 +1,330 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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.jclouds.vcloud.terremark.domain;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
|
||||
/**
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class VirtualSystem {
|
||||
|
||||
private final String automaticRecoveryAction;
|
||||
private final String automaticShutdownAction;
|
||||
private final String automaticStartupAction;
|
||||
private final String automaticStartupActionDelay;
|
||||
private final String automaticStartupActionSequenceNumber;
|
||||
private final String caption;
|
||||
private final String configurationDataRoot;
|
||||
private final String configurationFile;
|
||||
private final String configurationID;
|
||||
private final DateTime creationTime;
|
||||
private final String description;
|
||||
private final String elementName;
|
||||
private final int instanceID;
|
||||
private final String logDataRoot;
|
||||
private final String recoveryFile;
|
||||
private final String snapshotDataRoot;
|
||||
private final String suspendDataRoot;
|
||||
private final String swapFileDataRoot;
|
||||
private final String virtualSystemIdentifier;
|
||||
private final String virtualSystemType;
|
||||
|
||||
public VirtualSystem(String automaticRecoveryAction, String automaticShutdownAction,
|
||||
String automaticStartupAction, String automaticStartupActionDelay,
|
||||
String automaticStartupActionSequenceNumber, String caption,
|
||||
String configurationDataRoot, String configurationFile, String configurationID,
|
||||
DateTime creationTime, String description, String elementName, int instanceID,
|
||||
String logDataRoot, String recoveryFile, String snapshotDataRoot,
|
||||
String suspendDataRoot, String swapFileDataRoot, String virtualSystemIdentifier,
|
||||
String virtualSystemType) {
|
||||
this.automaticRecoveryAction = automaticRecoveryAction;
|
||||
this.automaticShutdownAction = automaticShutdownAction;
|
||||
this.automaticStartupAction = automaticStartupAction;
|
||||
this.automaticStartupActionDelay = automaticStartupActionDelay;
|
||||
this.automaticStartupActionSequenceNumber = automaticStartupActionSequenceNumber;
|
||||
this.caption = caption;
|
||||
this.configurationDataRoot = configurationDataRoot;
|
||||
this.configurationFile = configurationFile;
|
||||
this.configurationID = configurationID;
|
||||
this.creationTime = creationTime;
|
||||
this.description = description;
|
||||
this.elementName = elementName;
|
||||
this.instanceID = instanceID;
|
||||
this.logDataRoot = logDataRoot;
|
||||
this.recoveryFile = recoveryFile;
|
||||
this.snapshotDataRoot = snapshotDataRoot;
|
||||
this.suspendDataRoot = suspendDataRoot;
|
||||
this.swapFileDataRoot = swapFileDataRoot;
|
||||
this.virtualSystemIdentifier = virtualSystemIdentifier;
|
||||
this.virtualSystemType = virtualSystemType;
|
||||
}
|
||||
|
||||
public String getAutomaticRecoveryAction() {
|
||||
return automaticRecoveryAction;
|
||||
}
|
||||
|
||||
public String getAutomaticShutdownAction() {
|
||||
return automaticShutdownAction;
|
||||
}
|
||||
|
||||
public String getAutomaticStartupAction() {
|
||||
return automaticStartupAction;
|
||||
}
|
||||
|
||||
public String getAutomaticStartupActionDelay() {
|
||||
return automaticStartupActionDelay;
|
||||
}
|
||||
|
||||
public String getAutomaticStartupActionSequenceNumber() {
|
||||
return automaticStartupActionSequenceNumber;
|
||||
}
|
||||
|
||||
public String getCaption() {
|
||||
return caption;
|
||||
}
|
||||
|
||||
public String getConfigurationDataRoot() {
|
||||
return configurationDataRoot;
|
||||
}
|
||||
|
||||
public String getConfigurationFile() {
|
||||
return configurationFile;
|
||||
}
|
||||
|
||||
public String getConfigurationID() {
|
||||
return configurationID;
|
||||
}
|
||||
|
||||
public DateTime getCreationTime() {
|
||||
return creationTime;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public String getElementName() {
|
||||
return elementName;
|
||||
}
|
||||
|
||||
public int getInstanceID() {
|
||||
return instanceID;
|
||||
}
|
||||
|
||||
public String getLogDataRoot() {
|
||||
return logDataRoot;
|
||||
}
|
||||
|
||||
public String getRecoveryFile() {
|
||||
return recoveryFile;
|
||||
}
|
||||
|
||||
public String getSnapshotDataRoot() {
|
||||
return snapshotDataRoot;
|
||||
}
|
||||
|
||||
public String getSuspendDataRoot() {
|
||||
return suspendDataRoot;
|
||||
}
|
||||
|
||||
public String getSwapFileDataRoot() {
|
||||
return swapFileDataRoot;
|
||||
}
|
||||
|
||||
public String getVirtualSystemIdentifier() {
|
||||
return virtualSystemIdentifier;
|
||||
}
|
||||
|
||||
public String getVirtualSystemType() {
|
||||
return virtualSystemType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result
|
||||
+ ((automaticRecoveryAction == null) ? 0 : automaticRecoveryAction.hashCode());
|
||||
result = prime * result
|
||||
+ ((automaticShutdownAction == null) ? 0 : automaticShutdownAction.hashCode());
|
||||
result = prime * result
|
||||
+ ((automaticStartupAction == null) ? 0 : automaticStartupAction.hashCode());
|
||||
result = prime
|
||||
* result
|
||||
+ ((automaticStartupActionDelay == null) ? 0 : automaticStartupActionDelay
|
||||
.hashCode());
|
||||
result = prime
|
||||
* result
|
||||
+ ((automaticStartupActionSequenceNumber == null) ? 0
|
||||
: automaticStartupActionSequenceNumber.hashCode());
|
||||
result = prime * result + ((caption == null) ? 0 : caption.hashCode());
|
||||
result = prime * result
|
||||
+ ((configurationDataRoot == null) ? 0 : configurationDataRoot.hashCode());
|
||||
result = prime * result + ((configurationFile == null) ? 0 : configurationFile.hashCode());
|
||||
result = prime * result + ((configurationID == null) ? 0 : configurationID.hashCode());
|
||||
result = prime * result + ((creationTime == null) ? 0 : creationTime.hashCode());
|
||||
result = prime * result + ((description == null) ? 0 : description.hashCode());
|
||||
result = prime * result + ((elementName == null) ? 0 : elementName.hashCode());
|
||||
result = prime * result + instanceID;
|
||||
result = prime * result + ((logDataRoot == null) ? 0 : logDataRoot.hashCode());
|
||||
result = prime * result + ((recoveryFile == null) ? 0 : recoveryFile.hashCode());
|
||||
result = prime * result + ((snapshotDataRoot == null) ? 0 : snapshotDataRoot.hashCode());
|
||||
result = prime * result + ((suspendDataRoot == null) ? 0 : suspendDataRoot.hashCode());
|
||||
result = prime * result + ((swapFileDataRoot == null) ? 0 : swapFileDataRoot.hashCode());
|
||||
result = prime * result
|
||||
+ ((virtualSystemIdentifier == null) ? 0 : virtualSystemIdentifier.hashCode());
|
||||
result = prime * result + ((virtualSystemType == null) ? 0 : virtualSystemType.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
VirtualSystem other = (VirtualSystem) obj;
|
||||
if (automaticRecoveryAction == null) {
|
||||
if (other.automaticRecoveryAction != null)
|
||||
return false;
|
||||
} else if (!automaticRecoveryAction.equals(other.automaticRecoveryAction))
|
||||
return false;
|
||||
if (automaticShutdownAction == null) {
|
||||
if (other.automaticShutdownAction != null)
|
||||
return false;
|
||||
} else if (!automaticShutdownAction.equals(other.automaticShutdownAction))
|
||||
return false;
|
||||
if (automaticStartupAction == null) {
|
||||
if (other.automaticStartupAction != null)
|
||||
return false;
|
||||
} else if (!automaticStartupAction.equals(other.automaticStartupAction))
|
||||
return false;
|
||||
if (automaticStartupActionDelay == null) {
|
||||
if (other.automaticStartupActionDelay != null)
|
||||
return false;
|
||||
} else if (!automaticStartupActionDelay.equals(other.automaticStartupActionDelay))
|
||||
return false;
|
||||
if (automaticStartupActionSequenceNumber == null) {
|
||||
if (other.automaticStartupActionSequenceNumber != null)
|
||||
return false;
|
||||
} else if (!automaticStartupActionSequenceNumber
|
||||
.equals(other.automaticStartupActionSequenceNumber))
|
||||
return false;
|
||||
if (caption == null) {
|
||||
if (other.caption != null)
|
||||
return false;
|
||||
} else if (!caption.equals(other.caption))
|
||||
return false;
|
||||
if (configurationDataRoot == null) {
|
||||
if (other.configurationDataRoot != null)
|
||||
return false;
|
||||
} else if (!configurationDataRoot.equals(other.configurationDataRoot))
|
||||
return false;
|
||||
if (configurationFile == null) {
|
||||
if (other.configurationFile != null)
|
||||
return false;
|
||||
} else if (!configurationFile.equals(other.configurationFile))
|
||||
return false;
|
||||
if (configurationID == null) {
|
||||
if (other.configurationID != null)
|
||||
return false;
|
||||
} else if (!configurationID.equals(other.configurationID))
|
||||
return false;
|
||||
if (creationTime == null) {
|
||||
if (other.creationTime != null)
|
||||
return false;
|
||||
} else if (!creationTime.equals(other.creationTime))
|
||||
return false;
|
||||
if (description == null) {
|
||||
if (other.description != null)
|
||||
return false;
|
||||
} else if (!description.equals(other.description))
|
||||
return false;
|
||||
if (elementName == null) {
|
||||
if (other.elementName != null)
|
||||
return false;
|
||||
} else if (!elementName.equals(other.elementName))
|
||||
return false;
|
||||
if (instanceID != other.instanceID)
|
||||
return false;
|
||||
if (logDataRoot == null) {
|
||||
if (other.logDataRoot != null)
|
||||
return false;
|
||||
} else if (!logDataRoot.equals(other.logDataRoot))
|
||||
return false;
|
||||
if (recoveryFile == null) {
|
||||
if (other.recoveryFile != null)
|
||||
return false;
|
||||
} else if (!recoveryFile.equals(other.recoveryFile))
|
||||
return false;
|
||||
if (snapshotDataRoot == null) {
|
||||
if (other.snapshotDataRoot != null)
|
||||
return false;
|
||||
} else if (!snapshotDataRoot.equals(other.snapshotDataRoot))
|
||||
return false;
|
||||
if (suspendDataRoot == null) {
|
||||
if (other.suspendDataRoot != null)
|
||||
return false;
|
||||
} else if (!suspendDataRoot.equals(other.suspendDataRoot))
|
||||
return false;
|
||||
if (swapFileDataRoot == null) {
|
||||
if (other.swapFileDataRoot != null)
|
||||
return false;
|
||||
} else if (!swapFileDataRoot.equals(other.swapFileDataRoot))
|
||||
return false;
|
||||
if (virtualSystemIdentifier == null) {
|
||||
if (other.virtualSystemIdentifier != null)
|
||||
return false;
|
||||
} else if (!virtualSystemIdentifier.equals(other.virtualSystemIdentifier))
|
||||
return false;
|
||||
if (virtualSystemType == null) {
|
||||
if (other.virtualSystemType != null)
|
||||
return false;
|
||||
} else if (!virtualSystemType.equals(other.virtualSystemType))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "VirtualSystem [automaticRecoveryAction=" + automaticRecoveryAction
|
||||
+ ", automaticShutdownAction=" + automaticShutdownAction
|
||||
+ ", automaticStartupAction=" + automaticStartupAction
|
||||
+ ", automaticStartupActionDelay=" + automaticStartupActionDelay
|
||||
+ ", automaticStartupActionSequenceNumber=" + automaticStartupActionSequenceNumber
|
||||
+ ", caption=" + caption + ", configurationDataRoot=" + configurationDataRoot
|
||||
+ ", configurationFile=" + configurationFile + ", configurationID="
|
||||
+ configurationID + ", creationTime=" + creationTime + ", description="
|
||||
+ description + ", elementName=" + elementName + ", instanceID=" + instanceID
|
||||
+ ", logDataRoot=" + logDataRoot + ", recoveryFile=" + recoveryFile
|
||||
+ ", snapshotDataRoot=" + snapshotDataRoot + ", suspendDataRoot=" + suspendDataRoot
|
||||
+ ", swapFileDataRoot=" + swapFileDataRoot + ", virtualSystemIdentifier="
|
||||
+ virtualSystemIdentifier + ", virtualSystemType=" + virtualSystemType + "]";
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -23,13 +23,22 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.terremark.domain.internal;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.URI;
|
||||
import java.util.Map;
|
||||
import java.util.SortedSet;
|
||||
|
||||
import org.jclouds.rest.domain.Link;
|
||||
import org.jclouds.rest.domain.internal.NamedLinkImpl;
|
||||
import org.jclouds.vcloud.domain.VAppStatus;
|
||||
import org.jclouds.vcloud.terremark.domain.ResourceAllocation;
|
||||
import org.jclouds.vcloud.terremark.domain.ResourceType;
|
||||
import org.jclouds.vcloud.terremark.domain.VApp;
|
||||
import org.jclouds.vcloud.terremark.domain.VirtualSystem;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.ListMultimap;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
/**
|
||||
* Locations of resources in vCloud
|
||||
|
@ -39,25 +48,49 @@ import org.jclouds.vcloud.terremark.domain.VApp;
|
|||
*/
|
||||
public class VAppImpl extends NamedLinkImpl implements VApp {
|
||||
|
||||
private final int status;
|
||||
private final int size;
|
||||
private final VAppStatus status;
|
||||
private final long size;
|
||||
private final Link vDC;
|
||||
private final Link computeOptions;
|
||||
private final Link customizationOptions;
|
||||
private final ListMultimap<String, InetAddress> networkToAddresses;
|
||||
private final String operatingSystemDescription;
|
||||
private final VirtualSystem system;
|
||||
private final SortedSet<ResourceAllocation> resourceAllocations;
|
||||
private final Map<ResourceType, ResourceAllocation> resourceAllocationByType;
|
||||
|
||||
/** The serialVersionUID */
|
||||
private static final long serialVersionUID = 8464716396538298809L;
|
||||
|
||||
public VAppImpl(String name, String type, URI location, int status, int size, Link vDC) {
|
||||
public VAppImpl(String name, String type, URI location, VAppStatus status, long size, Link vDC,
|
||||
Link computeOptions, Link customizationOptions,
|
||||
ListMultimap<String, InetAddress> networkToAddresses,
|
||||
String operatingSystemDescription, VirtualSystem system,
|
||||
SortedSet<ResourceAllocation> resourceAllocations) {
|
||||
super(name, type, location);
|
||||
this.status = status;
|
||||
this.size = size;
|
||||
this.vDC = checkNotNull(vDC, "vDC");
|
||||
this.vDC = vDC;
|
||||
this.computeOptions = computeOptions;
|
||||
this.customizationOptions = customizationOptions;
|
||||
this.networkToAddresses = networkToAddresses;
|
||||
this.operatingSystemDescription = operatingSystemDescription;
|
||||
this.system = system;
|
||||
this.resourceAllocations = resourceAllocations;
|
||||
resourceAllocationByType = Maps.uniqueIndex(resourceAllocations,
|
||||
new Function<ResourceAllocation, ResourceType>() {
|
||||
@Override
|
||||
public ResourceType apply(ResourceAllocation from) {
|
||||
return from.getResourceType();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public int getStatus() {
|
||||
public VAppStatus getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public int getSize() {
|
||||
public long getSize() {
|
||||
return size;
|
||||
}
|
||||
|
||||
|
@ -65,4 +98,112 @@ public class VAppImpl extends NamedLinkImpl implements VApp {
|
|||
return vDC;
|
||||
}
|
||||
|
||||
public Link getComputeOptions() {
|
||||
return computeOptions;
|
||||
}
|
||||
|
||||
public Link getCustomizationOptions() {
|
||||
return customizationOptions;
|
||||
}
|
||||
|
||||
public ListMultimap<String, InetAddress> getNetworkToAddresses() {
|
||||
return networkToAddresses;
|
||||
}
|
||||
|
||||
public String getOperatingSystemDescription() {
|
||||
return operatingSystemDescription;
|
||||
}
|
||||
|
||||
public VirtualSystem getSystem() {
|
||||
return system;
|
||||
}
|
||||
|
||||
public SortedSet<ResourceAllocation> getResourceAllocations() {
|
||||
return resourceAllocations;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = super.hashCode();
|
||||
result = prime * result + ((computeOptions == null) ? 0 : computeOptions.hashCode());
|
||||
result = prime * result
|
||||
+ ((customizationOptions == null) ? 0 : customizationOptions.hashCode());
|
||||
result = prime * result + ((networkToAddresses == null) ? 0 : networkToAddresses.hashCode());
|
||||
result = prime * result
|
||||
+ ((operatingSystemDescription == null) ? 0 : operatingSystemDescription.hashCode());
|
||||
result = prime * result
|
||||
+ ((resourceAllocationByType == null) ? 0 : resourceAllocationByType.hashCode());
|
||||
result = prime * result
|
||||
+ ((resourceAllocations == null) ? 0 : resourceAllocations.hashCode());
|
||||
result = prime * result + (int) (size ^ (size >>> 32));
|
||||
result = prime * result + ((status == null) ? 0 : status.hashCode());
|
||||
result = prime * result + ((system == null) ? 0 : system.hashCode());
|
||||
result = prime * result + ((vDC == null) ? 0 : vDC.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (!super.equals(obj))
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
VAppImpl other = (VAppImpl) obj;
|
||||
if (computeOptions == null) {
|
||||
if (other.computeOptions != null)
|
||||
return false;
|
||||
} else if (!computeOptions.equals(other.computeOptions))
|
||||
return false;
|
||||
if (customizationOptions == null) {
|
||||
if (other.customizationOptions != null)
|
||||
return false;
|
||||
} else if (!customizationOptions.equals(other.customizationOptions))
|
||||
return false;
|
||||
if (networkToAddresses == null) {
|
||||
if (other.networkToAddresses != null)
|
||||
return false;
|
||||
} else if (!networkToAddresses.equals(other.networkToAddresses))
|
||||
return false;
|
||||
if (operatingSystemDescription == null) {
|
||||
if (other.operatingSystemDescription != null)
|
||||
return false;
|
||||
} else if (!operatingSystemDescription.equals(other.operatingSystemDescription))
|
||||
return false;
|
||||
if (resourceAllocationByType == null) {
|
||||
if (other.resourceAllocationByType != null)
|
||||
return false;
|
||||
} else if (!resourceAllocationByType.equals(other.resourceAllocationByType))
|
||||
return false;
|
||||
if (resourceAllocations == null) {
|
||||
if (other.resourceAllocations != null)
|
||||
return false;
|
||||
} else if (!resourceAllocations.equals(other.resourceAllocations))
|
||||
return false;
|
||||
if (size != other.size)
|
||||
return false;
|
||||
if (status == null) {
|
||||
if (other.status != null)
|
||||
return false;
|
||||
} else if (!status.equals(other.status))
|
||||
return false;
|
||||
if (system == null) {
|
||||
if (other.system != null)
|
||||
return false;
|
||||
} else if (!system.equals(other.system))
|
||||
return false;
|
||||
if (vDC == null) {
|
||||
if (other.vDC != null)
|
||||
return false;
|
||||
} else if (!vDC.equals(other.vDC))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public Map<ResourceType, ResourceAllocation> getResourceAllocationByType() {
|
||||
return resourceAllocationByType;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,177 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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.jclouds.vcloud.terremark.xml;
|
||||
|
||||
import org.jclouds.http.functions.ParseSax;
|
||||
import org.jclouds.vcloud.terremark.domain.ResourceAllocation;
|
||||
import org.jclouds.vcloud.terremark.domain.ResourceType;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class ResourceAllocationHandler extends ParseSax.HandlerWithResult<ResourceAllocation> {
|
||||
private StringBuilder currentText = new StringBuilder();
|
||||
|
||||
private Integer address;
|
||||
private Integer addressOnParent;
|
||||
private String allocationUnits;
|
||||
private String automaticAllocation;
|
||||
private String automaticDeallocation;
|
||||
private String caption;
|
||||
private String consumerVisibility;
|
||||
private String description;
|
||||
private String elementName;
|
||||
private String hostResource;
|
||||
private int instanceID;
|
||||
private String limit;
|
||||
private String mappingBehavior;
|
||||
private String otherResourceType;
|
||||
private Integer parent;
|
||||
private String poolID;
|
||||
private String reservation;
|
||||
private String resourceSubType;
|
||||
private ResourceType resourceType;
|
||||
private long virtualQuantity = 1;
|
||||
private String virtualQuantityUnits;
|
||||
private String weight;
|
||||
|
||||
private ResourceAllocation item;
|
||||
|
||||
private boolean skip;
|
||||
|
||||
public ResourceAllocation getResult() {
|
||||
return item;
|
||||
}
|
||||
|
||||
public void startElement(String uri, String localName, String qName, Attributes attributes)
|
||||
throws SAXException {
|
||||
if (attributes.getIndex("xsi:nil") != -1 || attributes.getIndex("xmlns") == -1) {
|
||||
String ns = attributes.getValue(attributes.getIndex("xmlns"));
|
||||
if ("http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData"
|
||||
.equals(ns)) {
|
||||
skip = false;
|
||||
} else {
|
||||
skip = true;
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
skip = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endElement(String uri, String localName, String qName) throws SAXException {
|
||||
if (!skip) {
|
||||
if (qName.equals("Address")) {
|
||||
String address = currentText.toString().trim();
|
||||
if (address != null && !address.equals(""))
|
||||
this.address = Integer.parseInt(address);
|
||||
} else if (qName.equals("AddressOnParent")) {
|
||||
String addressOnParent = currentText.toString().trim();
|
||||
if (addressOnParent != null && !addressOnParent.equals(""))
|
||||
this.addressOnParent = Integer.parseInt(addressOnParent);
|
||||
} else if (qName.equals("AllocationUnits")) {
|
||||
this.allocationUnits = currentText.toString().trim();
|
||||
} else if (qName.equals("AutomaticAllocation")) {
|
||||
this.automaticAllocation = currentText.toString().trim();
|
||||
} else if (qName.equals("AutomaticDeallocation")) {
|
||||
this.automaticDeallocation = currentText.toString().trim();
|
||||
} else if (qName.equals("Caption")) {
|
||||
this.caption = currentText.toString().trim();
|
||||
} else if (qName.equals("ConsumerVisibility")) {
|
||||
this.consumerVisibility = currentText.toString().trim();
|
||||
} else if (qName.equals("Description")) {
|
||||
this.description = currentText.toString().trim();
|
||||
} else if (qName.equals("ElementName")) {
|
||||
this.elementName = currentText.toString().trim();
|
||||
} else if (qName.equals("HostResource")) {
|
||||
this.hostResource = currentText.toString().trim();
|
||||
} else if (qName.equals("InstanceID")) {
|
||||
this.instanceID = Integer.parseInt(currentText.toString().trim());
|
||||
} else if (qName.equals("Limit")) {
|
||||
this.limit = currentText.toString().trim();
|
||||
} else if (qName.equals("MappingBehavior")) {
|
||||
this.mappingBehavior = currentText.toString().trim();
|
||||
} else if (qName.equals("OtherResourceType")) {
|
||||
this.otherResourceType = currentText.toString().trim();
|
||||
} else if (qName.equals("Parent")) {
|
||||
String parent = currentText.toString().trim();
|
||||
if (parent != null && !parent.equals(""))
|
||||
this.parent = Integer.parseInt(parent);
|
||||
} else if (qName.equals("PoolID")) {
|
||||
this.poolID = currentText.toString().trim();
|
||||
} else if (qName.equals("Reservation")) {
|
||||
this.reservation = currentText.toString().trim();
|
||||
} else if (qName.equals("ResourceSubType")) {
|
||||
this.resourceSubType = currentText.toString().trim();
|
||||
} else if (qName.equals("ResourceType")) {
|
||||
this.resourceType = ResourceType.fromValue(currentText.toString().trim());
|
||||
} else if (qName.equals("VirtualQuantity")) {
|
||||
String quantity = currentText.toString().trim();
|
||||
if (quantity != null && !quantity.equals(""))
|
||||
this.virtualQuantity = Long.parseLong(quantity);
|
||||
} else if (qName.equals("VirtualQuantityUnits")) {
|
||||
this.virtualQuantityUnits = currentText.toString().trim();
|
||||
} else if (qName.equals("Weight")) {
|
||||
this.weight = currentText.toString().trim();
|
||||
} else if (qName.equals("q2:Item")) {
|
||||
this.item = new ResourceAllocation(address, addressOnParent, allocationUnits,
|
||||
automaticAllocation, automaticDeallocation, caption, consumerVisibility,
|
||||
description, elementName, hostResource, instanceID, limit, mappingBehavior,
|
||||
otherResourceType, parent, poolID, reservation, resourceSubType, resourceType,
|
||||
virtualQuantity, virtualQuantityUnits, weight);
|
||||
this.address = null;
|
||||
this.addressOnParent = null;
|
||||
this.allocationUnits = null;
|
||||
this.automaticAllocation = null;
|
||||
this.automaticDeallocation = null;
|
||||
this.caption = null;
|
||||
this.consumerVisibility = null;
|
||||
this.description = null;
|
||||
this.elementName = null;
|
||||
this.hostResource = null;
|
||||
this.instanceID = -1;
|
||||
this.limit = null;
|
||||
this.mappingBehavior = null;
|
||||
this.otherResourceType = null;
|
||||
this.parent = null;
|
||||
this.poolID = null;
|
||||
this.reservation = null;
|
||||
this.resourceSubType = null;
|
||||
this.resourceType = null;
|
||||
this.virtualQuantity = 1;
|
||||
this.virtualQuantityUnits = null;
|
||||
this.weight = null;
|
||||
}
|
||||
}
|
||||
currentText = new StringBuilder();
|
||||
|
||||
}
|
||||
|
||||
public void characters(char ch[], int start, int length) {
|
||||
currentText.append(ch, start, length);
|
||||
}
|
||||
}
|
|
@ -23,39 +23,140 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.terremark.xml;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.SortedSet;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.jclouds.http.functions.ParseSax;
|
||||
import org.jclouds.logging.Logger;
|
||||
import org.jclouds.rest.domain.Link;
|
||||
import org.jclouds.rest.domain.NamedLink;
|
||||
import org.jclouds.rest.util.Utils;
|
||||
import org.jclouds.vcloud.VCloudMediaType;
|
||||
import org.jclouds.vcloud.domain.VAppStatus;
|
||||
import org.jclouds.vcloud.terremark.domain.ResourceAllocation;
|
||||
import org.jclouds.vcloud.terremark.domain.VApp;
|
||||
import org.jclouds.vcloud.terremark.domain.VirtualSystem;
|
||||
import org.jclouds.vcloud.terremark.domain.internal.VAppImpl;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import com.google.common.collect.ArrayListMultimap;
|
||||
import com.google.common.collect.ListMultimap;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
/**
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class TerremarkVAppHandler extends ParseSax.HandlerWithResult<VApp> {
|
||||
|
||||
private final VirtualSystemHandler systemHandler;
|
||||
private final ResourceAllocationHandler allocationHandler;
|
||||
@Resource
|
||||
protected Logger logger = Logger.NULL;
|
||||
|
||||
@Inject
|
||||
public TerremarkVAppHandler(VirtualSystemHandler systemHandler,
|
||||
ResourceAllocationHandler allocationHandler) {
|
||||
this.systemHandler = systemHandler;
|
||||
this.allocationHandler = allocationHandler;
|
||||
}
|
||||
|
||||
private VirtualSystem system;
|
||||
private SortedSet<ResourceAllocation> allocations = Sets.newTreeSet();
|
||||
private NamedLink vApp;
|
||||
private Link vDC;
|
||||
private int status;
|
||||
private VAppStatus status;
|
||||
private int size;
|
||||
private boolean skip;
|
||||
private Link computeOptions;
|
||||
private Link customizationOptions;
|
||||
private final ListMultimap<String, InetAddress> networkToAddresses = ArrayListMultimap.create();
|
||||
private StringBuilder currentText = new StringBuilder();
|
||||
private String operatingSystemDescription;
|
||||
private boolean inOs;
|
||||
private String networkName;
|
||||
|
||||
public VApp getResult() {
|
||||
return new VAppImpl(vApp.getName(), vApp.getType(), vApp.getLocation(), status, size, vDC);
|
||||
return new VAppImpl(vApp.getName(), vApp.getType(), vApp.getLocation(), status, size, vDC,
|
||||
computeOptions, customizationOptions, networkToAddresses,
|
||||
operatingSystemDescription, system, allocations);
|
||||
}
|
||||
|
||||
public void startElement(String uri, String localName, String qName, Attributes attributes)
|
||||
throws SAXException {
|
||||
if (attributes.getIndex("xsi:nil") != -1) {
|
||||
skip = true;
|
||||
return;
|
||||
} else {
|
||||
skip = false;
|
||||
}
|
||||
if (qName.equals("Link")) {
|
||||
vDC = Utils.newLink(attributes);
|
||||
if (attributes.getValue(attributes.getIndex("type")).equals(VCloudMediaType.VDC_XML)) {
|
||||
vDC = Utils.newLink(attributes);
|
||||
} else if (attributes.getValue(attributes.getIndex("name")).equals("Compute Options")) {
|
||||
this.computeOptions = Utils.newLink(attributes);
|
||||
} else if (attributes.getValue(attributes.getIndex("name"))
|
||||
.equals("Customization Options")) {
|
||||
this.customizationOptions = Utils.newLink(attributes);
|
||||
}
|
||||
} else if (qName.equals("VApp")) {
|
||||
vApp = Utils.newNamedLink(attributes);
|
||||
status = Integer.parseInt(attributes.getValue(attributes.getIndex("status")));
|
||||
status = VAppStatus.fromValue(attributes.getValue(attributes.getIndex("status")));
|
||||
size = Integer.parseInt(attributes.getValue(attributes.getIndex("size")));
|
||||
} else if (qName.equals("OperatingSystemSection")) {
|
||||
inOs = true;
|
||||
} else if (qName.equals("q1:NetworkConnection")) {
|
||||
networkName = attributes.getValue(attributes.getIndex("Network"));
|
||||
} else {
|
||||
systemHandler.startElement(uri, localName, qName, attributes);
|
||||
allocationHandler.startElement(uri, localName, qName, attributes);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endElement(String uri, String localName, String qName) throws SAXException {
|
||||
if (qName.equals("OperatingSystemSection")) {
|
||||
inOs = false;
|
||||
} else if (inOs && qName.equals("Description")) {
|
||||
operatingSystemDescription = currentText.toString().trim();
|
||||
} else if (qName.equals("q1:IpAddress")) {
|
||||
networkToAddresses.put(networkName, parseInetAddress(currentText.toString().trim()));
|
||||
} else if (qName.equals("q2:System")) {
|
||||
systemHandler.endElement(uri, localName, qName);
|
||||
system = systemHandler.getResult();
|
||||
} else if (qName.equals("q2:Item")) {
|
||||
allocationHandler.endElement(uri, localName, qName);
|
||||
allocations.add(allocationHandler.getResult());
|
||||
} else if (!skip) {
|
||||
systemHandler.endElement(uri, localName, qName);
|
||||
allocationHandler.endElement(uri, localName, qName);
|
||||
}
|
||||
currentText = new StringBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void characters(char ch[], int start, int length) {
|
||||
currentText.append(ch, start, length);
|
||||
systemHandler.characters(ch, start, length);
|
||||
allocationHandler.characters(ch, start, length);
|
||||
}
|
||||
|
||||
private InetAddress parseInetAddress(String string) {
|
||||
String[] byteStrings = string.split("\\.");
|
||||
byte[] bytes = new byte[4];
|
||||
for (int i = 0; i < 4; i++) {
|
||||
bytes[i] = (byte) Integer.parseInt(byteStrings[i]);
|
||||
}
|
||||
try {
|
||||
return InetAddress.getByAddress(bytes);
|
||||
} catch (UnknownHostException e) {
|
||||
logger.warn(e, "error parsing ipAddress", currentText);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,169 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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.jclouds.vcloud.terremark.xml;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.jclouds.http.functions.ParseSax;
|
||||
import org.jclouds.util.DateService;
|
||||
import org.joda.time.DateTime;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class VirtualSystemHandler extends
|
||||
ParseSax.HandlerWithResult<org.jclouds.vcloud.terremark.domain.VirtualSystem> {
|
||||
private StringBuilder currentText = new StringBuilder();
|
||||
|
||||
protected DateService dateService;
|
||||
|
||||
private String automaticRecoveryAction;
|
||||
private String automaticShutdownAction;
|
||||
private String automaticStartupAction;
|
||||
private String automaticStartupActionDelay;
|
||||
private String automaticStartupActionSequenceNumber;
|
||||
private String caption;
|
||||
private String configurationDataRoot;
|
||||
private String configurationFile;
|
||||
private String configurationID;
|
||||
private DateTime creationTime;
|
||||
private String description;
|
||||
private String elementName;
|
||||
private int instanceID;
|
||||
private String logDataRoot;
|
||||
private String recoveryFile;
|
||||
private String snapshotDataRoot;
|
||||
private String suspendDataRoot;
|
||||
private String swapFileDataRoot;
|
||||
private String virtualSystemIdentifier;
|
||||
private String virtualSystemType;
|
||||
|
||||
private org.jclouds.vcloud.terremark.domain.VirtualSystem system;
|
||||
|
||||
private boolean skip;
|
||||
|
||||
@Inject
|
||||
public VirtualSystemHandler(DateService dateService) {
|
||||
this.dateService = dateService;
|
||||
}
|
||||
|
||||
public org.jclouds.vcloud.terremark.domain.VirtualSystem getResult() {
|
||||
return system;
|
||||
}
|
||||
|
||||
public void startElement(String uri, String localName, String qName, Attributes attributes)
|
||||
throws SAXException {
|
||||
if (attributes.getIndex("xsi:nil") != -1
|
||||
|| attributes.getIndex("xmlns") == -1 || !"http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData"
|
||||
.equals(attributes.getValue("xmlns"))) {
|
||||
skip = true;
|
||||
return;
|
||||
} else {
|
||||
skip = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endElement(String uri, String localName, String qName) throws SAXException {
|
||||
if (!skip) {
|
||||
if (qName.equals("AutomaticRecoveryAction")) {
|
||||
this.automaticRecoveryAction = currentText.toString().trim();
|
||||
} else if (qName.equals("AutomaticShutdownAction")) {
|
||||
this.automaticShutdownAction = currentText.toString().trim();
|
||||
} else if (qName.equals("AutomaticStartupAction")) {
|
||||
this.automaticStartupAction = currentText.toString().trim();
|
||||
} else if (qName.equals("AutomaticStartupActionDelay")) {
|
||||
this.automaticStartupActionDelay = currentText.toString().trim();
|
||||
} else if (qName.equals("AutomaticStartupActionSequenceNumber")) {
|
||||
this.automaticStartupActionSequenceNumber = currentText.toString().trim();
|
||||
} else if (qName.equals("Caption")) {
|
||||
this.caption = currentText.toString().trim();
|
||||
} else if (qName.equals("ConfigurationDataRoot")) {
|
||||
this.configurationDataRoot = currentText.toString().trim();
|
||||
} else if (qName.equals("ConfigurationDataRoot")) {
|
||||
this.configurationDataRoot = currentText.toString().trim();
|
||||
} else if (qName.equals("ConfigurationFile")) {
|
||||
this.configurationFile = currentText.toString().trim();
|
||||
} else if (qName.equals("ConfigurationID")) {
|
||||
this.configurationID = currentText.toString().trim();
|
||||
} else if (qName.equals("CreationTime")) {
|
||||
this.creationTime = dateService.iso8601DateParse(currentText.toString().trim());
|
||||
} else if (qName.equals("Description")) {
|
||||
this.description = currentText.toString().trim();
|
||||
} else if (qName.equals("ElementName")) {
|
||||
this.elementName = currentText.toString().trim();
|
||||
} else if (qName.equals("InstanceID")) {
|
||||
this.instanceID = Integer.parseInt(currentText.toString().trim());
|
||||
} else if (qName.equals("LogDataRoot")) {
|
||||
this.logDataRoot = currentText.toString().trim();
|
||||
} else if (qName.equals("RecoveryFile")) {
|
||||
this.recoveryFile = currentText.toString().trim();
|
||||
} else if (qName.equals("SnapshotDataRoot")) {
|
||||
this.snapshotDataRoot = currentText.toString().trim();
|
||||
} else if (qName.equals("SuspendDataRoot")) {
|
||||
this.suspendDataRoot = currentText.toString().trim();
|
||||
} else if (qName.equals("SwapFileDataRoot")) {
|
||||
this.swapFileDataRoot = currentText.toString().trim();
|
||||
} else if (qName.equals("VirtualSystemIdentifier")) {
|
||||
this.virtualSystemIdentifier = currentText.toString().trim();
|
||||
} else if (qName.equals("VirtualSystemType")) {
|
||||
this.virtualSystemType = currentText.toString().trim();
|
||||
} else if (qName.equals("q2:System")) {
|
||||
this.system = new org.jclouds.vcloud.terremark.domain.VirtualSystem(automaticRecoveryAction,
|
||||
automaticShutdownAction, automaticStartupAction, automaticStartupActionDelay,
|
||||
automaticStartupActionSequenceNumber, caption, configurationDataRoot,
|
||||
configurationFile, configurationID, creationTime, description, elementName,
|
||||
instanceID, logDataRoot, recoveryFile, snapshotDataRoot, suspendDataRoot,
|
||||
swapFileDataRoot, virtualSystemIdentifier, virtualSystemType);
|
||||
this.automaticRecoveryAction = null;
|
||||
this.automaticShutdownAction = null;
|
||||
this.automaticStartupAction = null;
|
||||
this.automaticStartupActionDelay = null;
|
||||
this.automaticStartupActionSequenceNumber = null;
|
||||
this.caption = null;
|
||||
this.configurationDataRoot = null;
|
||||
this.configurationFile = null;
|
||||
this.configurationID = null;
|
||||
this.creationTime = null;
|
||||
this.description = null;
|
||||
this.elementName = null;
|
||||
this.instanceID = -1;
|
||||
this.logDataRoot = null;
|
||||
this.recoveryFile = null;
|
||||
this.snapshotDataRoot = null;
|
||||
this.suspendDataRoot = null;
|
||||
this.swapFileDataRoot = null;
|
||||
this.virtualSystemIdentifier = null;
|
||||
this.virtualSystemType = null;
|
||||
}
|
||||
}
|
||||
currentText = new StringBuilder();
|
||||
}
|
||||
|
||||
public void characters(char ch[], int start, int length) {
|
||||
currentText.append(ch, start, length);
|
||||
}
|
||||
}
|
|
@ -1,96 +0,0 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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.jclouds.vcloud.xml;
|
||||
|
||||
import java.text.ParseException;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.jclouds.http.functions.ParseSax;
|
||||
import org.jclouds.rest.domain.Link;
|
||||
import org.jclouds.rest.domain.NamedLink;
|
||||
import org.jclouds.rest.util.Utils;
|
||||
import org.jclouds.util.DateService;
|
||||
import org.jclouds.vcloud.domain.Task;
|
||||
import org.jclouds.vcloud.domain.TaskStatus;
|
||||
import org.jclouds.vcloud.domain.internal.TaskImpl;
|
||||
import org.joda.time.DateTime;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public abstract class BaseTaskHandler<T> extends ParseSax.HandlerWithResult<T> {
|
||||
|
||||
protected final DateService dateService;
|
||||
|
||||
private Link taskLink;
|
||||
private NamedLink owner;
|
||||
private NamedLink result;
|
||||
private TaskStatus status;
|
||||
private DateTime startTime;
|
||||
private DateTime endTime;
|
||||
|
||||
@Inject
|
||||
public BaseTaskHandler(DateService dateService) {
|
||||
this.dateService = dateService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startElement(String uri, String localName, String qName, Attributes attributes)
|
||||
throws SAXException {
|
||||
if (qName.equals("Task")) {
|
||||
taskLink = Utils.newLink(attributes);
|
||||
status = TaskStatus.fromValue(attributes.getValue(attributes.getIndex("status")));
|
||||
startTime = dateService.iso8601DateParse(attributes.getValue(attributes
|
||||
.getIndex("startTime")));
|
||||
if (attributes.getIndex("endTime") != -1) {
|
||||
try {
|
||||
endTime = dateService.iso8601DateParse(attributes.getValue(attributes
|
||||
.getIndex("endTime")));
|
||||
} catch (RuntimeException e) {
|
||||
if (!(e.getCause() instanceof ParseException)) // TODO.. format doesn't parse
|
||||
// endTime="2009-11-11T02:27:25Z"
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
} else if (qName.equals("Owner")) {
|
||||
owner = Utils.newNamedLink(attributes);
|
||||
} else if (qName.equals("Result")) {
|
||||
result = Utils.newNamedLink(attributes);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endElement(String uri, String localName, String qName) throws SAXException {
|
||||
if (qName.equals("Task")) {
|
||||
newTask(new TaskImpl(taskLink.getType(), taskLink.getLocation(), status, startTime,
|
||||
endTime, owner, result));
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void newTask(Task task);
|
||||
|
||||
}
|
|
@ -23,30 +23,82 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.xml;
|
||||
|
||||
import java.text.ParseException;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.jclouds.http.functions.ParseSax;
|
||||
import org.jclouds.rest.domain.Link;
|
||||
import org.jclouds.rest.domain.NamedLink;
|
||||
import org.jclouds.rest.util.Utils;
|
||||
import org.jclouds.util.DateService;
|
||||
import org.jclouds.vcloud.domain.Task;
|
||||
import org.jclouds.vcloud.domain.TaskStatus;
|
||||
import org.jclouds.vcloud.domain.internal.TaskImpl;
|
||||
import org.joda.time.DateTime;
|
||||
import org.xml.sax.Attributes;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class TaskHandler extends BaseTaskHandler<Task> {
|
||||
public class TaskHandler extends ParseSax.HandlerWithResult<Task> {
|
||||
protected final DateService dateService;
|
||||
|
||||
private Link taskLink;
|
||||
private NamedLink owner;
|
||||
private NamedLink result;
|
||||
private TaskStatus status;
|
||||
private DateTime startTime;
|
||||
private DateTime endTime;
|
||||
private Task task;
|
||||
|
||||
@Inject
|
||||
public TaskHandler(DateService dateService) {
|
||||
super(dateService);
|
||||
this.dateService = dateService;
|
||||
}
|
||||
|
||||
private Task task;
|
||||
|
||||
public Task getResult() {
|
||||
return task;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void newTask(Task task) {
|
||||
this.task = task;
|
||||
public void startElement(String uri, String localName, String qName, Attributes attributes)
|
||||
throws SAXException {
|
||||
if (qName.equals("Task")) {
|
||||
taskLink = Utils.newLink(attributes);
|
||||
status = TaskStatus.fromValue(attributes.getValue(attributes.getIndex("status")));
|
||||
startTime = dateService.iso8601DateParse(attributes.getValue(attributes
|
||||
.getIndex("startTime")));
|
||||
if (attributes.getIndex("endTime") != -1) {
|
||||
try {
|
||||
endTime = dateService.iso8601DateParse(attributes.getValue(attributes
|
||||
.getIndex("endTime")));
|
||||
} catch (RuntimeException e) {
|
||||
if (!(e.getCause() instanceof ParseException)) // TODO.. format doesn't parse
|
||||
// endTime="2009-11-11T02:27:25Z"
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
} else if (qName.equals("Owner")) {
|
||||
owner = Utils.newNamedLink(attributes);
|
||||
} else if (qName.equals("Result")) {
|
||||
result = Utils.newNamedLink(attributes);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endElement(String uri, String localName, String qName) throws SAXException {
|
||||
if (qName.equals("Task")) {
|
||||
this.task = new TaskImpl(taskLink.getType(), taskLink.getLocation(), status, startTime,
|
||||
endTime, owner, result);
|
||||
taskLink = null;
|
||||
status = null;
|
||||
startTime = null;
|
||||
endTime = null;
|
||||
owner = null;
|
||||
result = null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -28,8 +28,8 @@ import java.util.SortedSet;
|
|||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.jclouds.http.functions.ParseSax;
|
||||
import org.jclouds.rest.util.Utils;
|
||||
import org.jclouds.util.DateService;
|
||||
import org.jclouds.vcloud.domain.Task;
|
||||
import org.jclouds.vcloud.domain.TasksList;
|
||||
import org.jclouds.vcloud.domain.internal.TasksListImpl;
|
||||
|
@ -41,31 +41,36 @@ import com.google.common.collect.Sets;
|
|||
/**
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class TasksListHandler extends BaseTaskHandler<TasksList> {
|
||||
public class TasksListHandler extends ParseSax.HandlerWithResult<TasksList> {
|
||||
|
||||
private SortedSet<Task> tasks = Sets.newTreeSet();
|
||||
private final TaskHandler taskHandler;
|
||||
private URI location;
|
||||
|
||||
@Inject
|
||||
public TasksListHandler(DateService dateService) {
|
||||
super(dateService);
|
||||
public TasksListHandler(TaskHandler taskHandler) {
|
||||
this.taskHandler = taskHandler;
|
||||
}
|
||||
|
||||
public TasksList getResult() {
|
||||
return new TasksListImpl(location, tasks);
|
||||
}
|
||||
|
||||
protected void newTask(Task task) {
|
||||
this.tasks.add(task);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startElement(String uri, String localName, String qName, Attributes attributes)
|
||||
throws SAXException {
|
||||
if (qName.equals("TasksList")) {
|
||||
location = Utils.newLink(attributes).getLocation();
|
||||
} else {
|
||||
super.startElement(uri, localName, qName, attributes);
|
||||
taskHandler.startElement(uri, localName, qName, attributes);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endElement(String uri, String localName, String qName) throws SAXException {
|
||||
taskHandler.endElement(uri, localName, qName);
|
||||
if (qName.equals("Task")) {
|
||||
this.tasks.add(taskHandler.getResult());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -37,6 +37,8 @@ import org.jclouds.logging.log4j.config.Log4JLoggingModule;
|
|||
import org.jclouds.vcloud.VCloudClientLiveTest;
|
||||
import org.jclouds.vcloud.domain.Task;
|
||||
import org.jclouds.vcloud.domain.TaskStatus;
|
||||
import org.jclouds.vcloud.domain.VAppStatus;
|
||||
import org.jclouds.vcloud.terremark.domain.ResourceType;
|
||||
import org.jclouds.vcloud.terremark.domain.TerremarkVDC;
|
||||
import org.jclouds.vcloud.terremark.domain.VApp;
|
||||
import org.testng.annotations.BeforeGroups;
|
||||
|
@ -66,18 +68,24 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
// disabled until stop functionality is added
|
||||
public void testInstantiate() throws InterruptedException, ExecutionException, TimeoutException {
|
||||
URI template = tmClient.getCatalog().get(45, TimeUnit.SECONDS).get(
|
||||
"Ubuntu Server 9.04 (32-bit)").getLocation();
|
||||
String serverName = "adriantest4";
|
||||
int processorCount = 1;
|
||||
int memory = 512;
|
||||
String catalogOs = "Ubuntu Server 9.04 (32-bit)";
|
||||
String expectedOs = "Ubuntu Linux (32-bit)";
|
||||
|
||||
URI template = tmClient.getCatalog().get(45, TimeUnit.SECONDS).get(catalogOs).getLocation();
|
||||
|
||||
URI network = tmClient.getDefaultVDC().get(45, TimeUnit.SECONDS).getAvailableNetworks()
|
||||
.values().iterator().next().getLocation();
|
||||
|
||||
VApp vApp = tmClient.instantiateVAppTemplate("adriantest1", template, 1, 512, network).get(
|
||||
45, TimeUnit.SECONDS);
|
||||
VApp vApp = tmClient.instantiateVAppTemplate(serverName, template, processorCount, memory,
|
||||
network).get(45, TimeUnit.SECONDS);
|
||||
assertEquals(vApp.getStatus(), VAppStatus.CREATING);
|
||||
|
||||
Task instantiateTask = getLastTaskFor(vApp.getVDC().getLocation());
|
||||
assertEquals(instantiateTask.getStatus(), TaskStatus.QUEUED);
|
||||
|
||||
// in terremark, this should be a no-op, as it should simply return the above task, which is
|
||||
// already deploying
|
||||
|
@ -88,6 +96,9 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
|
|||
deployTask = tmClient.deploy(vApp.getLocation()).get(45, TimeUnit.SECONDS);
|
||||
assertEquals(deployTask.getLocation(), instantiateTask.getLocation());
|
||||
|
||||
vApp = tmClient.getVApp(vApp.getLocation()).get(45, TimeUnit.SECONDS);
|
||||
assertEquals(vApp.getStatus(), VAppStatus.CREATING);
|
||||
|
||||
try {// per docs, this is not supported
|
||||
tmClient.cancelTask(deployTask.getLocation()).get(45, TimeUnit.SECONDS);
|
||||
} catch (ExecutionException e) {
|
||||
|
@ -96,7 +107,11 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
|
|||
}
|
||||
|
||||
deployTask = blockUntilSuccess(deployTask);
|
||||
// TODO verify from vapp status
|
||||
|
||||
vApp = tmClient.getVApp(vApp.getLocation()).get(45, TimeUnit.SECONDS);
|
||||
verifyConfigurationOfVApp(vApp, serverName, expectedOs, processorCount, memory);
|
||||
assertEquals(vApp.getStatus(), VAppStatus.OFF);
|
||||
|
||||
try {// per docs, this is not supported
|
||||
tmClient.undeploy(deployTask.getResult().getLocation()).get(45, TimeUnit.SECONDS);
|
||||
} catch (ExecutionException e) {
|
||||
|
@ -106,7 +121,8 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
|
|||
|
||||
deployTask = blockUntilSuccess(tmClient.powerOn(deployTask.getResult().getLocation()).get(45,
|
||||
TimeUnit.SECONDS));
|
||||
// TODO verify from vapp status
|
||||
vApp = tmClient.getVApp(vApp.getLocation()).get(45, TimeUnit.SECONDS);
|
||||
assertEquals(vApp.getStatus(), VAppStatus.ON);
|
||||
|
||||
try {// per docs, this is not supported
|
||||
tmClient.suspend(deployTask.getResult().getLocation()).get(45, TimeUnit.SECONDS);
|
||||
|
@ -117,18 +133,37 @@ public class TerremarkVCloudClientLiveTest extends VCloudClientLiveTest {
|
|||
|
||||
deployTask = blockUntilSuccess(tmClient.reset(deployTask.getResult().getLocation()).get(45,
|
||||
TimeUnit.SECONDS));
|
||||
// TODO verify from vapp status
|
||||
vApp = tmClient.getVApp(vApp.getLocation()).get(45, TimeUnit.SECONDS);
|
||||
assertEquals(vApp.getStatus(), VAppStatus.ON);
|
||||
|
||||
tmClient.shutdown(deployTask.getResult().getLocation()).get(45, TimeUnit.SECONDS);
|
||||
// TODO verify from vapp status
|
||||
vApp = tmClient.getVApp(vApp.getLocation()).get(45, TimeUnit.SECONDS);
|
||||
assertEquals(vApp.getStatus(), VAppStatus.ON);
|
||||
|
||||
deployTask = blockUntilSuccess(tmClient.powerOff(deployTask.getResult().getLocation()).get(
|
||||
45, TimeUnit.SECONDS));
|
||||
// TODO verify from vapp status
|
||||
vApp = tmClient.getVApp(vApp.getLocation()).get(45, TimeUnit.SECONDS);
|
||||
assertEquals(vApp.getStatus(), VAppStatus.OFF);
|
||||
|
||||
tmClient.delete(deployTask.getResult().getLocation()).get(45, TimeUnit.SECONDS);
|
||||
// TODO verify from vapp status
|
||||
//TODO verify not present anymore
|
||||
}
|
||||
|
||||
private void verifyConfigurationOfVApp(VApp vApp, String serverName, String expectedOs,
|
||||
int processorCount, int memory) {
|
||||
assertEquals(vApp.getName(), serverName);
|
||||
assertEquals(vApp.getOperatingSystemDescription(), expectedOs);
|
||||
assertEquals(vApp.getResourceAllocationByType().get(ResourceType.VIRTUAL_CPU)
|
||||
.getVirtualQuantity(), processorCount);
|
||||
assertEquals(vApp.getResourceAllocationByType().get(ResourceType.SCSI_CONTROLLER)
|
||||
.getVirtualQuantity(), 1);
|
||||
assertEquals(
|
||||
vApp.getResourceAllocationByType().get(ResourceType.MEMORY).getVirtualQuantity(),
|
||||
memory);
|
||||
assertEquals(vApp.getResourceAllocationByType().get(ResourceType.VIRTUAL_DISK)
|
||||
.getVirtualQuantity(), memory * 8192);
|
||||
assertEquals(vApp.getSize(), vApp.getResourceAllocationByType()
|
||||
.get(ResourceType.VIRTUAL_DISK).getVirtualQuantity());
|
||||
}
|
||||
|
||||
private Task blockUntilSuccess(Task task) throws InterruptedException, ExecutionException,
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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.jclouds.vcloud.terremark.xml;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
import org.jclouds.http.functions.BaseHandlerTest;
|
||||
import org.jclouds.vcloud.terremark.domain.ResourceAllocation;
|
||||
import org.jclouds.vcloud.terremark.domain.ResourceType;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code ResourceAllocationHandler}
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Test(groups = "unit", testName = "vcloud.ResourceAllocationHandlerTest")
|
||||
public class ResourceAllocationHandlerTest extends BaseHandlerTest {
|
||||
|
||||
@BeforeTest
|
||||
@Override
|
||||
protected void setUpInjector() {
|
||||
super.setUpInjector();
|
||||
}
|
||||
|
||||
public void testApplyInputStream() {
|
||||
InputStream is = getClass().getResourceAsStream("/terremark/item.xml");
|
||||
|
||||
ResourceAllocation result = (ResourceAllocation) factory.create(
|
||||
injector.getInstance(ResourceAllocationHandler.class)).parse(is);
|
||||
assertEquals(result.getAddress(), new Integer(0));
|
||||
assertEquals(result.getDescription(), "SCSI Controller");
|
||||
assertEquals(result.getElementName(), "SCSI Controller 0");
|
||||
assertEquals(result.getInstanceID(), 3);
|
||||
assertEquals(result.getResourceSubType(), "lsilogic");
|
||||
assertEquals(result.getResourceType(), ResourceType.SCSI_CONTROLLER);
|
||||
assertEquals(result.getVirtualQuantity(), 1);
|
||||
|
||||
}
|
||||
}
|
|
@ -26,14 +26,26 @@ package org.jclouds.vcloud.terremark.xml;
|
|||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.net.InetAddress;
|
||||
import java.net.URI;
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
import org.jclouds.http.functions.BaseHandlerTest;
|
||||
import org.jclouds.rest.domain.internal.LinkImpl;
|
||||
import org.jclouds.vcloud.VCloudMediaType;
|
||||
import org.jclouds.vcloud.domain.VAppStatus;
|
||||
import org.jclouds.vcloud.terremark.domain.ResourceAllocation;
|
||||
import org.jclouds.vcloud.terremark.domain.ResourceType;
|
||||
import org.jclouds.vcloud.terremark.domain.VApp;
|
||||
import org.jclouds.vcloud.terremark.domain.VirtualSystem;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableSortedSet;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code TerremarkVAppHandler}
|
||||
*
|
||||
|
@ -54,7 +66,7 @@ public class TerremarkVAppHandlerTest extends BaseHandlerTest {
|
|||
VApp result = (VApp) factory.create(injector.getInstance(TerremarkVAppHandler.class)).parse(
|
||||
is);
|
||||
assertEquals(result.getName(), "adriantest");
|
||||
assertEquals(result.getStatus(), 0);
|
||||
assertEquals(result.getStatus(), VAppStatus.CREATING);
|
||||
|
||||
assertEquals(result.getSize(), 4);
|
||||
|
||||
|
@ -65,4 +77,64 @@ public class TerremarkVAppHandlerTest extends BaseHandlerTest {
|
|||
.create("https://services.vcloudexpress.terremark.com/api/v0.8/vdc/32")));
|
||||
|
||||
}
|
||||
|
||||
public void testGetVApp() throws UnknownHostException {
|
||||
InputStream is = getClass().getResourceAsStream("/terremark/get_vapp.xml");
|
||||
|
||||
VApp result = (VApp) factory.create(injector.getInstance(TerremarkVAppHandler.class)).parse(
|
||||
is);
|
||||
assertEquals(result.getName(), "adriantest1");
|
||||
assertEquals(result.getStatus(), VAppStatus.OFF);
|
||||
|
||||
assertEquals(result.getSize(), 4194304);
|
||||
assertEquals(result.getOperatingSystemDescription(), "Ubuntu Linux (32-bit)");
|
||||
|
||||
assertEquals(result.getLocation(), URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8/vapp/13850"));
|
||||
assertEquals(result.getType(), "application/vnd.vmware.vcloud.vApp+xml");
|
||||
assertEquals(result.getVDC(), new LinkImpl(VCloudMediaType.VDC_XML, URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8/vdc/32")));
|
||||
assertEquals(
|
||||
result.getComputeOptions(),
|
||||
new LinkImpl(
|
||||
MediaType.APPLICATION_XML,
|
||||
URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8/vapp/13850/options/compute")));
|
||||
assertEquals(
|
||||
result.getCustomizationOptions(),
|
||||
new LinkImpl(
|
||||
MediaType.APPLICATION_XML,
|
||||
URI
|
||||
.create("https://services.vcloudexpress.terremark.com/api/v0.8/vapp/13850/options/customization")));
|
||||
assertEquals(result.getSystem(), new VirtualSystem(null, null, null, null, null, null, null,
|
||||
null, null, null, null, "Virtual Hardware Family", 0, null, null, null, null, null,
|
||||
"adriantest1", "vmx-07"));
|
||||
assertEquals(result.getNetworkToAddresses().get("Internal"), ImmutableList.of(InetAddress
|
||||
.getByName("10.114.34.132")));
|
||||
|
||||
ResourceAllocation cpu = new ResourceAllocation(null, null, "hertz * 10^6", null, null, null,
|
||||
null, "Number of Virtual CPUs", "1 virtual CPU(s)", null, 1, null, null, null, null,
|
||||
null, null, null, ResourceType.VIRTUAL_CPU, 1, "count", null);
|
||||
ResourceAllocation controller = new ResourceAllocation(0, null, null, null, null, null, null,
|
||||
"SCSI Controller", "SCSI Controller 0", null, 3, null, null, null, null, null, null,
|
||||
"lsilogic", ResourceType.SCSI_CONTROLLER, 1, null, null);
|
||||
ResourceAllocation memory = new ResourceAllocation(null, null, "byte * 2^20", null, null,
|
||||
null, null, "Memory Size", "512MB of memory", null, 2, null, null, null, null, null,
|
||||
null, null, ResourceType.MEMORY, 512, "byte * 2^20", null);
|
||||
ResourceAllocation disk = new ResourceAllocation(null, 0, null, null, null, null, null, null,
|
||||
"Hard Disk 1", "4194304", 9, null, null, null, 3, null, null, null,
|
||||
ResourceType.VIRTUAL_DISK, 4194304, null, null);
|
||||
assertEquals(result.getResourceAllocations(), ImmutableSortedSet.of(cpu, controller, memory,
|
||||
disk));
|
||||
assertEquals(result.getResourceAllocationByType().get(ResourceType.VIRTUAL_CPU)
|
||||
.getVirtualQuantity(), 1);
|
||||
assertEquals(result.getResourceAllocationByType().get(ResourceType.SCSI_CONTROLLER)
|
||||
.getVirtualQuantity(), 1);
|
||||
assertEquals(result.getResourceAllocationByType().get(ResourceType.MEMORY)
|
||||
.getVirtualQuantity(), 512);
|
||||
assertEquals(result.getResourceAllocationByType().get(ResourceType.VIRTUAL_DISK)
|
||||
.getVirtualQuantity(), 4194304);
|
||||
assertEquals(result.getSize(), result.getResourceAllocationByType().get(
|
||||
ResourceType.VIRTUAL_DISK).getVirtualQuantity());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* 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.jclouds.vcloud.terremark.xml;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
import org.jclouds.http.functions.BaseHandlerTest;
|
||||
import org.jclouds.vcloud.terremark.domain.VirtualSystem;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code VirtualSystemHandler}
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Test(groups = "unit", testName = "vcloud.VirtualSystemHandlerTest")
|
||||
public class VirtualSystemHandlerTest extends BaseHandlerTest {
|
||||
|
||||
@BeforeTest
|
||||
@Override
|
||||
protected void setUpInjector() {
|
||||
super.setUpInjector();
|
||||
}
|
||||
|
||||
public void testApplyInputStream() {
|
||||
InputStream is = getClass().getResourceAsStream("/terremark/system.xml");
|
||||
|
||||
VirtualSystem result = (VirtualSystem) factory.create(
|
||||
injector.getInstance(VirtualSystemHandler.class)).parse(is);
|
||||
assertEquals(result.getElementName(), "Virtual Hardware Family");
|
||||
assertEquals(result.getInstanceID(), 0);
|
||||
assertEquals(result.getVirtualSystemIdentifier(), "adriantest1");
|
||||
assertEquals(result.getVirtualSystemType(), "vmx-07");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
|
||||
<q2:Item>
|
||||
<Address
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">0</Address>
|
||||
<AddressOnParent xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<AllocationUnits xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<AutomaticAllocation xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<AutomaticDeallocation xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<Caption xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<ConsumerVisibility xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<Description
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">SCSI Controller</Description>
|
||||
<ElementName
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">SCSI Controller 0</ElementName>
|
||||
<InstanceID
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">3</InstanceID>
|
||||
<Limit xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<MappingBehavior xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<OtherResourceType xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<Parent xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<PoolID xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<Reservation xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<ResourceSubType
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">lsilogic</ResourceSubType>
|
||||
<ResourceType
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">6</ResourceType>
|
||||
<VirtualQuantity xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<VirtualQuantityUnits xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
<Weight xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" />
|
||||
</q2:Item>
|
|
@ -0,0 +1,43 @@
|
|||
<q2:System>
|
||||
<AutomaticRecoveryAction xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<AutomaticShutdownAction xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<AutomaticStartupAction xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<AutomaticStartupActionDelay xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<AutomaticStartupActionSequenceNumber
|
||||
xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<Caption xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<ConfigurationDataRoot xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<ConfigurationFile xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<ConfigurationID xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<CreationTime xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<Description xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<ElementName
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData">Virtual Hardware Family</ElementName>
|
||||
<InstanceID
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData">0</InstanceID>
|
||||
<LogDataRoot xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<RecoveryFile xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<SnapshotDataRoot xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<SuspendDataRoot xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<SwapFileDataRoot xsi:nil="true"
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" />
|
||||
<VirtualSystemIdentifier
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData">adriantest1</VirtualSystemIdentifier>
|
||||
<VirtualSystemType
|
||||
xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData">vmx-07</VirtualSystemType>
|
||||
</q2:System>
|
Loading…
Reference in New Issue