Updated Branches:
  refs/heads/master e3c8147e2 -> 1c871e12e

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiLiveTest.java
 
b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiLiveTest.java
index da6370b..7f095e1 100644
--- 
a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiLiveTest.java
+++ 
b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiLiveTest.java
@@ -18,6 +18,7 @@ package org.jclouds.rackspace.autoscale.v1.features;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
 
@@ -47,11 +48,11 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
 /**
- * Tests GroupApi Guice live test
+ * Group live test
  * 
  * @author Zack Shoylev
  */
-@Test(groups = "unit", testName = "GroupApiLiveTest")
+@Test(groups = "unit", testName = "GroupApiLiveTest", singleThreaded = true)
 public class GroupApiLiveTest extends BaseAutoscaleApiLiveTest {
 
    private static Map<String, List<Group>> created = Maps.newHashMap();
@@ -74,8 +75,9 @@ public class GroupApiLiveTest extends 
BaseAutoscaleApiLiveTest {
                .builder()
                
.loadBalancers(ImmutableList.of(LoadBalancer.builder().port(8080).id(9099).build()))
                .serverName("autoscale_server")
-               .serverImageRef("0d589460-f177-4b0f-81c1-8ab8903ac7d8")
-               .serverFlavorRef("1")
+               .serverImageRef("57b8a366-ab2c-454b-939f-215303a4431f")
+               //.serverImageRef("0d589460-f177-4b0f-81c1-8ab8903ac7d8")
+               .serverFlavorRef("2")
                .serverDiskConfig("AUTO")
                .serverMetadata(
                      ImmutableMap
@@ -90,7 +92,7 @@ public class GroupApiLiveTest extends 
BaseAutoscaleApiLiveTest {
          List<ScalingPolicy> scalingPolicies = Lists.newArrayList();
 
          ScalingPolicy scalingPolicy = 
ScalingPolicy.builder().cooldown(0).type(ScalingPolicyType.WEBHOOK)
-               .name("scale up by 
1").targetType(ScalingPolicyTargetType.INCREMENTAL).target(1).build();
+               .name("scale up by 
1").targetType(ScalingPolicyTargetType.INCREMENTAL).target("1").build();
          scalingPolicies.add(scalingPolicy);
 
          Group g = groupApi.create(groupConfiguration, launchConfiguration, 
scalingPolicies);
@@ -110,7 +112,7 @@ public class GroupApiLiveTest extends 
BaseAutoscaleApiLiveTest {
                "https://"; + zone.toLowerCase() + 
".autoscale.api.rackspacecloud.com/v1.0/" + 
api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/policies/" 
+ g.getScalingPolicies().get(0).getId() +"/");
          
assertEquals(g.getScalingPolicies().get(0).getLinks().get(0).getRelation(), 
Link.Relation.SELF);
          assertEquals(g.getScalingPolicies().get(0).getCooldown(), 0);
-         assertEquals(g.getScalingPolicies().get(0).getTarget(), 1);
+         assertEquals(g.getScalingPolicies().get(0).getTarget(), "1");
          assertEquals(g.getScalingPolicies().get(0).getTargetType(), 
ScalingPolicyTargetType.INCREMENTAL);
          assertEquals(g.getScalingPolicies().get(0).getType(), 
ScalingPolicyType.WEBHOOK);
          assertEquals(g.getScalingPolicies().get(0).getName(), "scale up by 
1");
@@ -120,7 +122,7 @@ public class GroupApiLiveTest extends 
BaseAutoscaleApiLiveTest {
          
assertEquals(g.getLaunchConfiguration().getLoadBalancers().get(0).getPort(), 
8080);
          assertEquals(g.getLaunchConfiguration().getServerName(), 
"autoscale_server");
          assertNotNull(g.getLaunchConfiguration().getServerImageRef());
-         assertEquals(g.getLaunchConfiguration().getServerFlavorRef(), "1");
+         assertEquals(g.getLaunchConfiguration().getServerFlavorRef(), "2");
          assertEquals(g.getLaunchConfiguration().getServerDiskConfig(), 
"AUTO");
          assertEquals(g.getLaunchConfiguration().getPersonalities().size(), 1);
          
assertEquals(g.getLaunchConfiguration().getPersonalities().get(0).getPath(), 
"/root/.csivh");
@@ -163,7 +165,7 @@ public class GroupApiLiveTest extends 
BaseAutoscaleApiLiveTest {
          GroupApi groupApi = api.getGroupApiForZone(zone);
          String groupId = created.get(zone).get(0).getId();
          GroupState testGroup = groupApi.getState(groupId);
-         assertEquals(testGroup.getId(), groupId);
+         assertNull(testGroup.getId()); // The id recently changed to not be 
included when getting state.
       }
    }
 
@@ -202,6 +204,74 @@ public class GroupApiLiveTest extends 
BaseAutoscaleApiLiveTest {
    }
     */
 
+   @Test
+   public void testGetGroupConfiguration() {
+      for (String zone : api.getConfiguredZones()) {
+         GroupApi groupApi = api.getGroupApiForZone(zone);
+         String groupId = created.get(zone).get(0).getId();
+         GroupConfiguration testGroupConfiguration = 
groupApi.getGroupConfiguration(groupId);
+         assertEquals(testGroupConfiguration.getCooldown(), 360);
+         assertEquals(testGroupConfiguration.getMaxEntities(), 10);
+         assertEquals(testGroupConfiguration.getMinEntities(), 0);
+      }
+   }
+
+   @Test
+   public void testGetGroupLaunchConfiguration() {
+      for (String zone : api.getConfiguredZones()) {
+         GroupApi groupApi = api.getGroupApiForZone(zone);
+         String groupId = created.get(zone).get(0).getId();
+         LaunchConfiguration testLaunchConfiguration = 
groupApi.getLaunchConfiguration(groupId);
+         
assertEquals(testLaunchConfiguration.getLoadBalancers().get(0).getPort(), 8080);
+         assertEquals(testLaunchConfiguration.getType(), 
LaunchConfigurationType.LAUNCH_SERVER);
+         assertEquals(testLaunchConfiguration.getServerFlavorRef(), "2");
+      }
+   }
+
+   @Test
+   public void testUpdateLaunchConfiguration() {
+      for (String zone : api.getConfiguredZones()) {
+         GroupApi groupApi = api.getGroupApiForZone(zone);
+         String groupId = created.get(zone).get(0).getId();
+
+         LaunchConfiguration launchConfiguration = LaunchConfiguration
+               .builder()
+               
.loadBalancers(ImmutableList.of(LoadBalancer.builder().port(8080).id(9099).build()))
+               .serverName("autoscale_server")
+               .serverImageRef("57b8a366-ab2c-454b-939f-215303a4431f")
+               .serverFlavorRef("2")
+               .serverDiskConfig("AUTO")
+               .serverMetadata(
+                     ImmutableMap
+                     .of("build_config", "core", "meta_key_1", "meta_value_1", 
"meta_key_2", "meta_value_2"))
+                     .networks(
+                           
ImmutableList.of("11111111-1111-1111-1111-111111111111", 
"00000000-0000-0000-0000-000000000000"))
+                           .personalities(
+                                 
ImmutableList.of(Personality.builder().path("/root/.csivh")
+                                       
.contents("VGhpcyBpcyBhIHRlc3QgZmlsZS4=").build()))
+                                       
.type(LaunchConfigurationType.LAUNCH_SERVER).build();
+
+         boolean result = groupApi.updateLaunchConfiguration(groupId, 
launchConfiguration);
+         assertEquals(result, true);
+      }
+   }
+
+   @Test
+   public void testUpdateGroupConfiguration() {
+      for (String zone : api.getConfiguredZones()) {
+         GroupApi groupApi = api.getGroupApiForZone(zone);
+         String groupId = created.get(zone).get(0).getId();
+
+         GroupConfiguration groupConfiguration = 
GroupConfiguration.builder().maxEntities(10).cooldown(360)
+               .name("testscalinggroup198547").minEntities(0)
+               .metadata(ImmutableMap.of("gc_meta_key_2", "gc_meta_value_2", 
"gc_meta_key_1", "gc_meta_value_1"))
+               .build();
+
+         boolean result = groupApi.updateGroupConfiguration(groupId, 
groupConfiguration);
+         assertEquals(result, true);
+      }
+   }
+
    @Override
    @AfterClass(groups = { "integration", "live" })
    public void tearDown() {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiExpectTest.java
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiExpectTest.java
 
b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiExpectTest.java
new file mode 100644
index 0000000..8bb310c
--- /dev/null
+++ 
b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiExpectTest.java
@@ -0,0 +1,265 @@
+/*
+ * 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.rackspace.autoscale.v1.features;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
+import java.net.URI;
+import java.util.List;
+
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.http.HttpResponse;
+import org.jclouds.rackspace.autoscale.v1.domain.ScalingPolicy;
+import 
org.jclouds.rackspace.autoscale.v1.domain.ScalingPolicy.ScalingPolicyTargetType;
+import 
org.jclouds.rackspace.autoscale.v1.domain.ScalingPolicy.ScalingPolicyType;
+import org.jclouds.rackspace.autoscale.v1.domain.ScalingPolicyResponse;
+import org.jclouds.rackspace.autoscale.v1.internal.BaseAutoscaleApiExpectTest;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.Lists;
+
+/**
+ * Tests Scaling Policy Api Guice wiring and parsing
+ *
+ * @author Zack Shoylev
+ */
+@Test(groups = "unit", testName = "GroupApiExpectTest")
+public class ScalingPolicyApiExpectTest extends BaseAutoscaleApiExpectTest {
+
+   public void testCreateScalingPolicy() {
+      URI endpoint = 
URI.create("https://dfw.autoscale.api.rackspacecloud.com/v1.0/888888/groups/groupId1/policies";);
+      PolicyApi api = requestsSendResponses(
+            keystoneAuthWithUsernameAndPasswordAndTenantName,
+            responseWithKeystoneAccess,
+            
authenticatedGET().method("POST").endpoint(endpoint).payload(payloadFromResourceWithContentType("/autoscale_policy_create_request.json",
 MediaType.APPLICATION_JSON)).build(),
+            
HttpResponse.builder().statusCode(201).payload(payloadFromResource("/autoscale_policy_create_response.json")).build()
+            ).getPolicyApiForGroupInZone("groupId1", "DFW");      
+
+      List<ScalingPolicy> scalingPolicies = Lists.newArrayList();
+
+      ScalingPolicy scalingPolicy = ScalingPolicy.builder()
+            .cooldown(1800)
+            .type(ScalingPolicyType.WEBHOOK)
+            .name("scale up by one server")
+            .targetType(ScalingPolicyTargetType.INCREMENTAL)
+            .target("1")
+            .build();
+      scalingPolicies.add(scalingPolicy);
+
+      FluentIterable<ScalingPolicyResponse> scalingPolicyResponse = 
api.create(scalingPolicies);
+
+      assertNotNull(scalingPolicyResponse);
+      assertEquals(scalingPolicyResponse.size(), 1);
+      assertEquals(scalingPolicyResponse.get(0).getCooldown(), 1800);
+      assertEquals(scalingPolicyResponse.get(0).getId(), 
"dceb14ac-b2b3-4f06-aac9-a5b6cd5d40e1");
+      assertEquals(scalingPolicyResponse.get(0).getName(), "scale up by one 
server");
+      assertEquals(scalingPolicyResponse.get(0).getTarget(), "1");
+      assertEquals(scalingPolicyResponse.get(0).getLinks().size(), 1);
+   }
+
+   public void testCreateScalingPolicyFail() {
+      URI endpoint = 
URI.create("https://dfw.autoscale.api.rackspacecloud.com/v1.0/888888/groups/groupId1/policies";);
+      PolicyApi api = requestsSendResponses(
+            keystoneAuthWithUsernameAndPasswordAndTenantName,
+            responseWithKeystoneAccess,
+            
authenticatedGET().method("POST").endpoint(endpoint).payload(payloadFromResourceWithContentType("/autoscale_policy_create_request.json",
 MediaType.APPLICATION_JSON)).build(),
+            
HttpResponse.builder().statusCode(404).payload(payloadFromResource("/autoscale_policy_create_response.json")).build()
+            ).getPolicyApiForGroupInZone("groupId1", "DFW");      
+
+      List<ScalingPolicy> scalingPolicies = Lists.newArrayList();
+
+      ScalingPolicy scalingPolicy = ScalingPolicy.builder()
+            .cooldown(1800)
+            .type(ScalingPolicyType.WEBHOOK)
+            .name("scale up by one server")
+            .targetType(ScalingPolicyTargetType.INCREMENTAL)
+            .target("1")
+            .build();
+      scalingPolicies.add(scalingPolicy);
+
+      FluentIterable<ScalingPolicyResponse> scalingPolicyResponse = 
api.create(scalingPolicies);
+
+      assertTrue(scalingPolicyResponse.size() == 0);
+   }
+
+   public void testListScalingPolicies() {
+      URI endpoint = 
URI.create("https://dfw.autoscale.api.rackspacecloud.com/v1.0/888888/groups/groupId1/policies";);
+      PolicyApi api = requestsSendResponses(
+            keystoneAuthWithUsernameAndPasswordAndTenantName,
+            responseWithKeystoneAccess,
+            authenticatedGET().method("GET").endpoint(endpoint).build(),
+            
HttpResponse.builder().statusCode(201).payload(payloadFromResource("/autoscale_policy_list_response.json")).build()
+            ).getPolicyApiForGroupInZone("groupId1", "DFW");
+
+      FluentIterable<ScalingPolicyResponse> scalingPolicyResponse = api.list();
+
+      assertNotNull(scalingPolicyResponse);
+      assertEquals(scalingPolicyResponse.size(), 2);
+      assertEquals(scalingPolicyResponse.get(0).getCooldown(), 150);
+      assertEquals(scalingPolicyResponse.get(0).getId(), "policyId1");
+      assertEquals(scalingPolicyResponse.get(0).getName(), "scale up by one 
server");
+      assertEquals(scalingPolicyResponse.get(0).getTarget(), "1");
+      assertEquals(scalingPolicyResponse.get(0).getLinks().size(), 1);
+   }
+
+   public void testListScalingPoliciesFail() {
+      URI endpoint = 
URI.create("https://dfw.autoscale.api.rackspacecloud.com/v1.0/888888/groups/groupId1/policies";);
+      PolicyApi api = requestsSendResponses(
+            keystoneAuthWithUsernameAndPasswordAndTenantName,
+            responseWithKeystoneAccess,
+            authenticatedGET().method("GET").endpoint(endpoint).build(),
+            
HttpResponse.builder().statusCode(404).payload(payloadFromResource("/autoscale_policy_list_response.json")).build()
+            ).getPolicyApiForGroupInZone("groupId1", "DFW");
+
+      FluentIterable<ScalingPolicyResponse> scalingPolicyResponse = api.list();
+
+      assertEquals(scalingPolicyResponse.size(), 0);
+   }
+
+   public void testGetScalingPolicies() {
+      URI endpoint = 
URI.create("https://dfw.autoscale.api.rackspacecloud.com/v1.0/888888/groups/groupId1/policies/policyId";);
+      PolicyApi api = requestsSendResponses(
+            keystoneAuthWithUsernameAndPasswordAndTenantName,
+            responseWithKeystoneAccess,
+            authenticatedGET().method("GET").endpoint(endpoint).build(),
+            
HttpResponse.builder().statusCode(201).payload(payloadFromResource("/autoscale_policy_get_response.json")).build()
+            ).getPolicyApiForGroupInZone("groupId1", "DFW");
+
+      ScalingPolicyResponse scalingPolicyResponse = api.get("policyId");
+
+      assertNotNull(scalingPolicyResponse);
+      assertEquals(scalingPolicyResponse.getCooldown(), 150);
+      assertEquals(scalingPolicyResponse.getId(), "policyId");
+      assertEquals(scalingPolicyResponse.getName(), "scale up by one server");
+      assertEquals(scalingPolicyResponse.getTarget(), "1");
+      assertEquals(scalingPolicyResponse.getLinks().size(), 1);
+   }
+
+   public void testGetScalingPoliciesFail() {
+      URI endpoint = 
URI.create("https://dfw.autoscale.api.rackspacecloud.com/v1.0/888888/groups/groupId1/policies/policyId";);
+      PolicyApi api = requestsSendResponses(
+            keystoneAuthWithUsernameAndPasswordAndTenantName,
+            responseWithKeystoneAccess,
+            authenticatedGET().method("GET").endpoint(endpoint).build(),
+            
HttpResponse.builder().statusCode(404).payload(payloadFromResource("/autoscale_policy_get_response.json")).build()
+            ).getPolicyApiForGroupInZone("groupId1", "DFW");
+
+      ScalingPolicyResponse scalingPolicyResponse = api.get("policyId");
+
+      assertNull(scalingPolicyResponse);
+   }
+
+   public void testUpdateScalingPolicy() {
+      URI endpoint = 
URI.create("https://dfw.autoscale.api.rackspacecloud.com/v1.0/888888/groups/groupId1/policies/policyId";);
+      PolicyApi api = requestsSendResponses(
+            keystoneAuthWithUsernameAndPasswordAndTenantName,
+            responseWithKeystoneAccess,
+            
authenticatedGET().method("PUT").endpoint(endpoint).payload(payloadFromResourceWithContentType("/autoscale_policy_update_request.json",
 MediaType.APPLICATION_JSON)).build(),
+            HttpResponse.builder().statusCode(201).build()
+            ).getPolicyApiForGroupInZone("groupId1", "DFW");
+
+      ScalingPolicy scalingPolicy = ScalingPolicy.builder()
+            .cooldown(6)
+            .type(ScalingPolicyType.WEBHOOK)
+            .name("scale down by 5 percent")
+            .targetType(ScalingPolicyTargetType.PERCENT_CHANGE)
+            .target("-5")
+            .build();
+
+      boolean result = api.update("policyId", scalingPolicy);
+      assertTrue(result);
+   }
+
+   public void testUpdateScalingPolicyFail() {
+      URI endpoint = 
URI.create("https://dfw.autoscale.api.rackspacecloud.com/v1.0/888888/groups/groupId1/policies/policyId";);
+      PolicyApi api = requestsSendResponses(
+            keystoneAuthWithUsernameAndPasswordAndTenantName,
+            responseWithKeystoneAccess,
+            
authenticatedGET().method("PUT").endpoint(endpoint).payload(payloadFromResourceWithContentType("/autoscale_policy_update_request.json",
 MediaType.APPLICATION_JSON)).build(),
+            HttpResponse.builder().statusCode(404).build()
+            ).getPolicyApiForGroupInZone("groupId1", "DFW");      
+
+      ScalingPolicy scalingPolicy = ScalingPolicy.builder()
+            .cooldown(6)
+            .type(ScalingPolicyType.WEBHOOK)
+            .name("scale down by 5 percent")
+            .targetType(ScalingPolicyTargetType.PERCENT_CHANGE)
+            .target("-5")
+            .build();
+
+      boolean result = api.update("policyId", scalingPolicy);
+      assertFalse(result);
+   }
+
+   public void testDeleteScalingPolicy() {
+      URI endpoint = 
URI.create("https://dfw.autoscale.api.rackspacecloud.com/v1.0/888888/groups/groupId1/policies/policyId";);
+      PolicyApi api = requestsSendResponses(
+            keystoneAuthWithUsernameAndPasswordAndTenantName,
+            responseWithKeystoneAccess,
+            authenticatedGET().method("DELETE").endpoint(endpoint).build(),
+            HttpResponse.builder().statusCode(201).build()
+            ).getPolicyApiForGroupInZone("groupId1", "DFW");      
+
+      boolean result = api.delete("policyId");
+      assertTrue(result);
+   }
+
+   public void testDeleteScalingPolicyFail() {
+      URI endpoint = 
URI.create("https://dfw.autoscale.api.rackspacecloud.com/v1.0/888888/groups/groupId1/policies/policyId";);
+      PolicyApi api = requestsSendResponses(
+            keystoneAuthWithUsernameAndPasswordAndTenantName,
+            responseWithKeystoneAccess,
+            authenticatedGET().method("DELETE").endpoint(endpoint).build(),
+            HttpResponse.builder().statusCode(404).build()
+            ).getPolicyApiForGroupInZone("groupId1", "DFW");      
+
+      boolean result = api.delete("policyId");
+      assertFalse(result);
+   }
+
+   public void testExecuteScalingPolicy() {
+      URI endpoint = 
URI.create("https://dfw.autoscale.api.rackspacecloud.com/v1.0/888888/groups/groupId1/policies/policyId/execute";);
+      PolicyApi api = requestsSendResponses(
+            keystoneAuthWithUsernameAndPasswordAndTenantName,
+            responseWithKeystoneAccess,
+            authenticatedGET().method("POST").endpoint(endpoint).build(),
+            HttpResponse.builder().statusCode(201).build()
+            ).getPolicyApiForGroupInZone("groupId1", "DFW");      
+
+      boolean result = api.execute("policyId");
+      assertTrue(result);
+   }
+
+   public void testExecuteScalingPolicyFail() {
+      URI endpoint = 
URI.create("https://dfw.autoscale.api.rackspacecloud.com/v1.0/888888/groups/groupId1/policies/policyId/execute";);
+      PolicyApi api = requestsSendResponses(
+            keystoneAuthWithUsernameAndPasswordAndTenantName,
+            responseWithKeystoneAccess,
+            authenticatedGET().method("POST").endpoint(endpoint).build(),
+            HttpResponse.builder().statusCode(404).build()
+            ).getPolicyApiForGroupInZone("groupId1", "DFW");      
+
+      boolean result = api.execute("policyId");
+      assertFalse(result);
+   }
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiLiveTest.java
 
b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiLiveTest.java
new file mode 100644
index 0000000..ab2e257
--- /dev/null
+++ 
b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiLiveTest.java
@@ -0,0 +1,338 @@
+/*
+ * 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.rackspace.autoscale.v1.features;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.rackspace.autoscale.v1.domain.Group;
+import org.jclouds.rackspace.autoscale.v1.domain.GroupConfiguration;
+import org.jclouds.rackspace.autoscale.v1.domain.LaunchConfiguration;
+import 
org.jclouds.rackspace.autoscale.v1.domain.LaunchConfiguration.LaunchConfigurationType;
+import org.jclouds.rackspace.autoscale.v1.domain.LoadBalancer;
+import org.jclouds.rackspace.autoscale.v1.domain.Personality;
+import org.jclouds.rackspace.autoscale.v1.domain.ScalingPolicy;
+import 
org.jclouds.rackspace.autoscale.v1.domain.ScalingPolicy.ScalingPolicyTargetType;
+import 
org.jclouds.rackspace.autoscale.v1.domain.ScalingPolicy.ScalingPolicyType;
+import org.jclouds.rackspace.autoscale.v1.domain.ScalingPolicyResponse;
+import org.jclouds.rackspace.autoscale.v1.internal.BaseAutoscaleApiLiveTest;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.util.concurrent.Uninterruptibles;
+
+/**
+ * Scaling Policy live test
+ * 
+ * @author Zack Shoylev
+ */
+@Test(groups = "unit", testName = "ScalingPolicyApiLiveTest", singleThreaded = 
true)
+public class ScalingPolicyApiLiveTest extends BaseAutoscaleApiLiveTest {
+
+   private static Map<String, List<Group>> created = Maps.newHashMap();
+
+   @Override
+   @BeforeClass(groups = { "integration", "live" })
+   public void setup() {
+      super.setup();
+      for (String zone : api.getConfiguredZones()) {
+         List<Group> createdGroupList = Lists.newArrayList();
+         created.put(zone, createdGroupList);
+         GroupApi groupApi = api.getGroupApiForZone(zone);
+
+         GroupConfiguration groupConfiguration = 
GroupConfiguration.builder().maxEntities(10).cooldown(360)
+               .name("testscalinggroup198547").minEntities(0)
+               .metadata(ImmutableMap.of("gc_meta_key_2", "gc_meta_value_2", 
"gc_meta_key_1", "gc_meta_value_1"))
+               .build();
+
+         LaunchConfiguration launchConfiguration = LaunchConfiguration
+               .builder()
+               
.loadBalancers(ImmutableList.of(LoadBalancer.builder().port(8080).id(9099).build()))
+               .serverName("autoscale_server")
+               .serverImageRef("c52a0ca6-c1f2-4cd1-b7d6-afbcd1ebda22")
+               .serverFlavorRef("2")
+               .serverDiskConfig("AUTO")
+               .serverMetadata(
+                     ImmutableMap
+                     .of("build_config", "core", "meta_key_1", "meta_value_1", 
"meta_key_2", "meta_value_2"))
+                     .networks(
+                           
ImmutableList.of("11111111-1111-1111-1111-111111111111", 
"00000000-0000-0000-0000-000000000000"))
+                           .personalities(
+                                 
ImmutableList.of(Personality.builder().path("/root/.csivh")
+                                       
.contents("VGhpcyBpcyBhIHRlc3QgZmlsZS4=").build()))
+                                       
.type(LaunchConfigurationType.LAUNCH_SERVER).build();
+
+         List<ScalingPolicy> scalingPolicies = Lists.newArrayList();
+
+         ScalingPolicy scalingPolicy = 
ScalingPolicy.builder().cooldown(0).type(ScalingPolicyType.WEBHOOK)
+               .name("scale up by 
1").targetType(ScalingPolicyTargetType.INCREMENTAL).target("1").build();
+         scalingPolicies.add(scalingPolicy);
+
+         Group g = groupApi.create(groupConfiguration, launchConfiguration, 
scalingPolicies);
+         createdGroupList.add(g);
+
+         assertNotNull(g);
+         assertNotNull(g.getId());
+         assertEquals(g.getLinks().size(), 1);
+         assertEquals(g.getLinks().get(0).getHref().toString(),
+               "https://"; + zone.toLowerCase() + 
".autoscale.api.rackspacecloud.com/v1.0/" + 
api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/");
+         assertEquals(g.getLinks().get(0).getRelation(), Link.Relation.SELF);
+
+         assertNotNull(g.getScalingPolicies().get(0).getId());
+         assertEquals(g.getScalingPolicies().get(0).getLinks().size(), 1);
+         assertEquals(
+               
g.getScalingPolicies().get(0).getLinks().get(0).getHref().toString(),
+               "https://"; + zone.toLowerCase() + 
".autoscale.api.rackspacecloud.com/v1.0/" + 
api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/policies/" 
+ g.getScalingPolicies().get(0).getId() +"/");
+         
assertEquals(g.getScalingPolicies().get(0).getLinks().get(0).getRelation(), 
Link.Relation.SELF);
+         assertEquals(g.getScalingPolicies().get(0).getCooldown(), 0);
+         assertEquals(g.getScalingPolicies().get(0).getTarget(), "1");
+         assertEquals(g.getScalingPolicies().get(0).getTargetType(), 
ScalingPolicyTargetType.INCREMENTAL);
+         assertEquals(g.getScalingPolicies().get(0).getType(), 
ScalingPolicyType.WEBHOOK);
+         assertEquals(g.getScalingPolicies().get(0).getName(), "scale up by 
1");
+
+         assertEquals(g.getLaunchConfiguration().getLoadBalancers().size(), 1);
+         
assertEquals(g.getLaunchConfiguration().getLoadBalancers().get(0).getId(), 
9099);
+         
assertEquals(g.getLaunchConfiguration().getLoadBalancers().get(0).getPort(), 
8080);
+         assertEquals(g.getLaunchConfiguration().getServerName(), 
"autoscale_server");
+         assertNotNull(g.getLaunchConfiguration().getServerImageRef());
+         assertEquals(g.getLaunchConfiguration().getServerFlavorRef(), "2");
+         assertEquals(g.getLaunchConfiguration().getServerDiskConfig(), 
"AUTO");
+         assertEquals(g.getLaunchConfiguration().getPersonalities().size(), 1);
+         
assertEquals(g.getLaunchConfiguration().getPersonalities().get(0).getPath(), 
"/root/.csivh");
+         
assertEquals(g.getLaunchConfiguration().getPersonalities().get(0).getContents(),
+               "VGhpcyBpcyBhIHRlc3QgZmlsZS4=");
+         assertEquals(g.getLaunchConfiguration().getNetworks().size(), 2);
+         assertEquals(g.getLaunchConfiguration().getNetworks().get(0), 
"11111111-1111-1111-1111-111111111111");
+         assertEquals(g.getLaunchConfiguration().getNetworks().get(1), 
"00000000-0000-0000-0000-000000000000");
+         assertEquals(g.getLaunchConfiguration().getServerMetadata().size(), 
3);
+         
assertTrue(g.getLaunchConfiguration().getServerMetadata().containsKey("build_config"));
+         
assertTrue(g.getLaunchConfiguration().getServerMetadata().containsValue("core"));
+         assertEquals(g.getLaunchConfiguration().getType(), 
LaunchConfigurationType.LAUNCH_SERVER);
+
+         assertEquals(g.getGroupConfiguration().getMaxEntities(), 10);
+         assertEquals(g.getGroupConfiguration().getCooldown(), 360);
+         assertEquals(g.getGroupConfiguration().getName(), 
"testscalinggroup198547");
+         assertEquals(g.getGroupConfiguration().getMinEntities(), 0);
+         assertEquals(g.getGroupConfiguration().getMetadata().size(), 2);
+         
assertTrue(g.getGroupConfiguration().getMetadata().containsKey("gc_meta_key_2"));
+         
assertTrue(g.getGroupConfiguration().getMetadata().containsValue("gc_meta_value_2"));
+      }
+   }
+
+   @Test
+   public void testCreatePolicy() {
+      for (String zone : api.getConfiguredZones()) {
+
+         PolicyApi policyApi = 
api.getPolicyApiForGroupInZone(created.get(zone).get(0).getId(), zone);
+
+         List<ScalingPolicy> scalingPolicies = Lists.newArrayList();
+
+         ScalingPolicy scalingPolicy = ScalingPolicy.builder()
+               .cooldown(1800)
+               .type(ScalingPolicyType.WEBHOOK)
+               .name("scale up by one server")
+               .targetType(ScalingPolicyTargetType.INCREMENTAL)
+               .target("1")
+               .build();
+         scalingPolicies.add(scalingPolicy);
+
+         FluentIterable<ScalingPolicyResponse> scalingPolicyResponse = 
policyApi.create(scalingPolicies);
+         assertNotNull(scalingPolicyResponse.iterator().next().getId());
+         assertEquals(scalingPolicyResponse.iterator().next().getCooldown(), 
1800);
+         assertEquals(scalingPolicyResponse.iterator().next().getTarget(), 
"1");
+      }
+   }
+
+   @Test
+   public void testListPolicy() {
+      for (String zone : api.getConfiguredZones()) {
+
+         PolicyApi policyApi = 
api.getPolicyApiForGroupInZone(created.get(zone).get(0).getId(), zone);
+
+         FluentIterable<ScalingPolicyResponse> scalingPolicyResponse = 
policyApi.list();
+         assertNotNull(scalingPolicyResponse.iterator().next().getId());
+      }
+   }
+
+   @Test
+   public void testGetPolicy() {
+      for (String zone : api.getConfiguredZones()) {
+
+         PolicyApi policyApi = 
api.getPolicyApiForGroupInZone(created.get(zone).get(0).getId(), zone);
+
+         assertNotNull(policyApi);
+         ScalingPolicyResponse listResponse = 
policyApi.list().iterator().next();
+         ScalingPolicyResponse getResponse = 
policyApi.get(listResponse.getId());
+         assertEquals(listResponse.getId(), getResponse.getId());
+         assertEquals(listResponse.getName(), getResponse.getName());
+         assertEquals(listResponse.getCooldown(), getResponse.getCooldown());
+         assertEquals(listResponse.getLinks(), getResponse.getLinks());
+         assertEquals(listResponse.getTarget(), getResponse.getTarget());
+         assertEquals(listResponse.getTargetType(), 
getResponse.getTargetType());
+         assertEquals(listResponse.getType(), getResponse.getType());
+      }
+   }
+
+   @Test
+   public void testUpdatePolicy() {
+      for (String zone : api.getConfiguredZones()) {
+
+         PolicyApi policyApi = 
api.getPolicyApiForGroupInZone(created.get(zone).get(0).getId(), zone);
+
+         List<ScalingPolicy> scalingPolicies = Lists.newArrayList();
+
+         ScalingPolicy scalingPolicy = ScalingPolicy.builder()
+               .cooldown(1800)
+               .type(ScalingPolicyType.WEBHOOK)
+               .name("scale up by one server")
+               .targetType(ScalingPolicyTargetType.INCREMENTAL)
+               .target("1")
+               .build();
+         scalingPolicies.add(scalingPolicy);
+
+         ScalingPolicy updated = ScalingPolicy.builder()
+               .cooldown(2000)
+               .type(ScalingPolicyType.WEBHOOK)
+               .name("scale up by 2 PERCENT server")
+               .targetType(ScalingPolicyTargetType.PERCENT_CHANGE)
+               .target("2")
+               .build();
+
+
+         FluentIterable<ScalingPolicyResponse> scalingPolicyResponse = 
policyApi.create(scalingPolicies);
+         String policyId = scalingPolicyResponse.iterator().next().getId();
+         assertNotNull(policyId);
+
+         boolean result = policyApi.update(policyId, updated);
+         assertTrue(result);
+
+         ScalingPolicyResponse updatedResponse = policyApi.get(policyId);
+
+         assertNotNull(updatedResponse.getId());
+         assertEquals(updatedResponse.getCooldown(), 2000);
+         assertEquals(updatedResponse.getTarget(), "2");
+         assertEquals(updatedResponse.getTargetType(), 
ScalingPolicyTargetType.PERCENT_CHANGE);
+         assertEquals(updatedResponse.getType(), ScalingPolicyType.WEBHOOK);
+         assertEquals(updatedResponse.getName(), "scale up by 2 PERCENT 
server");
+      }
+   }
+
+   @Test
+   public void testDeletePolicy() {
+      for (String zone : api.getConfiguredZones()) {
+
+         PolicyApi policyApi = 
api.getPolicyApiForGroupInZone(created.get(zone).get(0).getId(), zone);
+
+         List<ScalingPolicy> scalingPolicies = Lists.newArrayList();
+
+         ScalingPolicy scalingPolicy = ScalingPolicy.builder()
+               .cooldown(1800)
+               .type(ScalingPolicyType.WEBHOOK)
+               .name("scale up by one server")
+               .targetType(ScalingPolicyTargetType.INCREMENTAL)
+               .target("1")
+               .build();
+         scalingPolicies.add(scalingPolicy);         
+
+         FluentIterable<ScalingPolicyResponse> scalingPolicyResponse = 
policyApi.create(scalingPolicies);
+         String policyId = scalingPolicyResponse.iterator().next().getId();
+         assertNotNull(policyId);
+
+         boolean result = policyApi.delete(policyId);
+         assertTrue(result);
+      }
+   }
+
+   @Test
+   public void testExecutePolicy() {
+      for (String zone : api.getConfiguredZones()) {
+
+         PolicyApi policyApi = 
api.getPolicyApiForGroupInZone(created.get(zone).get(0).getId(), zone);
+
+         List<ScalingPolicy> scalingPolicies = Lists.newArrayList();
+
+         ScalingPolicy scalingPolicy = ScalingPolicy.builder()
+               .cooldown(1800)
+               .type(ScalingPolicyType.WEBHOOK)
+               .name("scale up by 0 server")
+               .targetType(ScalingPolicyTargetType.INCREMENTAL)
+               .target("1")
+               .build();
+         scalingPolicies.add(scalingPolicy);         
+
+         FluentIterable<ScalingPolicyResponse> scalingPolicyResponse = 
policyApi.create(scalingPolicies);
+         String policyId = scalingPolicyResponse.iterator().next().getId();
+         assertNotNull(policyId);
+
+         boolean result = policyApi.execute(policyId);
+         assertTrue(result);
+      }
+   }   
+
+   @Override
+   @AfterClass(groups = { "integration", "live" })
+   public void tearDown() {
+      for (String zone : api.getConfiguredZones()) {
+         GroupApi groupApi = api.getGroupApiForZone(zone);
+         for (Group group : created.get(zone)) {
+            PolicyApi policyApi = 
api.getPolicyApiForGroupInZone(group.getId(), zone);
+            if(policyApi == null)continue;
+            for(ScalingPolicyResponse sgr : policyApi.list()) {
+               if(!policyApi.delete(sgr.getId())) {
+                  System.out.println("Could not delete an autoscale policy 
after tests!");
+               }
+            }
+
+            List<ScalingPolicy> scalingPolicies = Lists.newArrayList();
+
+            ScalingPolicy scalingPolicy = ScalingPolicy.builder()
+                  .cooldown(1)
+                  .type(ScalingPolicyType.WEBHOOK)
+                  .name("0 machines")
+                  .targetType(ScalingPolicyTargetType.DESIRED_CAPACITY)
+                  .target("0")
+                  .build();
+            scalingPolicies.add(scalingPolicy);
+
+            FluentIterable<ScalingPolicyResponse> scalingPolicyResponse = 
policyApi.create(scalingPolicies);
+            String policyId = scalingPolicyResponse.iterator().next().getId();
+
+            Uninterruptibles.sleepUninterruptibly(3, TimeUnit.SECONDS);
+
+            policyApi.execute(policyId);
+
+            Uninterruptibles.sleepUninterruptibly(3, TimeUnit.SECONDS);
+
+            if (!groupApi.delete(group.getId()))
+               System.out.println("Could not delete an autoscale group after 
tests!");
+         }
+      }
+      super.tearDown();
+   }
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/resources/autoscale_groups_configuration_get_response.json
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/resources/autoscale_groups_configuration_get_response.json
 
b/rackspace-autoscale/src/test/resources/autoscale_groups_configuration_get_response.json
new file mode 100644
index 0000000..d8799c3
--- /dev/null
+++ 
b/rackspace-autoscale/src/test/resources/autoscale_groups_configuration_get_response.json
@@ -0,0 +1,12 @@
+{
+    "groupConfiguration": {
+        "name": "workers",
+        "cooldown": 60,
+        "minEntities": 5,
+        "maxEntities": 100,
+        "metadata": {
+            "firstkey": "this is a string",
+            "secondkey": "1"
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/resources/autoscale_groups_launch_configuration_get_response.json
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/resources/autoscale_groups_launch_configuration_get_response.json
 
b/rackspace-autoscale/src/test/resources/autoscale_groups_launch_configuration_get_response.json
new file mode 100644
index 0000000..c80e6ea
--- /dev/null
+++ 
b/rackspace-autoscale/src/test/resources/autoscale_groups_launch_configuration_get_response.json
@@ -0,0 +1,33 @@
+{
+    "launchConfiguration": {
+            "type": "launch_server",
+            "args": {
+                "server": {
+                    "flavorRef": "3",
+                    "name": "webhead",
+                    "imageRef": "0d589460-f177-4b0f-81c1-8ab8903ac7d8",
+                    "OS-DCF:diskConfig": "AUTO",
+                    "metadata": {
+                        "mykey": "myvalue"
+                    },
+                    "personality": [
+                        {
+                            "path": "/root/.ssh/authorized_keys",
+                            "contents": "ssh-rsa AAAAB3Nza...LiPk== 
[email protected]"
+                        }
+                    ],
+                    "networks": [
+                        {
+                            "uuid": "11111111-1111-1111-1111-111111111111"
+                        }
+                    ]
+                },
+                "loadBalancers": [
+                    {
+                        "loadBalancerId": 2200,
+                        "port": 8081
+                    }
+                ]
+            }
+        }
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/resources/autoscale_groups_update_configuration_request.json
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/resources/autoscale_groups_update_configuration_request.json
 
b/rackspace-autoscale/src/test/resources/autoscale_groups_update_configuration_request.json
new file mode 100644
index 0000000..70704cd
--- /dev/null
+++ 
b/rackspace-autoscale/src/test/resources/autoscale_groups_update_configuration_request.json
@@ -0,0 +1,10 @@
+{
+    "name": "workers",
+    "cooldown": 60,
+    "minEntities": 5,
+    "maxEntities": 100,
+    "metadata": {
+        "firstkey": "this is a string",
+        "secondkey": "1"
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/resources/autoscale_groups_update_launch_configuration_request.json
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/resources/autoscale_groups_update_launch_configuration_request.json
 
b/rackspace-autoscale/src/test/resources/autoscale_groups_update_launch_configuration_request.json
new file mode 100644
index 0000000..9ab0d78
--- /dev/null
+++ 
b/rackspace-autoscale/src/test/resources/autoscale_groups_update_launch_configuration_request.json
@@ -0,0 +1,36 @@
+{
+    "args":{
+        "loadBalancers":[
+            {
+                "port":8080,
+                "loadBalancerId":9099
+            }
+        ],
+        "server":{
+            "name":"autoscale_server",
+            "imageRef":"0d589460-f177-4b0f-81c1-8ab8903ac7d8",
+            "flavorRef":"2",
+            "OS-DCF:diskConfig":"AUTO",
+            "metadata":{
+                "build_config":"core",
+                "meta_key_1":"meta_value_1",
+                "meta_key_2":"meta_value_2"
+            },
+            "networks":[
+                {
+                    "uuid":"11111111-1111-1111-1111-111111111111"
+                },
+                {
+                    "uuid":"00000000-0000-0000-0000-000000000000"
+                }
+            ],
+            "personality":[
+                {
+                    "path":"/root/.csivh",
+                    "contents":"VGhpcyBpcyBhIHRlc3QgZmlsZS4="
+                }
+            ]
+        }
+    },
+    "type":"launch_server"
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/resources/autoscale_policy_create_request.json
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/resources/autoscale_policy_create_request.json 
b/rackspace-autoscale/src/test/resources/autoscale_policy_create_request.json
new file mode 100644
index 0000000..b0918a8
--- /dev/null
+++ 
b/rackspace-autoscale/src/test/resources/autoscale_policy_create_request.json
@@ -0,0 +1,8 @@
+[  
+   {
+    "name": "scale up by one server",
+    "change": 1,
+    "cooldown": 1800,
+    "type": "webhook"
+  }
+]

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/resources/autoscale_policy_create_response.json
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/resources/autoscale_policy_create_response.json 
b/rackspace-autoscale/src/test/resources/autoscale_policy_create_response.json
new file mode 100644
index 0000000..62d333c
--- /dev/null
+++ 
b/rackspace-autoscale/src/test/resources/autoscale_policy_create_response.json
@@ -0,0 +1,18 @@
+{
+"policies":
+[
+  {
+    "cooldown": 1800,
+    "type": "webhook",
+    "name": "scale up by one server",
+    "change": 1,
+    "links": [
+          {
+            "href": 
"https://ord.autoscale.api.rackspacecloud.com/v1.0/829409/groups/6791761b-821a-4d07-820d-0b2afc7dd7f6/policies/dceb14ac-b2b3-4f06-aac9-a5b6cd5d40e1/";,
+            "rel": "self"
+          }
+        ],
+    "id": "dceb14ac-b2b3-4f06-aac9-a5b6cd5d40e1"
+  }
+]
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/resources/autoscale_policy_get_response.json
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/resources/autoscale_policy_get_response.json 
b/rackspace-autoscale/src/test/resources/autoscale_policy_get_response.json
new file mode 100644
index 0000000..aa241b4
--- /dev/null
+++ b/rackspace-autoscale/src/test/resources/autoscale_policy_get_response.json
@@ -0,0 +1,15 @@
+{
+    "policy": {
+        "id": "policyId",
+        "links": [
+            {
+                "href": "urlRoot/v1.0/010101/groups/groupId/policy/policyId",
+                "rel": "self"
+            }
+        ],
+        "name": "scale up by one server",
+        "change": 1,
+        "cooldown": 150,
+        "type": "webhook"
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/resources/autoscale_policy_list_response.json
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/resources/autoscale_policy_list_response.json 
b/rackspace-autoscale/src/test/resources/autoscale_policy_list_response.json
new file mode 100644
index 0000000..843370c
--- /dev/null
+++ b/rackspace-autoscale/src/test/resources/autoscale_policy_list_response.json
@@ -0,0 +1,30 @@
+{
+    "policies": [
+        {
+            "id":"policyId1",
+            "name": "scale up by one server",
+            "change": 1,
+            "cooldown": 150,
+            "type": "webhook",
+            "links": [
+                {
+                    "href": 
"urlRoot/v1.0/010101/groups/groupId1/policy/policyId1",
+                    "rel": "self"
+                }
+            ]
+        },
+        {
+            "id": "policyId2",
+            "name": "scale up ten percent",
+            "changePercent": 10,
+            "cooldown": 150,
+            "type": "webhook",
+            "links": [
+                {
+                    "href": 
"urlRoot/v1.0/010101/groups/groupId1/policy/policyId2",
+                    "rel": "self"
+                }
+            ]
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/resources/autoscale_policy_update_request.json
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/resources/autoscale_policy_update_request.json 
b/rackspace-autoscale/src/test/resources/autoscale_policy_update_request.json
new file mode 100644
index 0000000..e0438bd
--- /dev/null
+++ 
b/rackspace-autoscale/src/test/resources/autoscale_policy_update_request.json
@@ -0,0 +1,6 @@
+{
+    "name": "scale down by 5 percent",
+    "changePercent": -5,
+    "cooldown": 6,
+    "type": "webhook"
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/resources/autoscale_webhook_get_response.json
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/resources/autoscale_webhook_get_response.json 
b/rackspace-autoscale/src/test/resources/autoscale_webhook_get_response.json
new file mode 100644
index 0000000..fa1d859
--- /dev/null
+++ b/rackspace-autoscale/src/test/resources/autoscale_webhook_get_response.json
@@ -0,0 +1,17 @@
+{
+    "webhook": {
+        "id":"{webhookId}",
+        "name": "webhook name",
+        "metadata": {},
+        "links": [
+            {
+                "href": 
".../{groupId1}/policies/{policyId1}/webhooks/{webhookId}/",
+                "rel": "self"
+            },
+            {
+                "href": ".../execute/1/{capabilityHash2}",
+                "rel": "capability"
+            }
+        ]
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-labs-openstack/blob/1c871e12/rackspace-autoscale/src/test/resources/autoscale_webhook_update_request.json
----------------------------------------------------------------------
diff --git 
a/rackspace-autoscale/src/test/resources/autoscale_webhook_update_request.json 
b/rackspace-autoscale/src/test/resources/autoscale_webhook_update_request.json
new file mode 100644
index 0000000..5b74d4d
--- /dev/null
+++ 
b/rackspace-autoscale/src/test/resources/autoscale_webhook_update_request.json
@@ -0,0 +1,6 @@
+{
+    "name": "alice",
+    "metadata": {
+        "notes": "this is for Alice"
+    }
+}

Reply via email to