Hi Imesh, Any idea where is CloudStackIaas class?
On Thu, Nov 13, 2014 at 8:26 PM, Nirmal Fernando <[email protected]> wrote: > Hi Imesh, > > You have removed the CloudStackIaas class?? > https://git-wip-us.apache.org/repos/asf?p=stratos.git;a=tree;f=components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases;h=c6d52c93f78927b5e8d07c5614f871a984297138;hb=HEAD > > On Thu, Nov 13, 2014 at 5:59 PM, <[email protected]> wrote: > >> Repository: stratos >> Updated Branches: >> refs/heads/master a80085efa -> e04f271ce >> >> >> Fixing file name mismatch issue >> >> >> Project: http://git-wip-us.apache.org/repos/asf/stratos/repo >> Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/e04f271c >> Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/e04f271c >> Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/e04f271c >> >> Branch: refs/heads/master >> Commit: e04f271ceb9d861170fe47841d762e8ff84cb17f >> Parents: a80085e >> Author: Imesh Gunaratne <[email protected]> >> Authored: Thu Nov 13 22:29:06 2014 +0530 >> Committer: Imesh Gunaratne <[email protected]> >> Committed: Thu Nov 13 22:29:06 2014 +0530 >> >> ---------------------------------------------------------------------- >> .../cloud/controller/iaases/CloudStackIaas.java | 540 ------------------- >> .../validate/CloudStackPartitionValidator.java | 53 -- >> 2 files changed, 593 deletions(-) >> ---------------------------------------------------------------------- >> >> >> >> http://git-wip-us.apache.org/repos/asf/stratos/blob/e04f271c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/CloudStackIaas.java >> ---------------------------------------------------------------------- >> diff --git >> a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/CloudStackIaas.java >> b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/CloudStackIaas.java >> deleted file mode 100644 >> index c38ce0a..0000000 >> --- >> a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/CloudStackIaas.java >> +++ /dev/null >> @@ -1,540 +0,0 @@ >> -package org.apache.stratos.cloud.controller.iaases; >> - >> - >> -import org.apache.commons.lang.StringUtils; >> -import org.apache.commons.logging.Log; >> -import org.apache.commons.logging.LogFactory; >> -import >> org.apache.stratos.cloud.controller.exception.CloudControllerException; >> -import >> org.apache.stratos.cloud.controller.exception.InvalidHostException; >> -import >> org.apache.stratos.cloud.controller.exception.InvalidRegionException; >> -import >> org.apache.stratos.cloud.controller.exception.InvalidZoneException; >> -import org.apache.stratos.cloud.controller.interfaces.Iaas; >> -import >> org.apache.stratos.cloud.controller.jcloud.ComputeServiceBuilderUtil; >> -import org.apache.stratos.cloud.controller.pojo.IaasProvider; >> -import org.apache.stratos.cloud.controller.util.CloudControllerConstants; >> -import >> org.apache.stratos.cloud.controller.validate.CloudStackPartitionValidator; >> -import >> org.apache.stratos.cloud.controller.validate.interfaces.PartitionValidator; >> -import org.jclouds.cloudstack.CloudStackApi; >> -import org.jclouds.cloudstack.compute.options.CloudStackTemplateOptions; >> -import org.jclouds.cloudstack.domain.*; >> -import org.jclouds.cloudstack.features.VolumeApi; >> -import org.jclouds.cloudstack.options.ListPublicIPAddressesOptions; >> -import org.jclouds.cloudstack.options.ListZonesOptions; >> -import org.jclouds.compute.ComputeServiceContext; >> -import org.jclouds.compute.domain.NodeMetadata; >> -import org.jclouds.compute.domain.Template; >> -import org.jclouds.compute.domain.TemplateBuilder; >> -import org.jclouds.compute.options.TemplateOptions; >> -import org.jclouds.domain.Location; >> - >> -import java.util.Arrays; >> -import java.util.HashMap; >> -import java.util.Map; >> -import java.util.Set; >> -import java.util.concurrent.TimeoutException; >> - >> -public class CloudStackIaas extends Iaas { >> - >> - private static final Log log = >> LogFactory.getLog(CloudStackIaas.class); >> - >> - public CloudStackIaas(IaasProvider iaasProvider) { >> - super(iaasProvider); >> - } >> - >> - @Override >> - public void buildComputeServiceAndTemplate() { >> - // builds and sets Compute Service >> - >> ComputeServiceBuilderUtil.buildDefaultComputeService(getIaasProvider()); >> - // builds and sets Template >> - buildTemplate(); >> - } >> - >> - @Override >> - public void buildTemplate() { >> - >> - IaasProvider iaasInfo = getIaasProvider(); >> - >> - //if compute service is not available >> - if (iaasInfo.getComputeService() == null) { >> - String msg = "Compute service is null for IaaS provider: " >> - + iaasInfo.getName(); >> - log.error(msg); >> - throw new CloudControllerException(msg); >> - } >> - >> - //create templateBuilder >> - TemplateBuilder templateBuilder = iaasInfo.getComputeService() >> - .templateBuilder(); >> - >> - //**SET PROPERTIES TO templateBuilder OBJECT**// >> - >> - /** >> - * PROPERTY - 1 >> - * set image id specified >> - */ >> - templateBuilder.imageId(iaasInfo.getImage()); >> - >> - /** >> - * PROPERTY-2 >> - * if user has specified a zone in cloud-controller.xml, set >> the zone into templateBuilder object >> - * (user should provide the zone id for this, because zone name >> is not unique in cloudstack) >> - */ >> - if >> (iaasInfo.getProperty(CloudControllerConstants.AVAILABILITY_ZONE) != null) { >> - Set<? extends Location> locations = >> iaasInfo.getComputeService().listAssignableLocations(); >> - for (Location location : locations) { >> - if >> (location.getId().equals(iaasInfo.getProperty(CloudControllerConstants.AVAILABILITY_ZONE))) >> { >> - //if the zone is valid set the zone to >> templateBuilder Object >> - templateBuilder.locationId(location.getId()); >> - log.info("Zone has been set as " + >> iaasInfo.getProperty(CloudControllerConstants.AVAILABILITY_ZONE) >> - + " with id: " + location.getId()); >> - break; >> - } >> - } >> - } >> - >> - /** >> - * PROPERTY-3 >> - * if user has specified an instance type in >> cloud-controller.xml, set the instance type into templateBuilder >> - * object.(service offering) >> - *Important:Specify the Service Offering type ID. Not the name. >> Because the name is not unique in cloudstack. >> - */ >> - if (iaasInfo.getProperty(CloudControllerConstants.INSTANCE_TYPE) >> != null) { >> - >> templateBuilder.hardwareId(iaasInfo.getProperty(CloudControllerConstants.INSTANCE_TYPE)); >> - } >> - >> - //build the template >> - Template template = templateBuilder.build(); >> - >> - /**if you wish to auto assign IPs, instance spawning call should >> be >> - * blocking, but if you >> - * wish to assign IPs manually, it can be non-blocking. >> - * is auto-assign-ip mode or manual-assign-ip mode? >> - */ >> - boolean blockUntilRunning = Boolean.parseBoolean(iaasInfo >> - .getProperty(CloudControllerConstants.AUTO_ASSIGN_IP)); >> - template.getOptions().as(TemplateOptions.class) >> - .blockUntilRunning(blockUntilRunning); >> - >> - // this is required in order to avoid creation of additional >> security >> - // groups by Jclouds. >> - template.getOptions().as(TemplateOptions.class) >> - .inboundPorts(new int[]{}); >> - >> - >> - //**SET CLOUDSTACK SPECIFIC PROPERTIES TO TEMPLATE OBJECT**// >> - >> - //set security group - If you are using basic zone >> - if >> (iaasInfo.getProperty(CloudControllerConstants.SECURITY_GROUP_IDS) != null) >> { >> - template.getOptions() >> - .as(CloudStackTemplateOptions.class) >> - >> .securityGroupIds(Arrays.asList(iaasInfo.getProperty(CloudControllerConstants.SECURITY_GROUP_IDS) >> - >> .split(CloudControllerConstants.ENTRY_SEPARATOR))); >> - } >> - >> - >> - /** >> - * set network ID - If you are using advanced zone >> - * in cloudstack sometimes we get unautorized exception if we >> didn't specify the >> - * domain ID and user name >> - */ >> - if (iaasInfo.getProperty(CloudControllerConstants.NETWORK_IDS) >> != null) { >> - template.getOptions() >> - .as(CloudStackTemplateOptions.class) >> - >> .networks(Arrays.asList(iaasInfo.getProperty(CloudControllerConstants.NETWORK_IDS) >> - >> .split(CloudControllerConstants.ENTRY_SEPARATOR))); >> - } >> - >> - //set user name >> - if (iaasInfo.getProperty(CloudControllerConstants.USER_NAME) != >> null) { >> - template.getOptions().as(CloudStackTemplateOptions.class) >> - >> .account(iaasInfo.getProperty(CloudControllerConstants.USER_NAME)); >> - } >> - //set domain ID >> - if (iaasInfo.getProperty(CloudControllerConstants.DOMAIN_ID) != >> null) { >> - template.getOptions().as(CloudStackTemplateOptions.class) >> - >> .domainId(iaasInfo.getProperty(CloudControllerConstants.DOMAIN_ID)); >> - } >> - >> - /** >> - *Set key pair >> - * in cloudstack sometimes we get unauthorized exception if we >> didn't specify the >> - * domain ID and user name >> - */ >> - if (iaasInfo.getProperty(CloudControllerConstants.KEY_PAIR) != >> null) { >> - template.getOptions().as(CloudStackTemplateOptions.class) >> - >> .keyPair(iaasInfo.getProperty(CloudControllerConstants.KEY_PAIR)); >> - } >> - >> - // ability to define tags >> - if (iaasInfo.getProperty(CloudControllerConstants.TAGS) != null) >> { >> - template.getOptions() >> - .as(CloudStackTemplateOptions.class) >> - >> .tags(Arrays.asList(iaasInfo.getProperty(CloudControllerConstants.TAGS) >> - >> .split(CloudControllerConstants.ENTRY_SEPARATOR))); >> - } >> - //set disk offering to the instance >> - if (iaasInfo.getProperty(CloudControllerConstants.DISK_OFFERING) >> != null) { >> - template.getOptions() >> - .as(CloudStackTemplateOptions.class) >> - >> .diskOfferingId(iaasInfo.getProperty(CloudControllerConstants.DISK_OFFERING)); >> - } >> - >> - // set Template >> - iaasInfo.setTemplate(template); >> - } >> - >> - @Override >> - public void setDynamicPayload() { >> - IaasProvider iaasInfo = getIaasProvider(); >> - if (iaasInfo.getTemplate() != null && iaasInfo.getPayload() != >> null) { >> - >> iaasInfo.getTemplate().getOptions().as(CloudStackTemplateOptions.class) >> - >> .userMetadata(convertByteArrayToHashMap(iaasInfo.getPayload())); >> - } >> - } >> - >> - /** >> - * IMPORTANT >> - * In cloudstack we can assign public IPs, if we are using an >> advanced zone only. If we are using a basic zone >> - * we cannot assign public ips. >> - * <p/> >> - * When we use an advanced zone, a public IP address will get >> automatically assigned to the vm. So we don't need >> - * to find an unallocated IP address and assign that address to the >> vm. If you are using a basic zone you cannot >> - * assign public IPs >> - * <p/> >> - * So this method will find the IP that has been assigned to the vm >> and return it. >> - */ >> - @Override >> - public String associateAddress(NodeMetadata node) { >> - >> - IaasProvider iaasInfo = getIaasProvider(); >> - ComputeServiceContext context = >> iaasInfo.getComputeService().getContext(); >> - CloudStackApi cloudStackApi = >> context.unwrapApi(CloudStackApi.class); >> - String ip = null; >> - >> - // get all allocated IPs >> - ListPublicIPAddressesOptions listPublicIPAddressesOptions = new >> ListPublicIPAddressesOptions(); >> - >> listPublicIPAddressesOptions.zoneId(iaasInfo.getProperty(CloudControllerConstants.AVAILABILITY_ZONE)); >> - >> - Set<PublicIPAddress> publicIPAddresses = >> cloudStackApi.getAddressApi() >> - .listPublicIPAddresses(listPublicIPAddressesOptions); >> - >> - String id = node.getProviderId(); //vm ID >> - >> - for (PublicIPAddress publicIPAddress : publicIPAddresses) { >> - if (publicIPAddress.getVirtualMachineId().equals(id)) { >> //check whether this instance has >> - // already got an public ip or not >> - ip = publicIPAddress.getIPAddress(); //A public ip has >> been successfully assigned to the vm >> - log.info("Successfully associated an IP address " + ip >> - + " for node with id: " + node.getId()); >> - break; >> - } >> - >> - } >> - >> - if (ip == null || ip.isEmpty()) { //IP has not been successfully >> assigned to VM(That means there are >> - // no more IPs available for the VM) >> - String msg = "No address associated for node with id: " + >> node.getId(); >> - log.warn(msg); >> - throw new CloudControllerException(msg); >> - } >> - >> - return ip; >> - } >> - >> - @Override >> - public String associatePredefinedAddress(NodeMetadata node, String >> ip) { >> - return ""; >> - } >> - >> - @Override >> - public void releaseAddress(String ip) { >> - IaasProvider iaasInfo = getIaasProvider(); >> - ComputeServiceContext context = >> iaasInfo.getComputeService().getContext(); >> - CloudStackApi cloudStackApi = >> context.unwrapApi(CloudStackApi.class); >> - cloudStackApi.getAddressApi().disassociateIPAddress(ip); >> - } >> - >> - @Override >> - public boolean createKeyPairFromPublicKey(String region, String >> keyPairName, String publicKey) { >> - >> - IaasProvider iaasInfo = getIaasProvider(); >> - ComputeServiceContext context = >> iaasInfo.getComputeService().getContext(); >> - CloudStackApi cloudStackApi = >> context.unwrapApi(CloudStackApi.class); >> - SshKeyPair sshKeyPair = >> cloudStackApi.getSSHKeyPairApi().createSSHKeyPair(keyPairName); >> - >> - if (sshKeyPair != null) { >> - >> - >> iaasInfo.getTemplate().getOptions().as(CloudStackTemplateOptions.class) >> - .keyPair(sshKeyPair.getName()); >> - >> - log.info("A key-pair is created successfully - Key Pair >> Name: " + sshKeyPair.getName()); >> - return true; >> - } >> - log.error("Key-pair is unable to create"); >> - return false; >> - } >> - >> - @Override >> - public boolean isValidRegion(String region) throws >> InvalidRegionException { >> - >> - IaasProvider iaasInfo = getIaasProvider(); >> - //no such method in Jclouds cloudstack api >> - String msg = "Invalid region: " + region + " in the iaas: " + >> iaasInfo.getType(); >> - log.error(msg); >> - throw new InvalidRegionException(msg); >> - } >> - >> - @Override >> - public boolean isValidZone(String region, String zone) throws >> InvalidZoneException { >> - >> - IaasProvider iaasInfo = getIaasProvider(); >> - ComputeServiceContext context = >> iaasInfo.getComputeService().getContext(); >> - CloudStackApi cloudStackApi = >> context.unwrapApi(CloudStackApi.class); >> - ListZonesOptions listZonesOptions = new ListZonesOptions(); >> - listZonesOptions.available(true); >> - Set<Zone> zoneSet = >> cloudStackApi.getZoneApi().listZones(listZonesOptions); >> - >> - for (org.jclouds.cloudstack.domain.Zone configuredZone : >> zoneSet) { >> - if (configuredZone.getName().equalsIgnoreCase(zone)) { >> - return true; >> - } >> - } >> - String msg = "Invalid zone: " + zone + " in the iaas: " + >> iaasInfo.getType(); >> - log.error(msg); >> - throw new InvalidZoneException(msg); >> - } >> - >> - @Override >> - public boolean isValidHost(String zone, String host) throws >> InvalidHostException { >> - >> - IaasProvider iaasInfo = getIaasProvider(); >> - // there's no such method in jclouds cloustack api >> - String msg = "Invalid host: " + host + " in the zone: " + zone + >> " and of the iaas: " + iaasInfo.getType(); >> - log.error(msg); >> - throw new InvalidHostException(msg); >> - >> - } >> - >> - @Override >> - public PartitionValidator getPartitionValidator() { >> - return new CloudStackPartitionValidator(); >> - } >> - >> - @Override >> - public String createVolume(int sizeGB, String snapshotId) { >> - >> - //todo return volume ID if volume is created >> - IaasProvider iaasInfo = getIaasProvider(); >> - ComputeServiceContext context = iaasInfo.getComputeService() >> - .getContext(); >> - >> - String zone = ComputeServiceBuilderUtil.extractZone(iaasInfo); >> - String diskOfferingID = >> iaasInfo.getTemplate().getOptions().as(CloudStackTemplateOptions.class) >> - .getDiskOfferingId(); >> - if (zone == null && diskOfferingID == null) { >> - log.error("Could not create a volume in the , [zone] : " + >> zone + " of Iaas : " + iaasInfo); >> - return null; >> - } >> - >> - VolumeApi volumeApi = >> context.unwrapApi(CloudStackApi.class).getVolumeApi(); >> - >> - Volume volume; >> - if (StringUtils.isEmpty(snapshotId)) { >> - if (log.isInfoEnabled()) { >> - log.info("Creating a volume in the zone " + zone); >> - } >> - >> - //cloudstack jcloud api does not return a volume object >> - volumeApi.createVolumeFromCustomDiskOfferingInZone(null, >> diskOfferingID, zone, sizeGB); >> - >> - // volume = >> blockStoreApi.createVolumeInAvailabilityZone(zone, sizeGB); >> - } else { >> - if (log.isInfoEnabled()) { >> - log.info("Creating a volume in the zone " + zone + " >> from the snapshot " + snapshotId); >> - } >> - volumeApi.createVolumeFromSnapshotInZone(null, >> diskOfferingID, zone); >> - } >> - >> - return null; >> - } >> - >> - @Override >> - public String attachVolume(String instanceId, String volumeId, >> String deviceName) { >> - IaasProvider iaasInfo = getIaasProvider(); >> - ComputeServiceContext context = iaasInfo.getComputeService() >> - .getContext(); >> - CloudStackApi cloudStackApi = >> context.unwrapApi(CloudStackApi.class); >> - >> - //get volume >> - org.jclouds.cloudstack.domain.Volume volume = >> cloudStackApi.getVolumeApi().getVolume(volumeId); >> - >> - //get current volume state >> - Volume.State volumeState = volume.getState(); >> - >> - if (log.isDebugEnabled()) { >> - log.debug("Volume " + volumeId + " is in state " + >> volumeState); >> - } >> - >> - //if volume is not available, not allocated or cannot use >> - //volume state ALLOCATED means that volume has not been >> attached to any instance. >> - >> - //TODO there is an error with logic. >> - if (!(volumeState == Volume.State.ALLOCATED || volumeState == >> Volume.State.CREATING >> - || volumeState == Volume.State.READY)) { >> - log.error(String.format("Volume %s can not be attached. >> Volume status is %s", volumeId, volumeState)); >> - } >> - >> - //check whether the account of volume and instance is same >> - if >> (!volume.getAccount().equals(cloudStackApi.getVirtualMachineApi() >> - .getVirtualMachine(instanceId).getAccount())) { >> - log.error(String.format("Volume %s can not be attached. >> Instance account and Volume account " + >> - "are not the same ", volumeId)); >> - } >> - >> - boolean volumeBecameAvailable = false, volumeBecameAttached = >> false; >> - >> - try { >> - if (volumeState == Volume.State.CREATING) { >> - >> - volumeBecameAvailable = waitForStatus(volumeId, >> Volume.State.ALLOCATED, 5); >> - >> - } else if (volumeState == Volume.State.READY) { >> - volumeBecameAvailable = true; >> - } >> - >> - } catch (TimeoutException e) { >> - log.error("[Volume ID] " + volumeId + "did not become >> ALLOCATED within expected timeout"); >> - } >> - >> - //if volume state is 'ALLOCATED' >> - if (volumeBecameAvailable) { >> - >> - //attach volume into instance >> - cloudStackApi.getVolumeApi().attachVolume(volumeId, >> instanceId); >> - >> - try { >> - volumeBecameAttached = waitForStatus(volumeId, >> Volume.State.READY, 2); >> - } catch (TimeoutException e) { >> - log.error("[Volume ID] " + volumeId + "did not become >> READY within expected timeout"); >> - } >> - } >> - >> - try { >> - // waiting 5seconds till volumes are actually attached. >> - Thread.sleep(5000); >> - } catch (InterruptedException ignored) { >> - >> - } >> - >> - //If volume state is not 'READY' >> - if (!volumeBecameAttached) { >> - log.error(String.format("[Volume ID] %s attachment is >> called, but not yet became attached", volumeId)); >> - } >> - >> - log.info(String.format("Volume [id]: %s attachment for instance >> [id]: %s was successful [status]: Attaching." + >> - " of Iaas : %s", volumeId, instanceId, iaasInfo)); >> - >> - return "Attaching"; >> - >> - } >> - >> - @Override >> - public void detachVolume(String instanceId, String volumeId) { >> - >> - >> - IaasProvider iaasInfo = getIaasProvider(); >> - >> - ComputeServiceContext context = iaasInfo.getComputeService() >> - .getContext(); >> - >> - if (log.isDebugEnabled()) { >> - log.debug(String.format("Starting to detach volume %s from >> the instance %s", volumeId, instanceId)); >> - } >> - >> - CloudStackApi cloudStackApi = >> context.unwrapApi(CloudStackApi.class); >> - >> - cloudStackApi.getVolumeApi().detachVolume(volumeId); >> - >> - try { >> - //TODO this is true only for newly created volumes >> - if (waitForStatus(volumeId, Volume.State.ALLOCATED, 5)) { >> - log.info(String.format("Detachment of Volume [id]: %s >> from instance [id]: %s was successful of Iaas : %s", volumeId, instanceId, >> iaasInfo)); >> - } >> - } catch (TimeoutException e) { >> - log.error(String.format("Detachment of Volume [id]: %s from >> instance [id]: %s was unsuccessful. [volume Status] : %s", volumeId, >> instanceId, iaasInfo)); >> - } >> - >> - } >> - >> - @Override >> - public void deleteVolume(String volumeId) { >> - IaasProvider iaasInfo = getIaasProvider(); >> - ComputeServiceContext context = iaasInfo.getComputeService() >> - .getContext(); >> - CloudStackApi cloudStackApi = >> context.unwrapApi(CloudStackApi.class); >> - cloudStackApi.getVolumeApi().deleteVolume(volumeId); >> - log.info("Deletion of Volume [id]: " + volumeId + " was >> successful. " >> - + " of Iaas : " + iaasInfo); >> - } >> - >> - @Override >> - public String getIaasDevice(String device) {//todo implement this >> method(auto generated method) >> - return null; >> - } >> - >> - private boolean waitForStatus(String volumeId, Volume.State >> expectedStatus, int timeoutInMilliseconds) throws TimeoutException { >> - int timeout = 1000 * 60 * timeoutInMilliseconds; >> - long timout = System.currentTimeMillis() + timeout; >> - >> - IaasProvider iaasInfo = getIaasProvider(); >> - ComputeServiceContext context = >> iaasInfo.getComputeService().getContext(); >> - CloudStackApi cloudStackApi = >> context.unwrapApi(CloudStackApi.class); >> - >> - //get volume >> - org.jclouds.cloudstack.domain.Volume volume = >> cloudStackApi.getVolumeApi().getVolume(volumeId); >> - >> - Volume.State volumeState = volume.getState(); >> - >> - while (volumeState != expectedStatus) { >> - try { >> - if (log.isDebugEnabled()) { >> - log.debug(String.format("Volume %s is still NOT in >> %s. Current State=%s", volumeId, expectedStatus, volumeState)); >> - } >> - if (volumeState == Volume.State.FAILED || volumeState == >> Volume.State.DESTROYED || volumeState == Volume.State.UNRECOGNIZED) { >> - log.error("Volume " + volumeId + " is in state" + >> volumeState); >> - return false; >> - } >> - >> - Thread.sleep(1000); >> - volumeState = volume.getState(); >> - if (System.currentTimeMillis() > timout) { >> - throw new TimeoutException(); >> - } >> - } catch (InterruptedException e) { >> - // Ignoring the exception >> - } >> - } >> - if (log.isDebugEnabled()) { >> - log.debug(String.format("Volume %s status became %s", >> volumeId, expectedStatus)); >> - } >> - >> - return true; >> - } >> - >> - private Map<String, String> convertByteArrayToHashMap(byte[] >> byteArray) { >> - >> - Map<String, String> map = new HashMap<String, String>(); >> - >> - String stringFromByteArray = new String(byteArray); >> - String[] keyValuePairs = stringFromByteArray.split(","); >> - >> - for (String keyValuePair : keyValuePairs) { >> - String[] keyValue = keyValuePair.split("="); >> - if (keyValue.length > 1) { >> - map.put(keyValue[0], keyValue[1]); >> - } >> - } >> - >> - return map; >> - } >> -} >> >> >> http://git-wip-us.apache.org/repos/asf/stratos/blob/e04f271c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/CloudStackPartitionValidator.java >> ---------------------------------------------------------------------- >> diff --git >> a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/CloudStackPartitionValidator.java >> b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/CloudStackPartitionValidator.java >> deleted file mode 100644 >> index 4f3fbce..0000000 >> --- >> a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/CloudStackPartitionValidator.java >> +++ /dev/null >> @@ -1,53 +0,0 @@ >> -package org.apache.stratos.cloud.controller.validate; >> - >> -import org.apache.commons.logging.Log; >> -import org.apache.commons.logging.LogFactory; >> -import >> org.apache.stratos.cloud.controller.exception.InvalidPartitionException; >> -import org.apache.stratos.cloud.controller.interfaces.Iaas; >> -import org.apache.stratos.cloud.controller.pojo.IaasProvider; >> -import org.apache.stratos.cloud.controller.util.CloudControllerConstants; >> -import org.apache.stratos.cloud.controller.util.CloudControllerUtil; >> -import >> org.apache.stratos.cloud.controller.validate.interfaces.PartitionValidator; >> -import org.apache.stratos.messaging.domain.topology.Scope; >> - >> -import java.util.Properties; >> - >> - >> -public class CloudStackPartitionValidator implements PartitionValidator { >> - >> - >> - private static final Log log = >> LogFactory.getLog(AWSEC2PartitionValidator.class); >> - private IaasProvider iaasProvider; >> - private Iaas iaas; >> - >> - >> - @Override >> - public void setIaasProvider(IaasProvider iaas) { >> - this.iaasProvider = iaas; >> - this.iaas = iaas.getIaas(); >> - } >> - >> - @Override >> - public IaasProvider validate(String partitionId, Properties >> properties) throws InvalidPartitionException { >> - >> - try { >> - IaasProvider updatedIaasProvider = new >> IaasProvider(iaasProvider); >> - Iaas updatedIaas = >> CloudControllerUtil.getIaas(updatedIaasProvider); >> - updatedIaas.setIaasProvider(updatedIaasProvider); >> - >> - if (properties.containsKey(Scope.zone.toString())) { >> - String zone = >> properties.getProperty(Scope.zone.toString()); >> - iaas.isValidZone(null, zone); >> - >> updatedIaasProvider.setProperty(CloudControllerConstants.AVAILABILITY_ZONE, >> zone); >> - updatedIaas = >> CloudControllerUtil.getIaas(updatedIaasProvider); >> - updatedIaas.setIaasProvider(updatedIaasProvider); >> - } >> - >> - } catch (Exception ex) { >> - String msg = "Invalid Partition Detected : "+partitionId+". >> Cause: "+ex.getMessage(); >> - log.error(msg, ex); >> - throw new InvalidPartitionException(msg, ex); >> - } >> - return iaasProvider; >> - } >> -} >> >> > > > -- > Best Regards, > Nirmal > > Nirmal Fernando. > PPMC Member & Committer of Apache Stratos, > Senior Software Engineer, WSO2 Inc. > > Blog: http://nirmalfdo.blogspot.com/ > -- Best Regards, Nirmal Nirmal Fernando. PPMC Member & Committer of Apache Stratos, Senior Software Engineer, WSO2 Inc. Blog: http://nirmalfdo.blogspot.com/
