@Override public void execute(CloudStackClient cloudStackClient, Pool pool, DelegateExecution execution) { String keyName = KeyPairs.formatNameFromBusinessKey(execution.getProcessBusinessKey()); LOG.info("Creating admin access key pair as {}", keyName); SSHKeyPairClient sshKeyPairClient = cloudStackClient.getSSHKeyPairClient(); try { SshKeyPair sshKeyPair = sshKeyPairClient.registerSSHKeyPair(keyName, pool.getAdminAccess().getPublicKey()); LOG.info("Registered remote key with fingerprint {}", sshKeyPair.getFingerprint()); } catch (IllegalStateException e) { LOG.warn("Key with name {} already exists", keyName); SshKeyPair key = sshKeyPairClient.getSSHKeyPair(keyName); if (key.getFingerprint().equals(SshKeys.fingerprintPublicKey(pool.getAdminAccess().getPublicKey()))) { LOG.info("Fingerprints match. Not updating admin access key pair."); } else { LOG.info("Fingerprint do not match. Replacing admin access key pair."); sshKeyPairClient.deleteSSHKeyPair(keyName); sshKeyPairClient.registerSSHKeyPair(keyName, pool.getAdminAccess().getPublicKey()); } } } }
@Test public void testListSSHKeyPairs() { final Set<SshKeyPair> sshKeyPairs = client.getSSHKeyPairClient().listSSHKeyPairs(); for (SshKeyPair sshKeyPair : sshKeyPairs) { checkSSHKeyPair(sshKeyPair); } }
@Test public void testCreateDeleteSSHKeyPair() { sshKeyPair = client.getSSHKeyPairClient().createSSHKeyPair(keyPairName); assertNotNull(sshKeyPair.getPrivateKey()); checkSSHKeyPair(sshKeyPair); client.getSSHKeyPairClient().deleteSSHKeyPair(sshKeyPair.getName()); assertEquals(client.getSSHKeyPairClient().getSSHKeyPair(sshKeyPair.getName()), null); assertEquals(SshKeys.fingerprintPrivateKey(sshKeyPair.getPrivateKey()), sshKeyPair.getFingerprint()); sshKeyPair = null; }
keyPair = ComputeTestUtils.setupKeyPair(); client.getSSHKeyPairClient().deleteSSHKeyPair(keyPairName); client.getSSHKeyPairClient().registerSSHKeyPair(keyPairName, keyPair.get("public"));
@Test public void testListAndGetSSHKeyPairsWhenResponseIs2xx() { HttpResponse response = HttpResponse.builder() .statusCode(200) .payload(payloadFromResource("/listsshkeypairsresponse.json")) .build(); SSHKeyPairClient client = requestSendsResponse(HttpRequest.builder() .method("GET") .endpoint( URI.create("http://localhost:8080/client/api?response=json&" + "command=listSSHKeyPairs&listAll=true&apiKey=identity&signature=5d2J9u%2BdKpkQsadDbl9i9OcUSLQ%3D")) .addHeader("Accept", "application/json") .build(), response); assertEquals(client.listSSHKeyPairs(), ImmutableSet.of( SshKeyPair.builder().name("jclouds-keypair") .fingerprint("1c:06:74:52:3b:99:1c:95:5c:04:c2:f4:ba:77:6e:7b").build())); client = requestSendsResponse(HttpRequest.builder() .method("GET") .endpoint( URI.create("http://localhost:8080/client/api?response=json&command=listSSHKeyPairs&listAll=true&" + "name=jclouds-keypair&apiKey=identity&signature=hJIVCFOHhdOww3aq19tFHpeD2HI%3D")) .addHeader("Accept", "application/json") .build(), response); assertEquals(client.getSSHKeyPair("jclouds-keypair"), SshKeyPair.builder().name("jclouds-keypair") .fingerprint("1c:06:74:52:3b:99:1c:95:5c:04:c2:f4:ba:77:6e:7b").build()); }
@Override public void execute(CloudStackClient cloudStackClient, Pool pool, DelegateExecution execution) { String keyName = KeyPairs.formatNameFromBusinessKey(execution.getProcessBusinessKey()); LOG.info("Deleting Admin Access Key pair {}", keyName); cloudStackClient.getSSHKeyPairClient().deleteSSHKeyPair(keyName); } }
protected void checkSSHKeyPair(SshKeyPair pair) { assert pair.getName() != null : pair; assertEquals(pair.getFingerprint(), client.getSSHKeyPairClient().getSSHKeyPair(pair.getName()).getFingerprint()); }
.build()); SshKeyPair actual = client.registerSSHKeyPair("jclouds-keypair", publicKey); SshKeyPair expected = SshKeyPair.builder().name("jclouds-keypair") .fingerprint(expectedFingerprint).build();
.build()); SshKeyPair actual = client.createSSHKeyPair("jclouds-keypair"); SshKeyPair expected = SshKeyPair.builder().name("jclouds-keypair") .fingerprint("1c:06:74:52:3b:99:1c:95:5c:04:c2:f4:ba:77:6e:7b")
@BeforeMethod @AfterMethod public void removeExistingKey() { client.getSSHKeyPairClient().deleteSSHKeyPair(keyPairName); }
@Test public void testRegisterDeleteSSHKeyPair() { final Map<String, String> sshKey = SshKeys.generate(); final String publicKey = sshKey.get("public"); sshKeyPair = client.getSSHKeyPairClient().registerSSHKeyPair(keyPairName, publicKey); assertNull(sshKeyPair.getPrivateKey()); checkSSHKeyPair(sshKeyPair); client.getSSHKeyPairClient().deleteSSHKeyPair(keyPairName); assertEquals(client.getSSHKeyPairClient().getSSHKeyPair(sshKeyPair.getName()), null); assertEquals(SshKeys.fingerprintPublicKey(publicKey), sshKeyPair.getFingerprint()); sshKeyPair = null; }