This is an automated email from the ASF dual-hosted git repository.
nacx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jclouds-examples.git
The following commit(s) were added to refs/heads/master by this push:
new 12af7c1 Expose wait for predicates on relevant API
12af7c1 is described below
commit 12af7c1badf3c54bb51968267367d6ef67560d5f
Author: Boris Trishkin <[email protected]>
AuthorDate: Thu Jan 10 10:39:29 2019 +0000
Expose wait for predicates on relevant API
---
dimensiondata/pom.xml | 2 +-
.../DeleteServerVlanAndNetworkDomain.java | 28 ++----
.../DeployNetworkDomainVlanAndServer.java | 29 ++----
.../cloudcontrol/NetworkDomainTearDown.java | 39 ++++----
.../dimensiondata/cloudcontrol/WaitForUtils.java | 108 ---------------------
5 files changed, 39 insertions(+), 167 deletions(-)
diff --git a/dimensiondata/pom.xml b/dimensiondata/pom.xml
index 8dcb1c2..cb7ffc0 100644
--- a/dimensiondata/pom.xml
+++ b/dimensiondata/pom.xml
@@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.jclouds.examples</groupId>
<artifactId>jclouds-examples</artifactId>
- <version>2.2.0-SNAPSHOT</version>
+ <version>2.1.0</version>
</parent>
<artifactId>dimensiondata-cloudcontrol-examples</artifactId>
diff --git
a/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/DeleteServerVlanAndNetworkDomain.java
b/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/DeleteServerVlanAndNetworkDomain.java
index 8260277..6035c54 100644
---
a/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/DeleteServerVlanAndNetworkDomain.java
+++
b/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/DeleteServerVlanAndNetworkDomain.java
@@ -19,7 +19,6 @@ package org.jclouds.examples.dimensiondata.cloudcontrol;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableSet;
-import com.google.inject.Injector;
import org.jclouds.ContextBuilder;
import org.jclouds.dimensiondata.cloudcontrol.DimensionDataCloudControlApi;
import org.jclouds.dimensiondata.cloudcontrol.domain.Server;
@@ -29,8 +28,6 @@ import
org.jclouds.dimensiondata.cloudcontrol.options.DatacenterIdListFilters;
import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
import org.jclouds.rest.ApiContext;
-import static org.jclouds.examples.dimensiondata.cloudcontrol.WaitForUtils.*;
-
/**
* This class will attempt to delete the assets created in
org.jclouds.examples.dimensiondata.cloudcontrol.DeployNetworkDomainVlanAndServer:
* <ul>
@@ -66,11 +63,6 @@ public class DeleteServerVlanAndNetworkDomain
.modules(ImmutableSet.of(new SLF4JLoggingModule()))
.build())
{
- /*
- * Retrieve the Guice injector from the context.
- * We will use this for retrieving the some Predicates that are
used by the following operations.
- */
- Injector injector = ctx.utils().injector();
DimensionDataCloudControlApi api = ctx.getApi();
/*
@@ -81,9 +73,9 @@ public class DeleteServerVlanAndNetworkDomain
final String serverName = "jclouds-server";
final String vlanName = "jclouds-example-vlan";
- deleteServer(api, injector, serverName);
- deleteVlan(api, injector, vlanName, networkDomainId);
- deleteNetworkDomain(api, injector, networkDomainId);
+ deleteServer(api, serverName);
+ deleteVlan(api, vlanName, networkDomainId);
+ deleteNetworkDomain(api, networkDomainId);
deleteTagKey(api, "jclouds");
}
}
@@ -115,7 +107,7 @@ public class DeleteServerVlanAndNetworkDomain
return
api.getNetworkApi().listNetworkDomainsWithDatacenterIdAndName(ZONE,
networkDomainName).concat().toList().get(0).id();
}
- private static void deleteVlan(DimensionDataCloudControlApi api, Injector
injector, final String vlanName, String networkDomainId)
+ private static void deleteVlan(DimensionDataCloudControlApi api, final
String vlanName, String networkDomainId)
{
/*
* Find the Vlan that was deployed by listing all Vlans for the
Network Domain and filtering by name
@@ -141,11 +133,11 @@ public class DeleteServerVlanAndNetworkDomain
* A Vlan delete is an asynchronous process. We need to wait for
it to complete. The Dimension Data provider
* has built in predicates that will block execution and check
that the Vlan is not found.
*/
- waitForDeleteVlan(injector, vlan);
+ api.getNetworkApi().vlanDeletedPredicate().apply(vlan.id());
}
}
- private static void deleteNetworkDomain(DimensionDataCloudControlApi api,
Injector injector, String networkDomainId)
+ private static void deleteNetworkDomain(DimensionDataCloudControlApi api,
String networkDomainId)
{
/*
* Network Domain is deleted using the id.
@@ -156,10 +148,10 @@ public class DeleteServerVlanAndNetworkDomain
* A Network Domain delete is an asynchronous process. We need to wait
for it to complete. The Dimension Data provider
* has built in predicates that will block execution and check that
the Network Domain is not found.
*/
- waitForDeleteNetworkDomain(injector, networkDomainId);
+
api.getNetworkApi().networkDomainDeletedPredicate().apply(networkDomainId);
}
- private static void deleteServer(DimensionDataCloudControlApi api,
Injector injector, final String serverName)
+ private static void deleteServer(DimensionDataCloudControlApi api, final
String serverName)
{
/*
* We list all servers known to this organisation for the datacenter
we are operating on. We filter the one that matches the server name we used to
create it.
@@ -187,7 +179,7 @@ public class DeleteServerVlanAndNetworkDomain
* A Shutdown Server operation is an asynchronous process. We
need to wait for it to complete. The Dimension Data provider
* has built in predicates that will block execution and check
that the Server is shutdown.
*/
- waitForServerStopped(injector, server);
+ api.getServerApi().serverStoppedPredicate().apply(server.id());
}
/*
@@ -199,7 +191,7 @@ public class DeleteServerVlanAndNetworkDomain
* A Server delete is an asynchronous process. We need to wait for
it to complete. The Dimension Data provider
* has built in predicates that will block execution and check
that the Server is not found.
*/
- waitForServerDeleted(injector, server);
+ api.getServerApi().serverDeletedPredicate().apply(server.id());
}
}
diff --git
a/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/DeployNetworkDomainVlanAndServer.java
b/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/DeployNetworkDomainVlanAndServer.java
index f6521e4..9eace32 100644
---
a/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/DeployNetworkDomainVlanAndServer.java
+++
b/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/DeployNetworkDomainVlanAndServer.java
@@ -19,7 +19,6 @@ package org.jclouds.examples.dimensiondata.cloudcontrol;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
-import com.google.inject.Injector;
import org.jclouds.ContextBuilder;
import org.jclouds.dimensiondata.cloudcontrol.DimensionDataCloudControlApi;
import org.jclouds.dimensiondata.cloudcontrol.domain.Disk;
@@ -33,8 +32,6 @@ import org.jclouds.rest.ApiContext;
import java.util.Collections;
import java.util.List;
-import static org.jclouds.examples.dimensiondata.cloudcontrol.WaitForUtils.*;
-
/**
* This class will attempt to Deploy:
* <ul>
@@ -71,11 +68,6 @@ public class DeployNetworkDomainVlanAndServer
.modules(ImmutableSet.of(new SLF4JLoggingModule()))
.build())
{
- /*
- * Retrieve the Guice injector from the context.
- * We will use this for retrieving the some Predicates that are
used by the following operations.
- */
- Injector injector = ctx.utils().injector();
DimensionDataCloudControlApi api = ctx.getApi();
/*
@@ -83,16 +75,15 @@ public class DeployNetworkDomainVlanAndServer
*/
String tagKeyId = api.getTagApi().createTagKey("jclouds", "owner
of the asset", true, false);
- String networkDomainId = deployNetworkDomain(api, injector,
tagKeyId);
- String vlanId = deployVlan(api, injector, networkDomainId,
tagKeyId);
+ String networkDomainId = deployNetworkDomain(api, tagKeyId);
+ String vlanId = deployVlan(api, networkDomainId, tagKeyId);
- deployServer(api, injector, networkDomainId, vlanId, tagKeyId);
+ deployServer(api, networkDomainId, vlanId, tagKeyId);
}
}
- private static void deployServer(DimensionDataCloudControlApi api,
Injector injector, String
- networkDomainId, String vlanId, String tagKeyId)
+ private static void deployServer(DimensionDataCloudControlApi api, String
networkDomainId, String vlanId, String tagKeyId)
{
/*
* The server we deploy will use a pre-configured image.
@@ -123,7 +114,8 @@ public class DeployNetworkDomainVlanAndServer
* A Server deployment is an asynchronous process. We need to wait for
it to complete. The Dimension Data provider
* has built in predicates that will block execution and check that
the Server's State has moved from PENDING_ADD to NORMAL.
*/
- waitForServerStartedAndNormal(injector, serverId);
+ api.getServerApi().serverStartedPredicate().apply(serverId);
+ api.getServerApi().serverNormalPredicate().apply(serverId);
/*
* Apply a Tag to the Server. We use AssetType SERVER.
@@ -140,7 +132,7 @@ public class DeployNetworkDomainVlanAndServer
return
api.getServerImageApi().listOsImages(DatacenterIdListFilters.Builder.datacenterId(ZONE)).iterator().next().id();
}
- private static String deployNetworkDomain(DimensionDataCloudControlApi
api, Injector injector, String tagKeyId)
+ private static String deployNetworkDomain(DimensionDataCloudControlApi
api, String tagKeyId)
{
/*
@@ -153,7 +145,7 @@ public class DeployNetworkDomainVlanAndServer
* has built in predicates that will block execution and check that
the Network Domain's State has moved from PENDING_ADD to NORMAL.
* We pass the Network Domain Identifier we wish to check the state of.
*/
- waitForNetworkDomainNormal(injector, networkDomainId);
+
api.getNetworkApi().networkDomainNormalPredicate().apply(networkDomainId);
/*
* Apply a Tag to the Network Domain. We use AssetType NETWORK_DOMAIN.
@@ -163,8 +155,7 @@ public class DeployNetworkDomainVlanAndServer
return networkDomainId;
}
- private static String deployVlan(DimensionDataCloudControlApi api,
Injector injector, String
- networkDomainId, String tagKeyId)
+ private static String deployVlan(DimensionDataCloudControlApi api, String
networkDomainId, String tagKeyId)
{
/*
@@ -177,7 +168,7 @@ public class DeployNetworkDomainVlanAndServer
* A Vlan deployment is an asynchronous process. We need to wait for
it to complete. The Dimension Data provider
* has built in predicates that will block execution and check that
the Vlan's State has moved from PENDING_ADD to NORMAL.
*/
- waitForVlanNormal(injector, vlanId);
+ api.getNetworkApi().vlanNormalPredicate().apply(vlanId);
/*
* Apply a Tag to the Vlan. We use AssetType VLAN.
diff --git
a/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/NetworkDomainTearDown.java
b/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/NetworkDomainTearDown.java
index 2526fb9..112a780 100644
---
a/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/NetworkDomainTearDown.java
+++
b/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/NetworkDomainTearDown.java
@@ -18,17 +18,20 @@ package org.jclouds.examples.dimensiondata.cloudcontrol;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-import com.google.inject.Injector;
import org.jclouds.ContextBuilder;
import org.jclouds.dimensiondata.cloudcontrol.DimensionDataCloudControlApi;
-import org.jclouds.dimensiondata.cloudcontrol.domain.*;
+import org.jclouds.dimensiondata.cloudcontrol.domain.FirewallRule;
+import org.jclouds.dimensiondata.cloudcontrol.domain.NatRule;
+import org.jclouds.dimensiondata.cloudcontrol.domain.NetworkDomain;
+import org.jclouds.dimensiondata.cloudcontrol.domain.PublicIpBlock;
+import org.jclouds.dimensiondata.cloudcontrol.domain.Server;
+import org.jclouds.dimensiondata.cloudcontrol.domain.State;
+import org.jclouds.dimensiondata.cloudcontrol.domain.Vlan;
import org.jclouds.dimensiondata.cloudcontrol.options.DatacenterIdListFilters;
import org.jclouds.logging.Logger;
import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
import org.jclouds.rest.ApiContext;
-import static org.jclouds.examples.dimensiondata.cloudcontrol.WaitForUtils.*;
-
/**
* This example shows how a Network Domain and all of it's associated assets
are removed.
* Takes 4 Program Arguments:
@@ -58,14 +61,8 @@ public class NetworkDomainTearDown
.build())
{
- /*
- * Retrieve the Guice injector from the context.
- * We will use this for retrieving the some Predicates that are
used by the following operations.
- */
- Injector injector = ctx.utils().injector();
DimensionDataCloudControlApi api = ctx.getApi();
-
logger.info("Deleting resources for network domain %s",
networkDomainId);
NetworkDomain networkDomain =
api.getNetworkApi().getNetworkDomain(networkDomainId);
if (networkDomain == null)
@@ -87,7 +84,7 @@ public class NetworkDomainTearDown
deleteFirewallRules(networkDomainId, api);
- deleteServers(api, injector, datacenterId);
+ deleteServers(api, datacenterId);
ImmutableList<Server> servers =
api.getServerApi().listServers().concat().toList();
if (!servers.isEmpty())
@@ -99,9 +96,9 @@ public class NetworkDomainTearDown
}
return;
}
- deleteVlans(api, injector, networkDomain);
+ deleteVlans(api, networkDomain);
- deleteNetworkDomain(networkDomainId, api, injector);
+ deleteNetworkDomain(networkDomainId, api);
}
}
@@ -135,14 +132,14 @@ public class NetworkDomainTearDown
}
}
- private static void deleteNetworkDomain(String networkDomainId,
DimensionDataCloudControlApi api, Injector injector)
+ private static void deleteNetworkDomain(String networkDomainId,
DimensionDataCloudControlApi api)
{
logger.info("Deleting Network Domain with Id %s", networkDomainId);
api.getNetworkApi().deleteNetworkDomain(networkDomainId);
- waitForDeleteNetworkDomain(injector, networkDomainId);
+
api.getNetworkApi().networkDomainDeletedPredicate().apply(networkDomainId);
}
- private static void deleteVlans(DimensionDataCloudControlApi api, Injector
injector, NetworkDomain networkDomain)
+ private static void deleteVlans(DimensionDataCloudControlApi api,
NetworkDomain networkDomain)
{
for (Vlan vlan :
api.getNetworkApi().listVlans(networkDomain.id()).concat().toList())
{
@@ -155,7 +152,7 @@ public class NetworkDomainTearDown
}
logger.info("Deleting Vlan with Id %s", vlan.id());
api.getNetworkApi().deleteVlan(vlan.id());
- waitForDeleteVlan(injector, vlan);
+ api.getNetworkApi().vlanDeletedPredicate().apply(vlan.id());
}
catch (Exception e)
{
@@ -164,7 +161,7 @@ public class NetworkDomainTearDown
}
}
- private static void deleteServers(DimensionDataCloudControlApi api,
Injector injector, String datacenterId)
+ private static void deleteServers(DimensionDataCloudControlApi api, String
datacenterId)
{
for (Server server :
api.getServerApi().listServers(DatacenterIdListFilters.Builder.datacenterId(datacenterId)))
{
@@ -174,7 +171,7 @@ public class NetworkDomainTearDown
{
logger.info("Server with Id %s is in a FAILED_ADD state,
running the clean server operation.", server.id());
api.getServerApi().cleanServer(server.id());
- waitForServerDeleted(injector, server);
+
api.getServerApi().serverDeletedPredicate().apply(server.id());
if (api.getServerApi().getServer(server.id()) != null)
{
logger.info("Failed to clean Server with Id %s",
server.id());
@@ -190,11 +187,11 @@ public class NetworkDomainTearDown
{
logger.info("Shutting down Server with Id %s",
server.id());
api.getServerApi().shutdownServer(server.id());
- waitForServerStopped(injector, server);
+
api.getServerApi().serverStoppedPredicate().apply(server.id());
}
logger.info("Deleting Server with Id %s", server.id());
api.getServerApi().deleteServer(server.id());
- waitForServerDeleted(injector, server);
+ api.getServerApi().serverDeletedPredicate().apply(server.id());
}
catch (Exception e)
{
diff --git
a/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/WaitForUtils.java
b/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/WaitForUtils.java
deleted file mode 100644
index 53bae18..0000000
---
a/dimensiondata/src/main/java/org/jclouds/examples/dimensiondata/cloudcontrol/WaitForUtils.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.examples.dimensiondata.cloudcontrol;
-
-import com.google.common.base.Predicate;
-import com.google.inject.Injector;
-import com.google.inject.Key;
-import com.google.inject.TypeLiteral;
-import com.google.inject.name.Names;
-import org.jclouds.dimensiondata.cloudcontrol.domain.Server;
-import org.jclouds.dimensiondata.cloudcontrol.domain.Vlan;
-
-public class WaitForUtils
-{
-
- private static final String SERVER_STARTED_PREDICATE =
"SERVER_STARTED_PREDICATE";
- private static final String SERVER_NORMAL_PREDICATE =
"SERVER_NORMAL_PREDICATE";
- private static final String NETWORK_DOMAIN_NORMAL_PREDICATE =
"NETWORK_DOMAIN_NORMAL_PREDICATE";
- private static final String VLAN_NORMAL_PREDICATE =
"VLAN_NORMAL_PREDICATE";
- private static final String SERVER_DELETED_PREDICATE =
"SERVER_DELETED_PREDICATE";
- private static final String NETWORK_DOMAIN_DELETED_PREDICATE =
"NETWORK_DOMAIN_DELETED_PREDICATE";
- private static final String VLAN_DELETED_PREDICATE =
"VLAN_DELETED_PREDICATE";
- private static final String SERVER_STOPPED_PREDICATE =
"SERVER_STOPPED_PREDICATE";
-
- static void waitForServerStopped(Injector injector, Server server)
- {
- Predicate<String> serverStoppedPredicate =
injector.getInstance(Key.get(new TypeLiteral<Predicate<String>>()
- {
- }, Names.named(SERVER_STOPPED_PREDICATE)));
-
- // Wait for Server to be STOPPED
- serverStoppedPredicate.apply(server.id());
- }
-
- static void waitForDeleteVlan(Injector injector, Vlan vlan)
- {
- Predicate<String> vlanDeletedPredicate =
injector.getInstance(Key.get(new TypeLiteral<Predicate<String>>()
- {
- }, Names.named(VLAN_DELETED_PREDICATE)));
-
- // Wait for VLAN to be DELETED
- vlanDeletedPredicate.apply(vlan.id());
- }
-
- static void waitForDeleteNetworkDomain(Injector injector, String
networkDomainId)
- {
- Predicate<String> networkDomainDeletedPredicate =
injector.getInstance(Key.get(new TypeLiteral<Predicate<String>>()
- {
- }, Names.named(NETWORK_DOMAIN_DELETED_PREDICATE)));
-
- // Wait for NETWORK DOMAIN to be DELETED
- networkDomainDeletedPredicate.apply(networkDomainId);
- }
-
- static void waitForServerDeleted(Injector injector, Server server)
- {
- Predicate<String> serverDeletedPredicate =
injector.getInstance(Key.get(new TypeLiteral<Predicate<String>>()
- {
- }, Names.named(SERVER_DELETED_PREDICATE)));
-
- // Wait for Server to be DELETED
- serverDeletedPredicate.apply(server.id());
- }
-
- static void waitForServerStartedAndNormal(Injector injector, String
serverId)
- {
- Predicate<String> serverStartedPredicate =
injector.getInstance(Key.get(new TypeLiteral<Predicate<String>>()
- {
- }, Names.named(SERVER_STARTED_PREDICATE)));
- Predicate<String> serverNormalPredicate =
injector.getInstance(Key.get(new TypeLiteral<Predicate<String>>()
- {
- }, Names.named(SERVER_NORMAL_PREDICATE)));
-
- // Wait for Server to be started and NORMAL
- serverStartedPredicate.apply(serverId);
- serverNormalPredicate.apply(serverId);
- }
-
- static void waitForNetworkDomainNormal(Injector injector, String
networkDomainId)
- {
- Predicate<String> networkDomainNormalPredicate =
injector.getInstance(Key.get(new TypeLiteral<Predicate<String>>()
- {
- }, Names.named(NETWORK_DOMAIN_NORMAL_PREDICATE)));
- networkDomainNormalPredicate.apply(networkDomainId);
- }
-
- static void waitForVlanNormal(Injector injector, String vlanId)
- {
- Predicate<String> vlanNormalPredicate =
injector.getInstance(Key.get(new TypeLiteral<Predicate<String>>()
- {
- }, Names.named(VLAN_NORMAL_PREDICATE)));
- vlanNormalPredicate.apply(vlanId);
- }
-}