@AfterClass(groups = { "integration", "live" }) @Override protected void tearDownContext() { String keyName = PREFIX + "1"; try { client.deleteKeyPairInRegion(null, keyName); } catch (Exception e) { } super.tearDownContext(); }
@VisibleForTesting void deleteKeyPair(String region, String group) { for (KeyPair keyPair : client.getKeyPairApi().get().describeKeyPairsInRegionWithFilter(region, ImmutableMultimap.<String, String>builder() .put("key-name", String.format("jclouds#%s#*", group).replace('#', delimiter)) .build())) { String keyName = keyPair.getKeyName(); Predicate<String> keyNameMatcher = namingConvention.create().containsGroup(group); String oldKeyNameRegex = String.format("jclouds#%s#%s#%s", group, region, "[0-9a-f]+").replace('#', delimiter); // old keypair pattern too verbose as it has an unnecessary region qualifier if (keyNameMatcher.apply(keyName) || keyName.matches(oldKeyNameRegex)) { Set<String> instancesUsingKeyPair = extractIdsFromInstances(concat(client.getInstanceApi().get() .describeInstancesInRegionWithFilter(region, ImmutableMultimap.<String, String>builder() .put("instance-state-name", InstanceState.TERMINATED.toString()) .put("instance-state-name", InstanceState.SHUTTING_DOWN.toString()) .put("key-name", keyPair.getKeyName()).build()))); if (!instancesUsingKeyPair.isEmpty()) { logger.debug("<< inUse keyPair(%s), by (%s)", keyPair.getKeyName(), instancesUsingKeyPair); } else { logger.debug(">> deleting keyPair(%s)", keyPair.getKeyName()); client.getKeyPairApi().get().deleteKeyPairInRegion(region, keyPair.getKeyName()); // TODO: test this clear happens credentialsMap.remove(new RegionAndName(region, keyPair.getKeyName())); credentialsMap.remove(new RegionAndName(region, group)); logger.debug("<< deleted keyPair(%s)", keyPair.getKeyName()); } } } }
@VisibleForTesting void deleteKeyPair(String region, String group) { for (KeyPair keyPair : client.getKeyPairApi().get().describeKeyPairsInRegionWithFilter(region, ImmutableMultimap.<String, String>builder() .put("key-name", String.format("jclouds#%s#*", group).replace('#', delimiter)) .build())) { String keyName = keyPair.getKeyName(); Predicate<String> keyNameMatcher = namingConvention.create().containsGroup(group); String oldKeyNameRegex = String.format("jclouds#%s#%s#%s", group, region, "[0-9a-f]+").replace('#', delimiter); // old keypair pattern too verbose as it has an unnecessary region qualifier if (keyNameMatcher.apply(keyName) || keyName.matches(oldKeyNameRegex)) { Set<String> instancesUsingKeyPair = extractIdsFromInstances(concat(client.getInstanceApi().get() .describeInstancesInRegionWithFilter(region, ImmutableMultimap.<String, String>builder() .put("instance-state-name", InstanceState.TERMINATED.toString()) .put("instance-state-name", InstanceState.SHUTTING_DOWN.toString()) .put("key-name", keyPair.getKeyName()).build()))); if (!instancesUsingKeyPair.isEmpty()) { logger.debug("<< inUse keyPair(%s), by (%s)", keyPair.getKeyName(), instancesUsingKeyPair); } else { logger.debug(">> deleting keyPair(%s)", keyPair.getKeyName()); client.getKeyPairApi().get().deleteKeyPairInRegion(region, keyPair.getKeyName()); // TODO: test this clear happens credentialsMap.remove(new RegionAndName(region, keyPair.getKeyName())); credentialsMap.remove(new RegionAndName(region, group)); logger.debug("<< deleted keyPair(%s)", keyPair.getKeyName()); } } } }
@VisibleForTesting void deleteKeyPair(String region, String group) { for (KeyPair keyPair : client.getKeyPairApi().get().describeKeyPairsInRegionWithFilter(region, ImmutableMultimap.<String, String>builder() .put("key-name", String.format("jclouds#%s#*", group).replace('#', delimiter)) .build())) { String keyName = keyPair.getKeyName(); Predicate<String> keyNameMatcher = namingConvention.create().containsGroup(group); String oldKeyNameRegex = String.format("jclouds#%s#%s#%s", group, region, "[0-9a-f]+").replace('#', delimiter); // old keypair pattern too verbose as it has an unnecessary region qualifier if (keyNameMatcher.apply(keyName) || keyName.matches(oldKeyNameRegex)) { Set<String> instancesUsingKeyPair = extractIdsFromInstances(concat(client.getInstanceApi().get() .describeInstancesInRegionWithFilter(region, ImmutableMultimap.<String, String>builder() .put("instance-state-name", InstanceState.TERMINATED.toString()) .put("instance-state-name", InstanceState.SHUTTING_DOWN.toString()) .put("key-name", keyPair.getKeyName()).build()))); if (!instancesUsingKeyPair.isEmpty()) { logger.debug("<< inUse keyPair(%s), by (%s)", keyPair.getKeyName(), instancesUsingKeyPair); } else { logger.debug(">> deleting keyPair(%s)", keyPair.getKeyName()); client.getKeyPairApi().get().deleteKeyPairInRegion(region, keyPair.getKeyName()); // TODO: test this clear happens credentialsMap.remove(new RegionAndName(region, keyPair.getKeyName())); credentialsMap.remove(new RegionAndName(region, group)); logger.debug("<< deleted keyPair(%s)", keyPair.getKeyName()); } } } }
@Test(enabled = false) void testCreateKeyPair() throws InterruptedException, ExecutionException, TimeoutException { String keyName = instancePrefix + "1"; try { client.getKeyPairApi().get().deleteKeyPairInRegion(null, keyName); } catch (Exception e) { } client.getKeyPairApi().get().deleteKeyPairInRegion(null, keyName); keyPair = client.getKeyPairApi().get().createKeyPairInRegion(null, keyName); assertNotNull(keyPair); assertNotNull(keyPair.getKeyMaterial()); assertNotNull(keyPair.getSha1OfPrivateKey()); assertEquals(keyPair.getKeyName(), keyName); }
@Test(enabled = false) void testCreateKeyPair() { String keyName = INSTANCE_PREFIX + "1"; try { client.getKeyPairApi().get().deleteKeyPairInRegion(null, keyName); } catch (Exception e) { } keyPair = client.getKeyPairApi().get().createKeyPairInRegion(null, keyName); assertNotNull(keyPair); assertNotNull(keyPair.getKeyMaterial()); assertNotNull(keyPair.getSha1OfPrivateKey()); assertEquals(keyPair.getKeyName(), keyName); }
@Test void testCreateKeyPair() { String keyName = PREFIX + "1"; try { client.deleteKeyPairInRegion(null, keyName); } catch (Exception e) { } client.deleteKeyPairInRegion(null, keyName); KeyPair result = client.createKeyPairInRegion(null, keyName); assertNotNull(result); assertNotNull(result.getKeyMaterial()); assertNotNull(result.getSha1OfPrivateKey()); assertEquals(result.getKeyName(), keyName); Set<KeyPair> twoResults = Sets.newLinkedHashSet(client.describeKeyPairsInRegion(null, keyName)); assertNotNull(twoResults); assertEquals(twoResults.size(), 1); KeyPair listPair = twoResults.iterator().next(); assertEquals(listPair.getKeyName(), result.getKeyName()); assertEquals(listPair.getSha1OfPrivateKey(), result.getSha1OfPrivateKey()); }
@AfterTest void cleanup() throws InterruptedException, ExecutionException, TimeoutException { if (address != null) client.getElasticIPAddressApi().get().releaseAddressInRegion(null, address); if (instanceId != null) client.getInstanceApi().get().terminateInstancesInRegion(null, instanceId); if (keyPair != null) client.getKeyPairApi().get().deleteKeyPairInRegion(null, keyPair.getKeyName()); if (securityGroupName != null) client.getSecurityGroupApi().get().deleteSecurityGroupInRegion(null, securityGroupName); }
protected static void cleanupExtendedStuffInRegion(String region, SecurityGroupApi securityGroupClient, KeyPairApi keyPairClient, String group) throws InterruptedException { try { for (SecurityGroup secgroup : securityGroupClient.describeSecurityGroupsInRegion(region)) if (secgroup.getName().startsWith("jclouds#" + group) || secgroup.getName().equals(group)) { securityGroupClient.deleteSecurityGroupInRegion(region, secgroup.getName()); } } catch (Exception e) { } try { for (KeyPair pair : keyPairClient.describeKeyPairsInRegion(region)) if (pair.getKeyName().startsWith("jclouds#" + group) || pair.getKeyName().equals(group)) { keyPairClient.deleteKeyPairInRegion(region, pair.getKeyName()); } } catch (Exception e) { } Thread.sleep(2000); }
client.getKeyPairApi().get().deleteKeyPairInRegion(keyPair.getRegion(), keyPair.getKeyName()); } catch (Exception e) { e.printStackTrace();