@Override public KeyPair load(ZoneAndName zoneAndName) { String zoneId = checkNotNull(zoneAndName, "zoneAndName").getZone(); String prefix = zoneAndName.getName(); Optional<? extends KeyPairApi> api = novaApi.getKeyPairExtensionForZone(zoneId); checkArgument(api.isPresent(), "Key pairs are required, but the extension is not available in zone %s!", zoneId); logger.debug(">> creating keyPair zone(%s) prefix(%s)", zoneId, prefix); KeyPair keyPair = null; while (keyPair == null) { try { keyPair = api.get().create(namingConvention.createWithoutPrefix().uniqueNameForGroup(prefix)); } catch (IllegalStateException e) { } } logger.debug("<< created keyPair(%s)", keyPair.getName()); return keyPair; }
private void cleanupOrphanedKeyPairsInZone(Set<String> groups, String zoneId) { Optional<? extends KeyPairApi> keyPairApi = novaApi.getKeyPairExtensionForZone(zoneId); if (keyPairApi.isPresent()) { for (String group : groups) { for (KeyPair pair : keyPairApi.get().list().filter(nameMatches(namingConvention.create().containsGroup(group)))) { ZoneAndName zoneAndName = ZoneAndName.fromZoneAndName(zoneId, pair.getName()); logger.debug(">> deleting keypair(%s)", zoneAndName); keyPairApi.get().delete(pair.getName()); // TODO: test this clear happens keyPairCache.invalidate(zoneAndName); logger.debug("<< deleted keypair(%s)", zoneAndName); } keyPairCache.invalidate(ZoneAndName.fromZoneAndName(zoneId, namingConvention.create().sharedNameForGroup(group))); } } }
public void testCreateAndDeleteKeyPairWithPublicKey() throws Exception { final String KEYPAIR_NAME = "testkp"; final String PUBLIC_KEY = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCrrBREFxz3002l1HuXz0+UOdJQ/mOYD5DiJwwB/TOybwIKQJPOxJWA9gBoo4k9dthTKBTaEYbzrll7iZcp59E80S6mNiAr3mUgi+x5Y8uyXeJ2Ws+h6peVyFVUu9epkwpcTd1GVfdcVWsTajwDz9+lxCDhl0RZKDFoT0scTxbj/w== nova@nv-aw2az2-api0002"; for (String zoneId : api.getConfiguredZones()) { KeyPairApi keyPairApi = api.getKeyPairExtensionForZone(zoneId).get(); KeyPair keyPair = null; try { keyPair = keyPairApi.createWithPublicKey(KEYPAIR_NAME, PUBLIC_KEY); assertNotNull(keyPair); } finally { if (keyPair != null) { keyPairApi.delete(KEYPAIR_NAME); } } } } }
public void testCreateAndDeleteKeyPair() throws Exception { final String KEYPAIR_NAME = "testkp"; for (String zoneId : api.getConfiguredZones()) { KeyPairApi keyPairApi = api.getKeyPairExtensionForZone(zoneId).get(); KeyPair keyPair = null; try { keyPair = keyPairApi.create(KEYPAIR_NAME); assertNotNull(keyPair); } finally { if (keyPair != null) { keyPairApi.delete(KEYPAIR_NAME); } } } }
public void testCreateAndGetAndDeleteKeyPair() throws Exception { for (String regionId : api.getConfiguredRegions()) { KeyPairApi keyPairApi = api.getKeyPairApi(regionId).get(); KeyPair createdKeyPair = null; try { createdKeyPair = keyPairApi.create(KEYPAIR_NAME); assertNotNull(createdKeyPair); KeyPair keyPair = keyPairApi.get(KEYPAIR_NAME); assertEquals(keyPair.getName(), createdKeyPair.getName()); assertEquals(keyPair.getFingerprint(), createdKeyPair.getFingerprint()); assertEquals(keyPair.getPublicKey(), createdKeyPair.getPublicKey()); } finally { if (createdKeyPair != null) { keyPairApi.delete(KEYPAIR_NAME); } } } }
private void cleanupAutoGeneratedKeyPair(String keyPairName) { logger.debug(">> cleaning up auto-generated key pairs..."); try { novaApi.getKeyPairApi(region).get().delete(keyPairName); } catch (Exception ex) { logger.warn(">> could not delete key pair %s: %s", keyPairName, ex.getMessage()); } }
public void testCreateAndDeleteKeyPairWithPublicKey() throws Exception { for (String regionId : api.getConfiguredRegions()) { KeyPairApi keyPairApi = api.getKeyPairApi(regionId).get(); KeyPair createdKeyPair = null; try { createdKeyPair = keyPairApi.createWithPublicKey(KEYPAIR_NAME, PUBLIC_KEY); assertNotNull(createdKeyPair); KeyPair keyPair = keyPairApi.get(KEYPAIR_NAME); assertEquals(keyPair.getName(), createdKeyPair.getName()); assertEquals(keyPair.getFingerprint(), createdKeyPair.getFingerprint()); assertEquals(keyPair.getPublicKey(), createdKeyPair.getPublicKey()); } finally { if (createdKeyPair != null) { keyPairApi.delete(KEYPAIR_NAME); } } } } }
public void testListKeyPairs() throws Exception { for (String zoneId : api.getConfiguredZones()) { KeyPairApi keyPairApi = api.getKeyPairExtensionForZone(zoneId).get(); FluentIterable<? extends KeyPair> keyPairsList = keyPairApi.list(); assertNotNull(keyPairsList); } }
keyPair = checkNotNull(novaApi.getKeyPairApi(region).get().get(templateOptions.getKeyPairName()), "keypair %s doesn't exist", templateOptions.getKeyPairName());
public void testCreateKeyPairWithPublicKey() throws Exception { HttpRequest create = HttpRequest .builder() .method("POST") .endpoint("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/os-keypairs") .addHeader("Accept", "application/json") .addHeader("X-Auth-Token", authToken) .payload( payloadFromStringWithContentType( "{\"keypair\":{\"name\":\"testkeypair\",\"public_key\":\"ssh-rsa AAAXB3NzaC1yc2EAAAADAQABAAAAgQDFNyGjgs6c9akgmZ2ou/fJf7Pdrc23hC95/gM/33OrG4GZABACE4DTioa/PGN+7rHv9YUavUCtXrWayhGniKq/wCuI5fo5TO4AmDNv7/sCGHIHFumADSIoLx0vFhGJIetXEWxL9r0lfFC7//6yZM2W3KcGjbMtlPXqBT9K9PzdyQ== nova@nv-aw2az1-api0001\n\"}}", "application/json")).build(); HttpResponse createResponse = HttpResponse.builder().statusCode(200) .payload(payloadFromResource("/keypair_created.json")).build(); NovaApi apiWhenServersExist = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, create, createResponse); assertEquals( apiWhenServersExist .getKeyPairExtensionForZone("az-1.region-a.geo-1") .get() .createWithPublicKey( "testkeypair", "ssh-rsa AAAXB3NzaC1yc2EAAAADAQABAAAAgQDFNyGjgs6c9akgmZ2ou/fJf7Pdrc23hC95/gM/33OrG4GZABACE4DTioa/PGN+7rHv9YUavUCtXrWayhGniKq/wCuI5fo5TO4AmDNv7/sCGHIHFumADSIoLx0vFhGJIetXEWxL9r0lfFC7//6yZM2W3KcGjbMtlPXqBT9K9PzdyQ== nova@nv-aw2az1-api0001\n") .toString(), new ParseKeyPairTest().expected().toString()); }
private void cleanupAutoGeneratedKeyPair(String keyPairName) { logger.debug(">> cleaning up auto-generated key pairs..."); try { novaApi.getKeyPairApi(region).get().delete(keyPairName); } catch (Exception ex) { logger.warn(">> could not delete key pair %s: %s", keyPairName, ex.getMessage()); } }
public void testListKeyPairs() throws Exception { for (String regionId : api.getConfiguredRegions()) { KeyPairApi keyPairApi = api.getKeyPairApi(regionId).get(); FluentIterable<? extends KeyPair> keyPairsList = keyPairApi.list(); assertNotNull(keyPairsList); } }
keyPair = checkNotNull(novaApi.getKeyPairApi(region).get().get(templateOptions.getKeyPairName()), "keypair %s doesn't exist", templateOptions.getKeyPairName());
public void testCreateKeyPairWithPublicKey() throws Exception { HttpRequest create = HttpRequest .builder() .method("POST") .endpoint("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v2/3456/os-keypairs") .addHeader("Accept", "application/json") .addHeader("X-Auth-Token", authToken) .payload( payloadFromStringWithContentType( "{\"keypair\":{\"name\":\"testkeypair\",\"public_key\":\"ssh-rsa AAAXB3NzaC1yc2EAAAADAQABAAAAgQDFNyGjgs6c9akgmZ2ou/fJf7Pdrc23hC95/gM/33OrG4GZABACE4DTioa/PGN+7rHv9YUavUCtXrWayhGniKq/wCuI5fo5TO4AmDNv7/sCGHIHFumADSIoLx0vFhGJIetXEWxL9r0lfFC7//6yZM2W3KcGjbMtlPXqBT9K9PzdyQ== nova@nv-aw2az1-api0001\n\"}}", "application/json")).build(); HttpResponse createResponse = HttpResponse.builder().statusCode(200) .payload(payloadFromResource("/keypair_details.json")).build(); NovaApi apiWhenServersExist = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, create, createResponse); assertEquals( apiWhenServersExist .getKeyPairApi("az-1.region-a.geo-1") .get() .createWithPublicKey( "testkeypair", "ssh-rsa AAAXB3NzaC1yc2EAAAADAQABAAAAgQDFNyGjgs6c9akgmZ2ou/fJf7Pdrc23hC95/gM/33OrG4GZABACE4DTioa/PGN+7rHv9YUavUCtXrWayhGniKq/wCuI5fo5TO4AmDNv7/sCGHIHFumADSIoLx0vFhGJIetXEWxL9r0lfFC7//6yZM2W3KcGjbMtlPXqBT9K9PzdyQ== nova@nv-aw2az1-api0001\n") .toString(), new ParseKeyPairTest().expected().toString()); }
@Override public KeyPair load(ZoneAndName zoneAndName) { String zoneId = checkNotNull(zoneAndName, "zoneAndName").getZone(); String prefix = zoneAndName.getName(); Optional<? extends KeyPairApi> api = novaApi.getKeyPairExtensionForZone(zoneId); checkArgument(api.isPresent(), "Key pairs are required, but the extension is not available in zone %s!", zoneId); logger.debug(">> creating keyPair zone(%s) prefix(%s)", zoneId, prefix); KeyPair keyPair = null; while (keyPair == null) { try { keyPair = api.get().create(namingConvention.createWithoutPrefix().uniqueNameForGroup(prefix)); } catch (IllegalStateException e) { } } logger.debug("<< created keyPair(%s)", keyPair.getName()); return keyPair; }
private void cleanupOrphanedKeyPairsInZone(Set<String> groups, String zoneId) { Optional<? extends KeyPairApi> keyPairApi = novaApi.getKeyPairExtensionForZone(zoneId); if (keyPairApi.isPresent()) { for (String group : groups) { for (KeyPair pair : keyPairApi.get().list().filter(nameMatches(namingConvention.create().containsGroup(group)))) { ZoneAndName zoneAndName = ZoneAndName.fromZoneAndName(zoneId, pair.getName()); logger.debug(">> deleting keypair(%s)", zoneAndName); keyPairApi.get().delete(pair.getName()); // TODO: test this clear happens keyPairCache.invalidate(zoneAndName); logger.debug("<< deleted keypair(%s)", zoneAndName); } keyPairCache.invalidate(ZoneAndName.fromZoneAndName(zoneId, namingConvention.create().sharedNameForGroup(group))); } } }
public void testDeleteKeyPair() throws Exception { HttpRequest delete = HttpRequest .builder() .method("DELETE") .endpoint("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/os-keypairs/testkeypair") .addHeader("Accept", "*/*") .addHeader("X-Auth-Token", authToken).build(); HttpResponse deleteResponse = HttpResponse.builder().statusCode(202).build(); NovaApi apiWhenServersExist = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, delete, deleteResponse); assertTrue(apiWhenServersExist.getKeyPairExtensionForZone("az-1.region-a.geo-1").get().delete("testkeypair")); } }
public void testListKeyPairsWhenResponseIs404() throws Exception { HttpRequest list = HttpRequest .builder() .method("GET") .endpoint("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/os-keypairs") .addHeader("Accept", "application/json") .addHeader("X-Auth-Token", authToken).build(); HttpResponse listResponse = HttpResponse.builder().statusCode(404).build(); NovaApi apiWhenNoServersExist = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, list, listResponse); assertTrue(apiWhenNoServersExist.getKeyPairExtensionForZone("az-1.region-a.geo-1").get().list().isEmpty()); }
public void testGetKeyPairWhenResponseIs2xx() throws Exception { HttpRequest get = HttpRequest .builder() .method("GET") .endpoint("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v2/3456/os-keypairs/testkeypair") .addHeader("Accept", "application/json") .addHeader("X-Auth-Token", authToken).build(); HttpResponse getResponse = HttpResponse.builder().statusCode(200) .payload(payloadFromResource("/keypair_details.json")).build(); NovaApi apiWhenKeyPairExists = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, get, getResponse); assertEquals(apiWhenKeyPairExists.getKeyPairApi("az-1.region-a.geo-1").get().get("testkeypair"), new ParseKeyPairTest().expected()); }
@Override public KeyPair load(RegionAndName regionAndName) { String regionId = checkNotNull(regionAndName, "regionAndName").getRegion(); String prefix = regionAndName.getName(); Optional<? extends KeyPairApi> api = novaApi.getKeyPairApi(regionId); checkArgument(api.isPresent(), "Key pairs are required, but the extension is not available in region %s!", regionId); logger.debug(">> creating keyPair region(%s) prefix(%s)", regionId, prefix); KeyPair keyPair = null; while (keyPair == null) { try { keyPair = api.get().create(namingConvention.createWithoutPrefix().uniqueNameForGroup(prefix)); } catch (IllegalStateException e) { } } logger.debug("<< created keyPair(%s)", keyPair.getName()); return keyPair; }