Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Christophe Hamerling 2012-01-16 23:50:24 +01:00
commit 61ff64c8ce
156 changed files with 1214 additions and 205 deletions

View File

@ -7,9 +7,9 @@ two abstractions at the moment: compute and blobstore. compute helps you
bootstrap machines in the cloud. blobstore helps you manage key-value
data.
our current version is 1.2.1
our next maintenance version is 1.2.2-SNAPSHOT
our dev version is 1.3.0-SNAPSHOT
our current version is 1.3.0
our next maintenance version is 1.3.1-SNAPSHOT
our dev version is 1.4.0-SNAPSHOT
check out our examples site! https://github.com/jclouds/jclouds-examples
@ -112,8 +112,8 @@ Compute Example (Clojure):
(RunScriptOptions$Builder/wrapInInitScript false))
Downloads:
* release notes: http://code.google.com/p/jclouds/wiki/ReleaseNotes111
* installation guide: http://code.google.com/p/jclouds/wiki/Installation
* release notes: http://www.jclouds.org/documentation/releasenotes/1.3
* installation guide: http://www.jclouds.org/documentation/userguide/installation-guide
* maven repo: http://repo2.maven.org/maven2 (maven central - the default repository)
* snapshot repo: https://oss.sonatype.org/content/repositories/snapshots
@ -129,6 +129,6 @@ Links:
## License
Copyright (C) 2009-2011 jclouds, Inc.
Copyright (C) 2009-2012 jclouds, Inc.
Licensed under the Apache License, Version 2.0

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-all</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-allblobstore</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-allcompute</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-allloadbalancer</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-antcontrib</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -29,6 +29,7 @@ import org.jclouds.cloudstack.features.GlobalOfferingAsyncClient;
import org.jclouds.cloudstack.features.GlobalStoragePoolAsyncClient;
import org.jclouds.cloudstack.features.GlobalUsageAsyncClient;
import org.jclouds.cloudstack.features.GlobalUserAsyncClient;
import org.jclouds.cloudstack.features.GlobalZoneAsyncClient;
import org.jclouds.rest.annotations.Delegate;
/**
@ -107,4 +108,11 @@ public interface CloudStackGlobalAsyncClient extends CloudStackDomainAsyncClient
@Delegate
@Override
GlobalDomainAsyncClient getDomainClient();
/**
* Provides asynchronous access to Zone
*/
@Delegate
@Override
GlobalZoneAsyncClient getZoneClient();
}

View File

@ -30,6 +30,7 @@ import org.jclouds.cloudstack.features.GlobalOfferingClient;
import org.jclouds.cloudstack.features.GlobalStoragePoolClient;
import org.jclouds.cloudstack.features.GlobalUsageClient;
import org.jclouds.cloudstack.features.GlobalUserClient;
import org.jclouds.cloudstack.features.GlobalZoneClient;
import org.jclouds.concurrent.Timeout;
import org.jclouds.rest.annotations.Delegate;
@ -110,4 +111,11 @@ public interface CloudStackGlobalClient extends CloudStackDomainClient {
@Delegate
@Override
GlobalDomainClient getDomainClient();
/**
* Provides synchronous access to Zone
*/
@Delegate
@Override
GlobalZoneClient getZoneClient();
}

View File

@ -70,6 +70,8 @@ import org.jclouds.cloudstack.features.GlobalUsageAsyncClient;
import org.jclouds.cloudstack.features.GlobalUsageClient;
import org.jclouds.cloudstack.features.GlobalUserAsyncClient;
import org.jclouds.cloudstack.features.GlobalUserClient;
import org.jclouds.cloudstack.features.GlobalZoneAsyncClient;
import org.jclouds.cloudstack.features.GlobalZoneClient;
import org.jclouds.cloudstack.features.GuestOSAsyncClient;
import org.jclouds.cloudstack.features.GuestOSClient;
import org.jclouds.cloudstack.features.HypervisorAsyncClient;
@ -131,6 +133,7 @@ public class CloudStackRestClientModule extends RestClientModule<CloudStackClien
public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>> builder()//
.put(ZoneClient.class, ZoneAsyncClient.class)//
.put(GlobalZoneClient.class, GlobalZoneAsyncClient.class)//
.put(TemplateClient.class, TemplateAsyncClient.class)//
.put(OfferingClient.class, OfferingAsyncClient.class)//
.put(NetworkClient.class, NetworkAsyncClient.class)//

View File

