From 6d1826655060966055ef3fd609d4b35329ccd758 Mon Sep 17 00:00:00 2001 From: Yunge Zhu Date: Mon, 6 Jul 2020 14:22:35 +0800 Subject: [PATCH 1/3] update demo code --- .../microsoft/azure/azuresdktest/Main.java | 83 ------------------- 1 file changed, 83 deletions(-) delete mode 100644 src/main/java/com/microsoft/azure/azuresdktest/Main.java diff --git a/src/main/java/com/microsoft/azure/azuresdktest/Main.java b/src/main/java/com/microsoft/azure/azuresdktest/Main.java deleted file mode 100644 index 323bfd6..0000000 --- a/src/main/java/com/microsoft/azure/azuresdktest/Main.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.microsoft.azure.azuresdktest; - -import com.azure.core.http.rest.PagedIterable; -import com.azure.core.util.logging.ClientLogger; -import com.azure.core.util.polling.SyncPoller; -import com.azure.identity.DefaultAzureCredentialBuilder; -import com .azure.resourcemanager.Azure; -import com.azure.resourcemanager.keyvault.models.Vault; -import com.azure.resourcemanager.resources.fluentcore.arm.Region; -import com.azure.security.keyvault.keys.KeyClient; -import com.azure.security.keyvault.keys.KeyClientBuilder; -import com.azure.security.keyvault.keys.models.CreateRsaKeyOptions; -import com.azure.security.keyvault.keys.models.DeletedKey; -import com.azure.security.keyvault.keys.models.KeyOperation; -import com.azure.security.keyvault.keys.models.KeyProperties; -import com.azure.security.keyvault.keys.models.KeyVaultKey; - -import java.time.Duration; - -public class Main { - - private static final ClientLogger logger = new ClientLogger(Main.class); - - public static void main(String args[]) { - String rgName = "rg-weidxu"; - String vaultName = "kvweidxu"; - - //TracingSample.tracing(); - - // mgmt - azure - Azure azure = Auth.interactiveBrowser(); - long count = azure.resourceGroups().list().stream().count(); - logger.info("count {}", count); - - try { - // create vault - Vault vault = azure.vaults() - .define(vaultName) - .withRegion(Region.US_WEST) - .withNewResourceGroup(rgName) - .defineAccessPolicy() - .forServicePrincipal(Env.SERVICE_PRINCIPAL_ID) - .allowKeyAllPermissions() - .attach() - .create(); - - // pagination on mgmt - PagedIterable vaults = azure.vaults().listByResourceGroup(rgName); - vaults.stream().forEach(v -> logger.info("vault uri {}", v.vaultUri())); - - // data - client - KeyClient keyClient = new KeyClientBuilder() - // same http client - .httpClient(azure.genericResources().manager().inner().getHttpPipeline().getHttpClient()) - .credential(new DefaultAzureCredentialBuilder().build()) - .vaultUrl(vault.vaultUri()) - .buildClient(); - - // create rsa key - KeyVaultKey key = keyClient.createRsaKey(new CreateRsaKeyOptions("key1") - .setKeySize(2048) - .setKeyOperations(KeyOperation.UNWRAP_KEY, KeyOperation.WRAP_KEY, KeyOperation.DECRYPT, KeyOperation.ENCRYPT)); - - // pagination on data - PagedIterable keys = keyClient.listPropertiesOfKeys(); - keys.stream().forEach(k -> logger.info("key id {}", k.getId())); - - // LRO on data - SyncPoller deleteKeyPoller = keyClient.beginDeleteKey(key.getName()); - deleteKeyPoller.waitForCompletion(); - - // LRO on mgmt - SyncPoller syncPoller = azure.resourceGroups().beginDeleteByName(rgName).getSyncPoller(); - Thread.sleep(Duration.ofSeconds(3).toMillis()); - syncPoller.poll(); - } catch (Throwable e) { - logger.logThrowableAsError(e); - } finally { - // clean up - azure.resourceGroups().beginDeleteByName(rgName); - } - } -} From 510b9805e763080a94b977e318e14fa53615a868 Mon Sep 17 00:00:00 2001 From: Yunge Zhu Date: Mon, 6 Jul 2020 14:23:35 +0800 Subject: [PATCH 2/3] rename file --- .../microsoft/azure/azuresdktest/Demo.java | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/main/java/com/microsoft/azure/azuresdktest/Demo.java diff --git a/src/main/java/com/microsoft/azure/azuresdktest/Demo.java b/src/main/java/com/microsoft/azure/azuresdktest/Demo.java new file mode 100644 index 0000000..e9915fd --- /dev/null +++ b/src/main/java/com/microsoft/azure/azuresdktest/Demo.java @@ -0,0 +1,109 @@ +package com.microsoft.azure.azuresdktest; + +import com.azure.core.credential.TokenCredential; +import com.azure.core.http.policy.HttpLogDetailLevel; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.HttpClient; +import com.azure.core.http.netty.NettyAsyncHttpClientBuilder; +import com.azure.core.management.AzureEnvironment; +import com.azure.core.util.logging.ClientLogger; +import com.azure.core.util.polling.SyncPoller; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.azure.identity.EnvironmentCredentialBuilder; +import com .azure.resourcemanager.Azure; +import com.azure.resourcemanager.keyvault.models.Vault; +import com.azure.resourcemanager.resources.fluentcore.arm.Region; +import com.azure.resourcemanager.resources.fluentcore.profile.AzureProfile; +import com.azure.resourcemanager.resources.models.ResourceGroup; +import com.azure.security.keyvault.keys.KeyClient; +import com.azure.security.keyvault.keys.KeyClientBuilder; +import com.azure.security.keyvault.keys.models.CreateRsaKeyOptions; +import com.azure.security.keyvault.keys.models.DeletedKey; +import com.azure.security.keyvault.keys.models.KeyOperation; +import com.azure.security.keyvault.keys.models.KeyProperties; +import com.azure.security.keyvault.keys.models.KeyVaultKey; + +import java.time.Duration; + +public class Demo { + + private static final ClientLogger logger = new ClientLogger(Demo.class); + + public static void main(String args[]) { + String resourceGroupName = "Demo0706"; + String vaultName = "Vault0706"; + + // Httpclient in azure-core, will be used in both management and data SDKs + HttpClient httpClient = new NettyAsyncHttpClientBuilder().build(); + + // TokenCredential in azure-identity, will be used for auth both in management and data operation + TokenCredential credential = new EnvironmentCredentialBuilder().build(); + AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE); + + // management + logger.info("Creating key vault.."); + Azure azure = Azure.configure() + .withLogLevel(HttpLogDetailLevel.NONE) + // same http client + .withHttpClient(httpClient) + // same credential + .authenticate(credential, profile) + .withSubscription(System.getenv(("AZURE_SUBSCRIPTION_ID"))); + + try { + // management - create key vault + Vault vault = azure.vaults() + .define(vaultName) + .withRegion(Region.US_WEST) + .withNewResourceGroup(resourceGroupName) + .defineAccessPolicy() + .forServicePrincipal(System.getenv("AZURE_CLIENT_ID")) + .allowKeyAllPermissions() + .attach() + .create(); + + // management - pagination on list resource groups + PagedIterable resourceGroups = azure.resourceGroups().list(); + resourceGroups.stream().forEach(r -> logger.info("Resource group: {}", r.id())); + + // management - pagination on list vaults + PagedIterable vaults = azure.vaults().listByResourceGroup(resourceGroupName); + vaults.stream().forEach(v -> logger.info("Vault uri {}", v.vaultUri())); + + // data - create client + KeyClient keyClient = new KeyClientBuilder() + // same http client + .httpClient(httpClient) + // same credential + .credential(credential) + .vaultUrl(vault.vaultUri()) + .buildClient(); + + // data - create rsa key + KeyVaultKey key = keyClient.createRsaKey(new CreateRsaKeyOptions("key1") + .setKeySize(2048) + .setKeyOperations(KeyOperation.UNWRAP_KEY, KeyOperation.WRAP_KEY, KeyOperation.DECRYPT, KeyOperation.ENCRYPT)); + + // data - pagination on list keys + PagedIterable keys = keyClient.listPropertiesOfKeys(); + keys.stream().forEach(k -> logger.info("Key id {}", k.getId())); + + // data - LRO on delete key + SyncPoller deleteKeyPoller = keyClient.beginDeleteKey(key.getName()); + deleteKeyPoller.waitForCompletion(); + + // management - LRO on delete resource group + SyncPoller syncPoller = azure.resourceGroups().beginDeleteByName(resourceGroupName).getSyncPoller(); + Thread.sleep(Duration.ofSeconds(3).toMillis()); + syncPoller.poll(); + } catch (Throwable e) { + logger.error(e.getStackTrace().toString()); + logger.error(e.getMessage()); + logger.error(e.toString()); + logger.logThrowableAsError(e); + } finally { + // clean up + azure.resourceGroups().beginDeleteByName(resourceGroupName); + } + } +} From 6c28359e96810cb9ef34602b2aaf7e219f415780 Mon Sep 17 00:00:00 2001 From: Yunge Zhu Date: Mon, 6 Jul 2020 14:25:13 +0800 Subject: [PATCH 3/3] cleanup --- src/main/java/com/microsoft/azure/azuresdktest/Demo.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/com/microsoft/azure/azuresdktest/Demo.java b/src/main/java/com/microsoft/azure/azuresdktest/Demo.java index e9915fd..f50184b 100644 --- a/src/main/java/com/microsoft/azure/azuresdktest/Demo.java +++ b/src/main/java/com/microsoft/azure/azuresdktest/Demo.java @@ -97,9 +97,6 @@ public static void main(String args[]) { Thread.sleep(Duration.ofSeconds(3).toMillis()); syncPoller.poll(); } catch (Throwable e) { - logger.error(e.getStackTrace().toString()); - logger.error(e.getMessage()); - logger.error(e.toString()); logger.logThrowableAsError(e); } finally { // clean up