nacx commented on this pull request.

Thanks, @trevorflanagan! Just some minor comments!

> +import static java.lang.String.format;
+import static 
org.jclouds.dimensiondata.cloudcontrol.utils.DimensionDataCloudControlResponseUtils.generateFirewallRuleName;
+import static 
org.jclouds.dimensiondata.cloudcontrol.utils.DimensionDataCloudControlResponseUtils.waitForServerState;
+
+@Singleton
+public class CleanupServer implements Function<String, Boolean> {
+
+   @Resource
+   @Named(ComputeServiceConstants.COMPUTE_LOGGER)
+   protected Logger logger = Logger.NULL;
+
+   private final DimensionDataCloudControlApi api;
+   private final Timeouts timeouts;
+
+   @Inject
+   public CleanupServer(final DimensionDataCloudControlApi api, final Timeouts 
timeouts) {

Remove the public modifier

> +         String networkDomainId = server.networkInfo().networkDomainId();
+         final String internalIp = 
server.networkInfo().primaryNic().privateIpv4();
+
+         // delete nat rules associated to the server, if any
+         final NetworkApi networkApi = api.getNetworkApi();
+         List<NatRule> natRulesToBeDeleted = 
networkApi.listNatRules(networkDomainId).concat()
+               .filter(new Predicate<NatRule>() {
+                  @Override
+                  public boolean apply(NatRule natRule) {
+                     return natRule.internalIp().equals(internalIp);
+                  }
+               }).toList();
+
+         for (final NatRule natRule : natRulesToBeDeleted) {
+            if (natRule.state().isNormal()) {
+               networkApi.deleteNatRule(natRule.id());

Surround with a try/catch and log a warning, for a best-effort cleanup? 
Otherwise, it will stop deleting stuff here if this call fails. (Apply the same 
criteria to the other cleanup calls).

> +   }
+
+   @Override
+   public Boolean apply(final String serverId) {
+      final ServerApi serverApi = api.getServerApi();
+      Server server = serverApi.getServer(serverId);
+
+      if (server == null) {
+         return true;
+      }
+
+      if (server.state().isFailed()) {
+         rollbackOperation(format("Server(%s) not deleted as it is in 
state(%s).", serverId, server.state()));
+      }
+
+      if (server.state().isNormal()) {

Just return false if it is not normal and continue the rest of the method 
"outside" the conditional. It is easier to read.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jclouds/jclouds-labs/pull/422#pullrequestreview-80498909

Reply via email to