@ -18,6 +18,8 @@
*/
package org.jclouds.cloudstack.domain;
import static com.google.common.base.CaseFormat.UPPER_CAMEL;
import static com.google.common.base.CaseFormat.UPPER_UNDERSCORE;
import static com.google.common.base.Preconditions.checkNotNull;
import javax.annotation.Nullable;
@ -27,9 +29,29 @@ import com.google.common.collect.ImmutableList;
import com.google.gson.annotations.SerializedName;
/**
* @author Adrian Cole
* @author Adrian Cole, Andrei Savu
*/
public class Zone implements Comparable<Zone> {
public static enum AllocationState {
DISABLED,
ENABLED,
UNKNOWN;
public static AllocationState fromValue(String value) {
try{
return valueOf(value.toUpperCase());
} catch (IllegalArgumentException e) {
return UNKNOWN;
}
}
@Override
public String toString() {
return UPPER_UNDERSCORE.to(UPPER_CAMEL, name());
}
}
public static Builder builder() {
return new Builder();
}
@ -47,7 +69,7 @@ public class Zone implements Comparable<Zone> {
private NetworkType networkType;
private String VLAN;
private boolean securityGroupsEnabled;
private String allocationState;
private AllocationState allocationState;
private String dhcpProvider;
private String zoneToken;
@ -112,7 +134,7 @@ public class Zone implements Comparable<Zone> {
}
public Builder allocationState(String allocationState) {
public Builder allocationState(AllocationState allocationState) {
this.allocationState = allocationState;
return this;
}
@ -159,8 +181,7 @@ public class Zone implements Comparable<Zone> {
@SerializedName("securitygroupsenabled")
private boolean securityGroupsEnabled;
@SerializedName("allocationstate")
//TODO Change to enum?
private String allocationState;
private AllocationState allocationState;
@SerializedName("dhcpprovider")
private String dhcpProvider;
@SerializedName("zonetoken")
@ -175,7 +196,7 @@ public class Zone implements Comparable<Zone> {
public Zone(long id, String description, String displayText, List<String> DNS, String domain, long domainId,
String guestCIDRAddress, List<String> internalDNS, String name, NetworkType networkType,
String vLAN, boolean securityGroupsEnabled, String allocationState, String dhcpProvider, String zoneToken) {
String vLAN, boolean securityGroupsEnabled, AllocationState allocationState, String dhcpProvider, String zoneToken) {
this.id = id;
this.description = description;
this.displayText = displayText;
@ -293,7 +314,7 @@ public class Zone implements Comparable<Zone> {
/**
* @return the allocation state of the cluster
*/
public String getAllocationState() {
public AllocationState getAllocationState() {
return allocationState;
}

View File

@ -0,0 +1,81 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.cloudstack.features;
import com.google.common.util.concurrent.ListenableFuture;
import org.jclouds.cloudstack.domain.NetworkType;
import org.jclouds.cloudstack.domain.Zone;
import org.jclouds.cloudstack.filters.QuerySigner;
import org.jclouds.cloudstack.options.CreateZoneOptions;
import org.jclouds.cloudstack.options.UpdateZoneOptions;
import org.jclouds.rest.annotations.ExceptionParser;
import org.jclouds.rest.annotations.QueryParams;
import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.SelectJson;
import org.jclouds.rest.functions.ReturnNullOnNotFoundOr404;
import org.jclouds.rest.functions.ReturnVoidOnNotFoundOr404;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
/**
* Provides asynchronous access to CloudStack Account features available to Global
* Admin users.
*
* @author Adrian Cole, Andrei Savu
* @see <a href=
* "http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html"
* />
*/
@RequestFilters(QuerySigner.class)
@QueryParams(keys = "response", values = "json")
public interface GlobalZoneAsyncClient extends ZoneAsyncClient {
/**
* @see GlobalZoneClient#createZone
*/
@GET
@QueryParams(keys = "command", values = "createZone")
@SelectJson("zone")
@Consumes(MediaType.APPLICATION_JSON)
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture<Zone> createZone(@QueryParam("name") String name, @QueryParam("networktype") NetworkType networkType,
@QueryParam("dns1") String externalDns1, @QueryParam("internaldns1") String internalDns1, CreateZoneOptions... options);
/**
* @see GlobalZoneClient#updateZone
*/
@GET
@QueryParams(keys = "command", values = "updateZone")
@SelectJson("zone")
@Consumes(MediaType.APPLICATION_JSON)
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture<Zone> updateZone(@QueryParam("id") long id, UpdateZoneOptions... options);
/**
* @see GlobalZoneClient#deleteZone
*/
@GET
@QueryParams(keys = "command", values = "deleteZone")
@Consumes(MediaType.APPLICATION_JSON)
@ExceptionParser(ReturnVoidOnNotFoundOr404.class)
ListenableFuture<Void> deleteZone(@QueryParam("id") long id);
}

View File

@ -0,0 +1,79 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.cloudstack.features;
import org.jclouds.cloudstack.domain.NetworkType;
import org.jclouds.cloudstack.domain.Zone;
import org.jclouds.cloudstack.options.CreateZoneOptions;
import org.jclouds.cloudstack.options.UpdateZoneOptions;
import org.jclouds.concurrent.Timeout;
import java.util.concurrent.TimeUnit;
/**
* Provides synchronous access to CloudStack Zone features available to Global
* Admin users.
*
* @author Andrei Savu
* @see <a href=
* "http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html"
* />
*/
@Timeout(duration = 60, timeUnit = TimeUnit.SECONDS)
public interface GlobalZoneClient extends ZoneClient {
/**
* Create a new Zone
*
* @param name
* the name of the Zone
* @param networkType
* network type of the zone, can be Basic or Advanced
* @param dns1
* the first DNS for the Zone
* @param internalDns1
* the first internal DNS for the Zone
* @param options
* optional arguments
* @return
* zone instance or null
*/
Zone createZone(String name, NetworkType networkType, String dns1,
String internalDns1, CreateZoneOptions... options);
/**
* Update a zone
*
* @param id
* the ID of the Zone
* @param options
* optional arguments
* @return
*/
Zone updateZone(long id, UpdateZoneOptions... options);
/**
* Delete a zone with a specific ID
*
* @param zoneId
* the ID of the Zone
*/
Void deleteZone(long zoneId);
}

View File

@ -0,0 +1,176 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.cloudstack.options;
import com.google.common.collect.ImmutableSet;
import org.jclouds.cloudstack.domain.Zone;
import org.jclouds.http.options.BaseHttpRequestOptions;
import org.jclouds.javax.annotation.Nullable;
/**
* Options used to control how a zone is created
*
* @see <a href=
* "http://download.cloud.com/releases/2.2.0/api_2.2.12/global_admin/createZone.html"
* />
* @author Andrei Savu
*/
public class CreateZoneOptions extends BaseHttpRequestOptions {
public static final CreateZoneOptions NONE = new CreateZoneOptions();
/**
* @param allocationState
* allocation state of this Zone for allocation of new resources
*/
public CreateZoneOptions allocationState(Zone.AllocationState allocationState) {
this.queryParameters.replaceValues("allocationstate", ImmutableSet.of(allocationState.toString()));
return this;
}
/**
* @param dns2
* the second DNS for the Zone
*/
public CreateZoneOptions dns2(String dns2) {
this.queryParameters.replaceValues("dns2", ImmutableSet.of(dns2));
return this;
}
/**
* @param internalDns2
* the second internal DNS for the Zone
*/
public CreateZoneOptions internalDns2(String internalDns2) {
this.queryParameters.replaceValues("internaldns2", ImmutableSet.of(internalDns2));
return this;
}
/**
* @param domainName
* network domain name for the networks in zone
*/
public CreateZoneOptions domainName(String domainName) {
this.queryParameters.replaceValues("domain", ImmutableSet.of(domainName));
return this;
}
/**
* @param domainId
* the ID of the containing domain; null for public zones
*/
public CreateZoneOptions domainId(@Nullable long domainId) {
this.queryParameters.replaceValues("domainid", ImmutableSet.of(domainId + ""));
return this;
}
/**
* @param guestCIDRAddress
* the guest CIDR address for the Zone
*/
public CreateZoneOptions guestCIDRAddress(String guestCIDRAddress) {
this.queryParameters.replaceValues("guestcidraddress", ImmutableSet.of(guestCIDRAddress));
return this;
}
/**
* @param securityGroupEnabled
* true if network is security group enabled, false otherwise
*/
public CreateZoneOptions securityGroupEnabled(boolean securityGroupEnabled) {
this.queryParameters.replaceValues("securitygroupenabled", ImmutableSet.of(securityGroupEnabled + ""));
return this;
}
/**
* @param vlan
* the VLAN for the Zone
*/
public CreateZoneOptions vlan(String vlan) {
this.queryParameters.replaceValues("vlan", ImmutableSet.of(vlan));
return this;
}
public static class Builder {
/**
* @see CreateZoneOptions#allocationState
*/
public static CreateZoneOptions allocationState(Zone.AllocationState allocationState) {
CreateZoneOptions options = new CreateZoneOptions();
return options.allocationState(allocationState);
}
/**
* @see CreateZoneOptions#dns2
*/
public static CreateZoneOptions dns2(String dns2) {
CreateZoneOptions options = new CreateZoneOptions();
return options.dns2(dns2);
}
/**
* @see CreateZoneOptions#internalDns2
*/
public static CreateZoneOptions internalDns2(String internalDns2) {
CreateZoneOptions options = new CreateZoneOptions();
return options.internalDns2(internalDns2);
}
/**
* @see CreateZoneOptions#domainName
*/
public static CreateZoneOptions domainName(String domainName) {
CreateZoneOptions options = new CreateZoneOptions();
return options.domainName(domainName);
}
/**
* @see CreateZoneOptions#domainId
*/
public static CreateZoneOptions domainId(@Nullable long domainId) {
CreateZoneOptions options = new CreateZoneOptions();
return options.domainId(domainId);
}
/**
* @see CreateZoneOptions#guestCIDRAddress
*/
public static CreateZoneOptions guestCIDRAddress(String guestCIDRAddress) {
CreateZoneOptions options = new CreateZoneOptions();
return options.guestCIDRAddress(guestCIDRAddress);
}
/**
* @see CreateZoneOptions#securityGroupEnabled
*/
public static CreateZoneOptions securityGroupEnabled(boolean securityGroupEnabled) {
CreateZoneOptions options = new CreateZoneOptions();
return options.securityGroupEnabled(securityGroupEnabled);
}
/**
* @see CreateZoneOptions#vlan
*/
public static CreateZoneOptions vlan(String vlan) {
CreateZoneOptions options = new CreateZoneOptions();
return options.vlan(vlan);
}
}
}

View File

@ -0,0 +1,260 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.cloudstack.options;
import com.google.common.collect.ImmutableSet;
import org.jclouds.cloudstack.domain.Zone;
import org.jclouds.http.options.BaseHttpRequestOptions;
import java.util.List;
import static com.google.common.base.Preconditions.checkArgument;
/**
* Options used to control how a zone is updated
*
* @see <a href=
* "http://download.cloud.com/releases/2.2.0/api_2.2.12/global_admin/updateZone.html"
* />
* @author Andrei Savu
*/
public class UpdateZoneOptions extends BaseHttpRequestOptions {
public static final UpdateZoneOptions NONE = new UpdateZoneOptions();
/**
* @param allocationState
* allocation state of this Zone for allocation of new resources
*/
public UpdateZoneOptions allocationState(Zone.AllocationState allocationState) {
this.queryParameters.replaceValues("allocationstate", ImmutableSet.of(allocationState.toString()));
return this;
}
/**
* @param details
* the details for the Zone
*/
public UpdateZoneOptions details(String details) {
this.queryParameters.replaceValues("details", ImmutableSet.of(details));
return this;
}
/**
* @param dhcpProvider
* the dhcp Provider for the Zone
*/
public UpdateZoneOptions dhcpProvider(String dhcpProvider) {
this.queryParameters.replaceValues("dhcpprovider", ImmutableSet.of(dhcpProvider));
return this;
}
/**
* @param externalDnsServers
* the list of external DNS servers
*/
public UpdateZoneOptions externalDns(List<String> externalDnsServers) {
checkArgument(externalDnsServers.size() == 1 || externalDnsServers.size() == 2,
"The list of DNS servers should have 1 or 2 elements");
this.queryParameters.replaceValues("dns1",
ImmutableSet.of(externalDnsServers.get(0)));
if (externalDnsServers.size() == 2) {
this.queryParameters.replaceValues("dns2",
ImmutableSet.of(externalDnsServers.get(1)));
}
return this;
}
/**
* @param internalDnsServers
* the list of internal DNS for the Zone
*/
public UpdateZoneOptions internalDns(List<String> internalDnsServers) {
checkArgument(internalDnsServers.size() == 1 || internalDnsServers.size() == 2,
"The list of internal DNS servers should have 1 or 2 elements");
this.queryParameters.replaceValues("internaldns1",
ImmutableSet.of(internalDnsServers.get(0)));
if (internalDnsServers.size() == 2) {
this.queryParameters.replaceValues("internaldns2",
ImmutableSet.of(internalDnsServers.get(1)));
}
return this;
}
/**
* @param dnsSearchOrder
* the dns search order list
*/
public UpdateZoneOptions dnsSearchOrder(String dnsSearchOrder) {
this.queryParameters.replaceValues("dnssearchorder", ImmutableSet.of(dnsSearchOrder));
return this;
}
/**
* @param domainName
* network domain name for the networks in zone
*/
public UpdateZoneOptions domainName(String domainName) {
this.queryParameters.replaceValues("domain", ImmutableSet.of(domainName));
return this;
}
/**
* @param guestCIDRAddress
* the guest CIDR address for the Zone
*/
public UpdateZoneOptions guestCIDRAddress(String guestCIDRAddress) {
this.queryParameters.replaceValues("guestcidraddress", ImmutableSet.of(guestCIDRAddress));
return this;
}
/**
* @param securityGroupEnabled
* true if network is security group enabled, false otherwise
*/
public UpdateZoneOptions securityGroupEnabled(boolean securityGroupEnabled) {
this.queryParameters.replaceValues("securitygroupenabled", ImmutableSet.of(securityGroupEnabled + ""));
return this;
}
/**
* You can only make a private Zone public, not the other way around
*/
public UpdateZoneOptions makePublic() {
this.queryParameters.replaceValues("ispublic", ImmutableSet.of("true"));
return this;
}
/**
* @param name
* the name of the Zone
*/
public UpdateZoneOptions name(String name) {
this.queryParameters.replaceValues("name", ImmutableSet.of(name));
return this;
}
/**
* @param vlan
* the VLAN for the Zone
*/
public UpdateZoneOptions vlan(String vlan) {
this.queryParameters.replaceValues("vlan", ImmutableSet.of(vlan));
return this;
}
public static class Builder {
/**
* @see UpdateZoneOptions#allocationState
*/
public static UpdateZoneOptions allocationState(Zone.AllocationState allocationState) {
UpdateZoneOptions options = new UpdateZoneOptions();
return options.allocationState(allocationState);
}
/**
* @see UpdateZoneOptions#details
*/
public static UpdateZoneOptions details(String details) {
UpdateZoneOptions options = new UpdateZoneOptions();
return options.details(details);
}
/**
* @see UpdateZoneOptions#dhcpProvider
*/
public static UpdateZoneOptions dhcpProvider(String dhcpProvider) {
UpdateZoneOptions options = new UpdateZoneOptions();
return options.dhcpProvider(dhcpProvider);
}
/**
* @see UpdateZoneOptions#externalDns
*/
public static UpdateZoneOptions externalDns(List<String> externalDnsServers) {
UpdateZoneOptions options = new UpdateZoneOptions();
return options.externalDns(externalDnsServers);
}
/**
* @see UpdateZoneOptions#internalDns
*/
public static UpdateZoneOptions internalDns(List<String> internalDnsServers) {
UpdateZoneOptions options = new UpdateZoneOptions();
return options.internalDns(internalDnsServers);
}
/**
* @see UpdateZoneOptions#dnsSearchOrder
*/
public static UpdateZoneOptions dnsSearchOrder(String dnsSearchOrder) {
UpdateZoneOptions options = new UpdateZoneOptions();
return options.dnsSearchOrder(dnsSearchOrder);
}
/**
* @see UpdateZoneOptions#domainName
*/
public static UpdateZoneOptions domainName(String domainName) {
UpdateZoneOptions options = new UpdateZoneOptions();
return options.domainName(domainName);
}
/**
* @see UpdateZoneOptions#guestCIDRAddress
*/
public static UpdateZoneOptions guestCIDRAddress(String guestCIDRAddress) {
UpdateZoneOptions options = new UpdateZoneOptions();
return options.guestCIDRAddress(guestCIDRAddress);
}
/**
* @see UpdateZoneOptions#securityGroupEnabled
*/
public static UpdateZoneOptions securityGroupEnabled(boolean securityGroupEnabled) {
UpdateZoneOptions options = new UpdateZoneOptions();
return options.securityGroupEnabled(securityGroupEnabled);
}
/**
* @see UpdateZoneOptions#makePublic
*/
public static UpdateZoneOptions makePublic() {
UpdateZoneOptions options = new UpdateZoneOptions();
return options.makePublic();
}
/**
* @see UpdateZoneOptions#name
*/
public static UpdateZoneOptions name(String name) {
UpdateZoneOptions options = new UpdateZoneOptions();
return options.name(name);
}
/**
* @see UpdateZoneOptions#vlan
*/
public static UpdateZoneOptions vlan(String vlan) {
UpdateZoneOptions options = new UpdateZoneOptions();
return options.vlan(vlan);
}
}
}

View File

@ -0,0 +1,137 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.cloudstack.features;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMultimap;
import org.jclouds.cloudstack.CloudStackContext;
import org.jclouds.cloudstack.domain.NetworkType;
import org.jclouds.cloudstack.domain.Zone;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.testng.annotations.Test;
import java.net.URI;
import static org.jclouds.cloudstack.options.UpdateZoneOptions.Builder.name;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNull;
/**
* Test the CloudStack GlobalZoneClient
*
* @author Andrei Savu
*/
@Test(groups = "unit", testName = "GlobalZoneClientExpectTest")
public class GlobalZoneClientExpectTest extends BaseCloudStackRestClientExpectTest<GlobalZoneClient> {
public void testCreateZoneWhenResponseIs2xxAnd404() {
HttpRequest request = HttpRequest.builder()
.method("GET")
.endpoint(
URI.create("http://localhost:8080/client/api?response=json&command=createZone&" +
"name=test-zone&dns1=8.8.8.8&networktype=Basic&internaldns1=10.10.10.10&" +
"apiKey=identity&signature=hWNmM2%2BTsfb5DelQa%2FGJLN5DVWE%3D"))
.headers(
ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.build())
.build();
GlobalZoneClient client = requestSendsResponse(request,
HttpResponse.builder()
.statusCode(200)
.payload(payloadFromResource("/createzoneresponse.json"))
.build());
assertEquals(client.createZone("test-zone", NetworkType.BASIC, "8.8.8.8", "10.10.10.10"),
Zone.builder()
.id(6)
.name("test-zone")
.DNS(ImmutableList.of("8.8.8.8"))
.internalDNS(ImmutableList.of("10.10.10.10"))
.networkType(NetworkType.BASIC)
.securityGroupsEnabled(true)
.allocationState(Zone.AllocationState.ENABLED)
.zoneToken("7b6e27df-30a6-3024-9d8b-7971a3127f64")
.dhcpProvider("DhcpServer").build());
client = requestSendsResponse(request, HttpResponse.builder().statusCode(404).build());
assertNull(client.createZone("test-zone", NetworkType.BASIC, "8.8.8.8", "10.10.10.10"));
}
public void testUpdateZoneWhenResponseIs2xxAnd404() {
HttpRequest request = HttpRequest.builder()
.method("GET")
.endpoint(
URI.create("http://localhost:8080/client/api?response=json&command=updateZone&" +
"id=6&name=test-zone&dns1=8.8.8.8&apiKey=identity&signature=v19FdHKHztdT0IRloYFFn0eNbWM%3D"))
.headers(
ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.build())
.build();
GlobalZoneClient client = requestSendsResponse(request,
HttpResponse.builder()
.statusCode(200)
.payload(payloadFromResource("/updatezoneresponse.json"))
.build());
assertEquals(client.updateZone(6, name("test-zone").externalDns(ImmutableList.of("8.8.8.8"))),
Zone.builder()
.id(6)
.name("test-zone")
.DNS(ImmutableList.of("8.8.8.8"))
.internalDNS(ImmutableList.of("10.10.10.10"))
.networkType(NetworkType.BASIC)
.securityGroupsEnabled(true)
.allocationState(Zone.AllocationState.ENABLED)
.zoneToken("7b6e27df-30a6-3024-9d8b-7971a3127f64")
.dhcpProvider("DhcpServer").build());
client = requestSendsResponse(request, HttpResponse.builder().statusCode(404).build());
assertNull(client.updateZone(6, name("test-zone").externalDns(ImmutableList.of("8.8.8.8"))));
}
public void testDeleteZone() {
GlobalZoneClient client = requestSendsResponse(
HttpRequest.builder()
.method("GET")
.endpoint(
URI.create("http://localhost:8080/client/api?response=json&" +
"command=deleteZone&id=6&apiKey=identity&signature=TfkzSIK8kzGJnIYo3DofECyuOII%3D"))
.headers(
ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.build())
.build(),
HttpResponse.builder()
.statusCode(200)
.payload(payloadFromResource("/deletezoneresponse.json"))
.build());
client.deleteZone(6);
}
@Override
protected GlobalZoneClient clientFrom(CloudStackContext context) {
return context.getGlobalContext().getApi().getZoneClient();
}
}

View File

@ -0,0 +1,67 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.cloudstack.features;
import com.google.common.collect.ImmutableList;
import org.jclouds.cloudstack.domain.NetworkType;
import org.jclouds.cloudstack.domain.Zone;
import org.testng.annotations.Test;
import static org.jclouds.cloudstack.options.UpdateZoneOptions.Builder.name;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
/**
* Tests behavior of {@code GlobalZoneClient}
*
* @author Andrei Savu
*/
@Test(groups = "live", singleThreaded = true, testName = "GlobalZoneClientLiveTest")
public class GlobalZoneClientLiveTest extends BaseCloudStackClientLiveTest {
@Test
public void testCreateUpdateDeleteZone() {
assert globalAdminEnabled;
Zone zone = null;
String zoneName = prefix + "-zone";
try {
zone = globalAdminClient.getZoneClient().createZone(zoneName,
NetworkType.BASIC, "8.8.8.8", "10.10.10.10");
assertNotNull(zone);
assertEquals(zone, globalAdminClient.getZoneClient().getZone(zone.getId()));
assertEquals(zone.getNetworkType(), NetworkType.BASIC);
assertEquals(zone.getDNS(), ImmutableList.of("8.8.8.8"));
assertEquals(zone.getInternalDNS(), ImmutableList.of("10.10.10.10"));
Zone updated = globalAdminClient.getZoneClient().updateZone(zone.getId(),
name(zoneName + "-2").externalDns(ImmutableList.of("8.8.4.4")));
assertEquals(updated.getId(), zone.getId());
assertEquals(updated.getDNS(), ImmutableList.of("8.8.4.4"));
} finally {
if (zone != null) {
globalAdminClient.getZoneClient().deleteZone(zone.getId());
}
}
}
}

View File

@ -0,0 +1,97 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.cloudstack.features;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.ImmutableSet;
import org.jclouds.cloudstack.CloudStackContext;
import org.jclouds.cloudstack.domain.NetworkType;
import org.jclouds.cloudstack.domain.Zone;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.testng.annotations.Test;
import java.net.URI;
import static org.testng.Assert.assertEquals;
/**
* Test the CloudStack ZoneClient
*
* @author Andrei Savu
*/
@Test(groups = "unit", testName = "ZoneClientExpectTest")
public class ZoneClientExpectTest extends BaseCloudStackRestClientExpectTest<ZoneClient> {
public void testListZonesWhenResponseIs2xx() {
ZoneClient client = requestSendsResponse(
HttpRequest.builder()
.method("GET")
.endpoint(
URI.create("http://localhost:8080/client/api?response=json&" +
"command=listZones&apiKey=identity&signature=wLSqVlxuiLXZcHi9IoSAwXNRGFs%3D"))
.headers(
ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.build())
.build(),
HttpResponse.builder()
.statusCode(200)
.payload(payloadFromResource("/listzonesresponse.json"))
.build());
assertEquals(client.listZones(),
ImmutableSet.of(
Zone.builder()
.id(1)
.name("San Jose 1")
.networkType(NetworkType.ADVANCED)
.securityGroupsEnabled(false).build(),
Zone.builder()
.id(2)
.name("Chicago")
.networkType(NetworkType.ADVANCED)
.securityGroupsEnabled(true).build()));
}
public void testListZonesWhenResponseIs404() {
ZoneClient client = requestSendsResponse(
HttpRequest.builder()
.method("GET")
.endpoint(
URI.create("http://localhost:8080/client/api?response=json&" +
"command=listZones&apiKey=identity&signature=wLSqVlxuiLXZcHi9IoSAwXNRGFs%3D"))
.headers(
ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.build())
.build(),
HttpResponse.builder()
.statusCode(404)
.build());
assertEquals(client.listZones(), ImmutableSet.of());
}
@Override
protected ZoneClient clientFrom(CloudStackContext context) {
return context.getProviderSpecificContext().getApi().getZoneClient();
}
}

View File

@ -61,8 +61,8 @@ public class ZoneClientLiveTest extends BaseCloudStackClientLiveTest {
break;
case BASIC:
assert zone.getVLAN() == null : zone;
assert zone.getDNS().size() == 0 : zone;
assert zone.getInternalDNS().size() == 0 : zone;
assert zone.getDNS().size() >= 0 : zone;
assert zone.getInternalDNS().size() >= 0 : zone;
assert zone.getDomain() == null : zone;
assert zone.getDomainId() <= 0 : zone;
assert zone.getGuestCIDRAddress() == null : zone;

View File

@ -0,0 +1,4 @@
{ "createzoneresponse" : { "zone" :
{"id":6,"name":"test-zone","dns1":"8.8.8.8","internaldns1":"10.10.10.10","networktype":"Basic",
"securitygroupsenabled":true,"allocationstate":"Enabled","zonetoken":"7b6e27df-30a6-3024-9d8b-7971a3127f64",
"dhcpprovider":"DhcpServer"} } }

View File

@ -0,0 +1 @@
{ "deletezoneresponse" : { "success" : "true"} }

View File

@ -0,0 +1,4 @@
{ "updatezoneresponse" : { "zone" :
{"id":6,"name":"test-zone","dns1":"8.8.8.8","internaldns1":"10.10.10.10","networktype":"Basic",
"securitygroupsenabled":true,"allocationstate":"Enabled","zonetoken":"7b6e27df-30a6-3024-9d8b-7971a3127f64",
"dhcpprovider":"DhcpServer"} } }

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<artifactId>jclouds-project</artifactId>
<groupId>org.jclouds</groupId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.api</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-compute-service-archetype</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<artifactId>jclouds-project</artifactId>
<groupId>org.jclouds</groupId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-archetypes</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-rest-client-archetype</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<artifactId>jclouds-project</artifactId>
<groupId>org.jclouds</groupId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-assemblies</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-blobstore</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.common</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.common</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>

View File

@ -24,7 +24,7 @@
<parent>
<artifactId>jclouds-project</artifactId>
<groupId>org.jclouds</groupId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.common</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>

View File

@ -24,7 +24,7 @@
<parent>
<artifactId>jclouds-project</artifactId>
<groupId>org.jclouds</groupId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-core</artifactId>

View File

@ -39,10 +39,9 @@ public class JcloudsVersion {
static final String VERSION_RESOURCE_FILE = "META-INF/maven/org.jclouds/jclouds-core/pom.properties";
private static final String VERSION_PROPERTY_NAME = "version";
// TODO: stop supporting x.y.z-rc-n after the 1.3.0 release
// x.y.z or x.y.z-rc.n or x.y.z-rc-n, optionally with -SNAPSHOT suffix - see http://semver.org
// x.y.z or x.y.z-rc.n, optionally with -SNAPSHOT suffix - see http://semver.org
private static final Pattern SEMANTIC_VERSION_PATTERN =
Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)(?:-rc[-\\.](\\d+))?(?:-SNAPSHOT)?");
Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)(?:-rc\\.(\\d+))?(?:-SNAPSHOT)?");
private static final JcloudsVersion INSTANCE = new JcloudsVersion();

View File

@ -54,6 +54,12 @@ public class JcloudsVersionTest {
new JcloudsVersion("${project.version}");
}
@Test(expectedExceptions = { IllegalArgumentException.class })
public void testFailsIfNonSemverReleaseCandidate() {
// no longer supported after the 1.3.0 RC cycle
new JcloudsVersion("1.2.3-rc-4");
}
@Test
public void testExtractsVersionFromResourceFile() {
JcloudsVersion version = new JcloudsVersion();
@ -93,29 +99,15 @@ public class JcloudsVersionTest {
assertTrue(version.releaseCandidate, "Expected release candidate");
}
// TODO: remove once x.y.z-rc-n support is dropped after 1.3.0
@Test
public void testRecognisesNonSemverReleaseCandidate() {
JcloudsVersion version = new JcloudsVersion("1.2.3-rc-4");
assertTrue(version.releaseCandidate, "Expected release candidate");
}
@Test
public void testExtractsReleaseCandidateVersion() {
JcloudsVersion version = new JcloudsVersion("1.2.3-rc.4");
assertEquals(Integer.valueOf(4), version.releaseCandidateVersion);
}
// TODO: remove once x.y.z-rc-n support is dropped after 1.3.0
@Test
public void testExtractsNonSemverReleaseCandidateVersion() {
JcloudsVersion version = new JcloudsVersion("1.2.3-rc-4");
assertEquals(Integer.valueOf(4), version.releaseCandidateVersion);
}
@Test
public void testRecognisesReleaseCandidateSnapshot() {
JcloudsVersion version = new JcloudsVersion("1.2.3-rc-4-SNAPSHOT");
JcloudsVersion version = new JcloudsVersion("1.2.3-rc.4-SNAPSHOT");
assertTrue(version.releaseCandidate, "Expected release candidate");
assertTrue(version.snapshot, "Expected snapshot");
}

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-demos-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
</parent>
<artifactId>jclouds-demo-getpath</artifactId>
<name>jclouds getpath</name>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-demos-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
</parent>
<artifactId>jclouds-demo-googleappengine</artifactId>
<packaging>war</packaging>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-demos-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
</parent>
<artifactId>jclouds-demo-perftest</artifactId>
<name>jclouds Performance test verses Amazon SDK implementation</name>

View File

@ -23,7 +23,7 @@
<parent>
<artifactId>jclouds-project</artifactId>
<groupId>org.jclouds</groupId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-demos-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
</parent>
<artifactId>jclouds-demo-simpledb</artifactId>
<name>jclouds simpledb sample that putAttributes and select it</name>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-demos-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
</parent>
<artifactId>jclouds-demo-speedtest-azurequeue</artifactId>
<name>Speed tests of Azure's queue offering</name>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-demos-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
</parent>
<artifactId>jclouds-demo-speedtest-sqs</artifactId>
<name>Speed tests of SQS across regions</name>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-demos-tweetstore-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
</parent>
<artifactId>jclouds-demo-gae-tweetstore-spring</artifactId>
<packaging>war</packaging>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-demos-tweetstore-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
</parent>
<artifactId>jclouds-demo-gae-tweetstore</artifactId>
<packaging>war</packaging>

View File

@ -23,7 +23,7 @@
<parent>
<artifactId>jclouds-demos-project</artifactId>
<groupId>org.jclouds</groupId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jclouds-demos-tweetstore-project</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-demos-tweetstore-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
</parent>
<artifactId>jclouds-demo-runatcloud-tweetstore</artifactId>
<packaging>war</packaging>
@ -103,7 +103,8 @@
<bees.address>${test.bees.address}</bees.address>
<bees.port>${test.bees.port}</bees.port>
<jclouds.tweetstore.blobstores>${jclouds.tweetstore.blobstores}</jclouds.tweetstore.blobstores>
<jclouds.tweetstore.container>test.${jclouds.tweetstore.container}</jclouds.tweetstore.container>
<!-- test.jclouds-runatcloud-tweetstore giving 500 errors in cloudonestorage -->
<jclouds.tweetstore.container>test.${jclouds.tweetstore.container}2</jclouds.tweetstore.container>
<bees.basedir>${project.build.directory}/bees</bees.basedir>
<warfile>${project.build.directory}/${project.artifactId}</warfile>
</systemPropertyVariables>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.driver</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.driver</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.driver</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.driver</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.driver</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.driver</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.driver</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.driver</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<artifactId>jclouds-project</artifactId>
<groupId>org.jclouds</groupId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-drivers-project</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.driver</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.driver</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-loadbalancer</artifactId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>project/pom.xml</relativePath>
</parent>
<artifactId>jclouds-multi</artifactId>

View File

@ -28,7 +28,7 @@
</parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>jclouds Project</name>
<url>http://www.jclouds.org</url>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -52,17 +52,18 @@ public class CloudSigmaZurichTemplateBuilderLiveTest extends BaseTemplateBuilder
public boolean apply(OsFamilyVersion64Bit input) {
switch (input.family) {
case UBUNTU:
return (input.version.equals("") || input.version.matches("1[01].04") || input.version.equals("10.10"))
&& input.is64Bit;
return input.version.equals("") || input.version.equals("10.04")
|| ((input.version.equals("11.04") || input.version.equals("10.10")) && input.is64Bit);
case SOLARIS:
return input.version.equals("") && input.is64Bit;
case DEBIAN:
return (input.version.equals("") || input.version.equals("5.0")) && input.is64Bit;
return input.version.equals("") || input.version.equals("5.0");
case CENTOS:
return input.version.equals("") || (input.version.equals("5.7") && input.is64Bit);
case WINDOWS:
return input.version.equals("")
|| ((input.version.equals("2008") || input.version.equals("2003")) && !input.is64Bit);
return input.version.equals("") || input.version.equals("2003")
|| (input.version.equals("2008 R2") && input.is64Bit)
|| (input.version.equals("2008") && !input.is64Bit);
default:
return false;
}

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-project</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
<relativePath>../../project/pom.xml</relativePath>
</parent>
<groupId>org.jclouds.provider</groupId>

Some files were not shown because too many files have changed in this diff Show More