http://git-wip-us.apache.org/repos/asf/jclouds/blob/a2dee2f8/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Certificate.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Certificate.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Certificate.java new file mode 100644 index 0000000..65de40c --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Certificate.java @@ -0,0 +1,638 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import java.util.Map; +import java.util.List; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +import com.google.auto.value.AutoValue; + + +@AutoValue +public abstract class Certificate { + @AutoValue + public abstract static class CertificateAttributes { + @Nullable + public abstract Integer created(); + + public abstract boolean enabled(); + + @Nullable + public abstract Integer expiry(); + + @Nullable + public abstract Integer notBefore(); + + @Nullable + public abstract String recoveryLevel(); + + @Nullable + public abstract Integer updated(); + + @SerializedNames({"created", "enabled", "exp", "nbf", "recoveryLevel", "updated"}) + public static CertificateAttributes create(final Integer created, + final boolean enabled, + final Integer expiry, + final Integer notBefore, + final String recoveryLevel, + final Integer updated) { + return new AutoValue_Certificate_CertificateAttributes(created, enabled, expiry, notBefore, recoveryLevel, updated); + } + } + + @AutoValue + public abstract static class IssuerParameters { + @Nullable + public abstract String certType(); + + @Nullable + public abstract String name(); + + @SerializedNames({"cty", "name"}) + public static IssuerParameters create(final String certType, + final String name) { + return new AutoValue_Certificate_IssuerParameters(certType, name); + } + } + + @AutoValue + public abstract static class KeyProperties { + @Nullable + public abstract Boolean exportable(); + + @Nullable + public abstract Integer keySize(); + + @Nullable + public abstract String keyType(); + + @Nullable + public abstract Boolean reuseKey(); + + @SerializedNames({"exportable", "key_size", "kty", "reuse_key"}) + public static KeyProperties create(final boolean exportable, + final Integer keySize, + final String keyType, + final boolean reuseKey) { + return new AutoValue_Certificate_KeyProperties(exportable, keySize, keyType, reuseKey); + } + } + + @AutoValue + public abstract static class LifetimeActionTrigger { + @Nullable + public abstract Integer daysBeforeExpiry(); + + @Nullable + public abstract Integer lifetimePercentage(); + + @SerializedNames({"days_before_expiry", "lifetime_percentage"}) + public static LifetimeActionTrigger create(final Integer daysBeforeExpiry, + final Integer lifetimePercentage) { + return new AutoValue_Certificate_LifetimeActionTrigger(daysBeforeExpiry, lifetimePercentage); + } + } + + @AutoValue + public abstract static class LifetimeActionAction { + public abstract String actionType(); + + @SerializedNames({"action_type"}) + public static LifetimeActionAction create(final String actionType) { + return new AutoValue_Certificate_LifetimeActionAction(actionType); + } + } + + @AutoValue + public abstract static class LifetimeAction { + public abstract LifetimeActionAction action(); + + public abstract LifetimeActionTrigger trigger(); + + @SerializedNames({"action", "trigger"}) + public static LifetimeAction create(final LifetimeActionAction action, + final LifetimeActionTrigger trigger) { + return new AutoValue_Certificate_LifetimeAction(action, trigger); + } + } + + @AutoValue + public abstract static class SecretProperties { + public abstract String contentType(); + + @SerializedNames({"contentType"}) + public static SecretProperties create(final String contentType) { + return new AutoValue_Certificate_SecretProperties(contentType); + } + } + + @AutoValue + public abstract static class SubjectAlternativeNames { + public abstract List<String> dnsNames(); + + public abstract List<String> emails(); + + public abstract List<String> upns(); + + @SerializedNames({"dns_names", "emails", "upns"}) + public static SubjectAlternativeNames create(final List<String> dnsNames, + final List<String> emails, + final List<String> upns) { + return new AutoValue_Certificate_SubjectAlternativeNames( + dnsNames != null ? ImmutableList.copyOf(dnsNames) : ImmutableList.<String> of(), + emails != null ? ImmutableList.copyOf(emails) : ImmutableList.<String> of(), + upns != null ? ImmutableList.copyOf(upns) : ImmutableList.<String> of() + ); + } + } + + @AutoValue + public abstract static class X509CertificateProperties { + public abstract List<String> enhancedKeyUsage(); + + public abstract List<String> keyUsage(); + + @Nullable + public abstract SubjectAlternativeNames subjectAltNames(); + + @Nullable + public abstract String subject(); + + @Nullable + public abstract Integer validityMonths(); + + @SerializedNames({"ekus", "key_usage", "sans", "subject", "validity_months"}) + public static X509CertificateProperties create(final List<String> enhancedKeyUsage, + final List<String> keyUsage, + final SubjectAlternativeNames subjectAltNames, + final String subject, + final Integer validityMonths) { + return new AutoValue_Certificate_X509CertificateProperties( + enhancedKeyUsage != null ? ImmutableList.copyOf(enhancedKeyUsage) : ImmutableList.<String> of(), + keyUsage != null ? ImmutableList.copyOf(keyUsage) : ImmutableList.<String> of(), + subjectAltNames, + subject, + validityMonths + ); + } + } + + @AutoValue + public abstract static class CertificatePolicy { + @Nullable + public abstract CertificateAttributes attributes(); + + @Nullable + public abstract String id(); + + @Nullable + public abstract IssuerParameters issuer(); + + @Nullable + public abstract KeyProperties keyProps(); + + public abstract List<LifetimeAction> lifetimeActions(); + + @Nullable + public abstract SecretProperties secretProps(); + + @Nullable + public abstract X509CertificateProperties x509props(); + + @SerializedNames({"attributes", "id", "issuer", "key_props", "lifetime_actions", "secret_props", "x509_props"}) + public static CertificatePolicy create(final CertificateAttributes attributes, + final String id, + final IssuerParameters issuer, + final KeyProperties keyProps, + final List<LifetimeAction> lifetimeActions, + final SecretProperties secretProperties, + final X509CertificateProperties x509Props) { + return new AutoValue_Certificate_CertificatePolicy( + attributes, + id, + issuer, + keyProps, + lifetimeActions != null ? ImmutableList.copyOf(lifetimeActions) : ImmutableList.<LifetimeAction>of(), + secretProperties, + x509Props + ); + } + } + + @AutoValue + public abstract static class CertificateError { + @Nullable + public abstract String code(); + + @Nullable + public abstract String message(); + + @SerializedNames({"code", "message"}) + public static CertificateError create(final String code, + final String message) { + return new AutoValue_Certificate_CertificateError(code, message); + } + } + + @AutoValue + public abstract static class CertificateOperation { + @Nullable + public abstract Boolean cancellationRequested(); + + @Nullable + public abstract String csr(); + + @Nullable + public abstract CertificateError error(); + + @Nullable + public abstract String id(); + + @Nullable + public abstract IssuerParameters issuer(); + + @Nullable + public abstract String requestId(); + + @Nullable + public abstract String status(); + + @Nullable + public abstract String statusDetails(); + + @Nullable + public abstract String target(); + + @SerializedNames({"cancellation_requested", "csr", "error", "id", "issuer", "request_id", "status", "status_details", "target"}) + public static CertificateOperation create(final boolean cancellationRequested, + final String csr, + final CertificateError error, + final String id, + final IssuerParameters issuer, + final String requestId, + final String status, + final String statusDetails, + final String target) { + return new AutoValue_Certificate_CertificateOperation( + cancellationRequested, + csr, + error, + id, + issuer, + requestId, + status, + statusDetails, + target); + } + } + + @AutoValue + public abstract static class CertificateBundle { + @Nullable + public abstract CertificateAttributes attributes(); + + @Nullable + public abstract String certificate(); + + @Nullable + public abstract String contentType(); + + @Nullable + public abstract String id(); + + @Nullable + public abstract String keyId(); + + @Nullable + public abstract CertificatePolicy policy(); + + @Nullable + public abstract String secretId(); + + @Nullable + public abstract Map<String, String> tags(); + + @Nullable + public abstract String thumbprint(); + + @SerializedNames({"attributes", "cer", "contentType", "id", "kid", "policy", "sid", "tags", "x5t"}) + public static CertificateBundle create(final CertificateAttributes attributes, + final String certificate, + final String contentType, + final String id, + final String keyId, + final CertificatePolicy policy, + final String secretId, + final Map<String, String> tags, + final String thumbprint) { + return new AutoValue_Certificate_CertificateBundle(attributes, + certificate, + contentType, + id, + keyId, + policy, + secretId, + tags != null ? ImmutableMap.copyOf(tags) : null, + thumbprint + ); + } + } + + @AutoValue + public abstract static class CertificateIssuer { + public abstract String id(); + + public abstract String provider(); + + @SerializedNames({"id", "provider"}) + public static CertificateIssuer create(final String id, + final String provider) { + return new AutoValue_Certificate_CertificateIssuer(id, provider); + } + } + + @AutoValue + public abstract static class IssuerAttributes { + @Nullable + public abstract Integer created(); + + @Nullable + public abstract Boolean enabled(); + + @Nullable + public abstract Integer updated(); + + @SerializedNames({"created", "enabled", "updated"}) + public static IssuerAttributes create(final Integer created, + final Boolean enabled, + final Integer updated) { + return new AutoValue_Certificate_IssuerAttributes(created, enabled, updated); + } + } + + @AutoValue + public abstract static class IssuerCredentials { + @Nullable + public abstract String accountId(); + + @Nullable + public abstract String password(); + + @SerializedNames({"account_id", "pwd"}) + public static IssuerCredentials create(final String accountId, + final String password) { + return new AutoValue_Certificate_IssuerCredentials(accountId, password); + } + } + + @AutoValue + public abstract static class OrganizationDetails { + public abstract List<AdministrationDetails> adminDetails(); + + @Nullable + public abstract String id(); + + @SerializedNames({"admin_details", "id"}) + public static OrganizationDetails create(final List<AdministrationDetails> adminDetails, + final String id) { + return new AutoValue_Certificate_OrganizationDetails( + adminDetails != null ? ImmutableList.copyOf(adminDetails) : ImmutableList.<AdministrationDetails> of(), + id + ); + } + } + + @AutoValue + public abstract static class AdministrationDetails { + @Nullable + public abstract String email(); + + @Nullable + public abstract String firstName(); + + @Nullable + public abstract String lastName(); + + @Nullable + public abstract String phoneNumber(); + + @SerializedNames({"email", "first_name", "last_name", "phone"}) + public static AdministrationDetails create(final String email, + final String firstName, + final String lastName, + final String phoneNumber) { + return new AutoValue_Certificate_AdministrationDetails(email, firstName, lastName, phoneNumber); + } + } + + @AutoValue + public abstract static class IssuerBundle { + @Nullable + public abstract IssuerAttributes attributes(); + + @Nullable + public abstract IssuerCredentials credentials(); + + @Nullable + public abstract String id(); + + @Nullable + public abstract OrganizationDetails organizationDetails(); + + @Nullable + public abstract String provider(); + + @SerializedNames({"attributes", "credentials", "id", "org_details", "provider"}) + public static IssuerBundle create(final IssuerAttributes attributes, + final IssuerCredentials credentials, + final String id, + final OrganizationDetails orgDetails, + final String provider) { + return new AutoValue_Certificate_IssuerBundle(attributes, credentials, id, orgDetails, provider); + } + } + + @AutoValue + public abstract static class Contact { + @Nullable + public abstract String email(); + + @Nullable + public abstract String name(); + + @Nullable + public abstract String phone(); + + @SerializedNames({"email", "name", "phone"}) + public static Contact create(final String email, + final String name, + final String phone) { + return new AutoValue_Certificate_Contact(email, name, phone); + } + } + + @AutoValue + public abstract static class Contacts { + public abstract List<Contact> contacts(); + + @Nullable + public abstract String id(); + + @SerializedNames({"contacts", "id"}) + public static Contacts create(final List<Contact> contacts, + final String id) { + return new AutoValue_Certificate_Contacts( + contacts != null ? ImmutableList.copyOf(contacts) : ImmutableList.<Contact> of(), + id + ); + } + } + + @AutoValue + public abstract static class DeletedCertificateBundle { + @Nullable + public abstract CertificateAttributes attributes(); + + @Nullable + public abstract String bytes(); + + @Nullable + public abstract Integer deletedDate(); + + @Nullable + public abstract String id(); + + @Nullable + public abstract String keyId(); + + @Nullable + public abstract String recoveryId(); + + @Nullable + public abstract Integer scheduledPurgeDate(); + + @Nullable + public abstract String secredId(); + + @Nullable + public abstract Map<String, String> tags(); + + @Nullable + public abstract String thumbprint(); + + @SerializedNames({"attributes", "cer", "deletedDate", "id", "kid", "recoveryId", "scheduledPurgeDate", "sid", "tags", "x5t"}) + public static DeletedCertificateBundle create(final CertificateAttributes attributes, + final String bytes, + final Integer deletedDate, + final String id, + final String keyId, + final String recoveryId, + final Integer scheduledPurgeDate, + final String secretId, + final Map<String, String> tags, + final String thumbprint) { + return new AutoValue_Certificate_DeletedCertificateBundle( + attributes, + bytes, + deletedDate, + id, + keyId, + recoveryId, + scheduledPurgeDate, + secretId, + tags != null ? ImmutableMap.copyOf(tags) : null, + thumbprint + ); + } + } + + @AutoValue + public abstract static class DeletedCertificate { + @Nullable + public abstract CertificateAttributes attributes(); + + @Nullable + public abstract Integer deletedDate(); + + @Nullable + public abstract String id(); + + @Nullable + public abstract String recoveryId(); + + @Nullable + public abstract Integer scheduledPurgeDate(); + + @Nullable + public abstract Map<String, String> tags(); + + @Nullable + public abstract String thumbprint(); + + @SerializedNames({"attributes", "deletedDate", "id", "recoveryId", "scheduledPurgeDate", "tags", "x5t"}) + public static DeletedCertificate create(final CertificateAttributes attributes, + final Integer deletedDate, + final String id, + final String recoveryId, + final Integer scheduledPurgeDate, + final Map<String, String> tags, + final String thumbprint) { + return new AutoValue_Certificate_DeletedCertificate( + attributes, + deletedDate, + id, + recoveryId, + scheduledPurgeDate, + tags != null ? ImmutableMap.copyOf(tags) : null, + thumbprint + ); + } + } + + @Nullable + public abstract CertificateAttributes attributes(); + + @Nullable + public abstract String id(); + + @Nullable + public abstract Map<String, String> tags(); + + @Nullable + public abstract String thumbprint(); + + @SerializedNames({"attributes", "id", "tags", "x5t"}) + public static Certificate create(final CertificateAttributes attributes, + final String id, + final Map<String, String> tags, + final String thumbprint) { + return new AutoValue_Certificate( + attributes, + id, + tags != null ? ImmutableMap.copyOf(tags) : null, + thumbprint + ); + } + + Certificate() { + } +}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/a2dee2f8/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Key.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Key.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Key.java new file mode 100644 index 0000000..ed9b778 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Key.java @@ -0,0 +1,229 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import java.util.Map; +import java.util.List; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +import com.google.auto.value.AutoValue; + +@AutoValue +public abstract class Key { + @AutoValue + public abstract static class JsonWebKey { + @Nullable + public abstract String crv(); + + @Nullable + public abstract String d(); + + @Nullable + public abstract String dp(); + + @Nullable + public abstract String dq(); + + @Nullable + public abstract String e(); + + @Nullable + public abstract String k(); + + @Nullable + public abstract String keyHsm(); + + public abstract List<String> keyOps(); + + @Nullable + public abstract String kid(); + + @Nullable + public abstract String kty(); + + @Nullable + public abstract String n(); + + @Nullable + public abstract String p(); + + @Nullable + public abstract String q(); + + @Nullable + public abstract String qi(); + + @Nullable + public abstract String x(); + + @Nullable + public abstract String y(); + + @SerializedNames({"crv", "d", "dp", "dq", "e", "k", "key_hsm", "key_ops", "kid", "kty", "n", "p", "q", "qi", "x", "y"}) + public static JsonWebKey create(final String crv, final String d, final String dp, final String dq, + final String e, final String k, final String keyHsm, final List<String> keyOps, + final String kid, final String kty, final String n, final String p, + final String q, final String qi, final String x, final String y) { + return new AutoValue_Key_JsonWebKey( + crv, d, dp, dq, e, k, keyHsm, + keyOps != null ? ImmutableList.copyOf(keyOps) : ImmutableList.<String> of(), + kid, kty, n, p, q, qi, x, y); + } + } + + @AutoValue + public abstract static class KeyAttributes { + @Nullable + public abstract Boolean enabled(); + + @Nullable + public abstract Integer created(); + + @Nullable + public abstract Integer expires(); + + @Nullable + public abstract Integer notBefore(); + + @Nullable + public abstract String recoveryLevel(); + + @Nullable + public abstract Integer updated(); + + @SerializedNames({"enabled", "created", "expires", "notBefore", "recoveryLevel", "updated"}) + public static KeyAttributes create(final Boolean enabled, + final Integer created, + final Integer expires, + final Integer notBefore, + final String recoveryLevel, + final Integer updated) { + return new AutoValue_Key_KeyAttributes(enabled, created, expires, notBefore, recoveryLevel, updated); + } + + KeyAttributes() { + } + } + + @AutoValue + public abstract static class KeyBundle { + @Nullable + public abstract KeyAttributes attributes(); + + @Nullable + public abstract JsonWebKey key(); + + @Nullable + public abstract Boolean managed(); + + @Nullable + public abstract Map<String, String> tags(); + + @SerializedNames({"attributes", "key", "managed", "tags"}) + public static KeyBundle create(final KeyAttributes attributes, final JsonWebKey key, final boolean managed, final Map<String, String> tags) { + return new AutoValue_Key_KeyBundle( + attributes, + key, + managed, + tags != null ? ImmutableMap.copyOf(tags) : null + ); + } + } + + @AutoValue + public abstract static class DeletedKeyBundle { + @Nullable + public abstract KeyAttributes attributes(); + + @Nullable + public abstract String deletedDate(); + + @Nullable + public abstract JsonWebKey key(); + + @Nullable + public abstract Boolean managed(); + + @Nullable + public abstract String recoveryId(); + + @Nullable + public abstract String scheduledPurgeDate(); + + @Nullable + public abstract Map<String, String> tags(); + + @SerializedNames({"attributes", "deletedDate", "key", "managed", "recoveryId", "scheduledPurgeDate", "tags"}) + public static DeletedKeyBundle create(final KeyAttributes attributes, final String deletedDate, final JsonWebKey key, final boolean managed, final String recoveryId, final String scheduledPurgeDate, final Map<String, String> tags) { + return new AutoValue_Key_DeletedKeyBundle( + attributes, + deletedDate, + key, + managed, + recoveryId, + scheduledPurgeDate, + tags != null ? ImmutableMap.copyOf(tags) : null + + ); + } + } + + @AutoValue + public abstract static class KeyOperationResult { + @Nullable + public abstract String keyId(); + + @Nullable + public abstract String value(); + + @SerializedNames({"kid", "value"}) + public static KeyOperationResult create(final String keyId, final String value) { + return new AutoValue_Key_KeyOperationResult( + keyId, + value + ); + } + } + + @Nullable + public abstract String kid(); + + public abstract KeyAttributes attributes(); + + @Nullable + public abstract Boolean managed(); + + @Nullable + public abstract Map<String, String> tags(); + + @SerializedNames({"kid", "attributes", "managed", "tags"}) + public static Key create(final String kid, final KeyAttributes attributes, final boolean managed, final Map<String, String> tags) { + return new AutoValue_Key( + kid, + attributes, + managed, + tags != null ? ImmutableMap.copyOf(tags) : null + ); + } + + Key() { + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/a2dee2f8/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/SKU.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/SKU.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/SKU.java index 4c414e5..6af4406 100644 --- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/SKU.java +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/SKU.java @@ -16,36 +16,25 @@ */ package org.jclouds.azurecompute.arm.domain; -import com.google.auto.value.AutoValue; import org.jclouds.javax.annotation.Nullable; import org.jclouds.json.SerializedNames; -/** - * SKU - */ +import com.google.auto.value.AutoValue; + @AutoValue public abstract class SKU { - /** - * The location of the SKU - */ @Nullable public abstract String location(); - - /** - * The name of the SKU - */ @Nullable public abstract String name(); - - /** - * The id of the SKU - */ @Nullable public abstract String id(); + @Nullable + public abstract String family(); + + @SerializedNames({"location", "name", "id", "family"}) + public static SKU create(final String location, final String name, final String id, final String family) { - @SerializedNames({"location", "name", "id"}) - public static SKU create(final String location, final String name, final String id) { - - return new AutoValue_SKU(location, name, id); + return new AutoValue_SKU(location, name, id, family); } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/a2dee2f8/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Secret.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Secret.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Secret.java new file mode 100644 index 0000000..789a71c --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Secret.java @@ -0,0 +1,186 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import com.google.common.collect.ImmutableMap; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +import java.util.Map; + +import com.google.auto.value.AutoValue; + +@AutoValue +public abstract class Secret { + + @AutoValue + public abstract static class SecretAttributes { + @Nullable + public abstract Boolean enabled(); + + @Nullable + public abstract Integer created(); + + @Nullable + public abstract Integer expires(); + + @Nullable + public abstract Integer notBefore(); + + @Nullable + public abstract String recoveryLevel(); + + @Nullable + public abstract Integer updated(); + + @SerializedNames({"enabled", "created", "expires", "notBefore", "recoveryLevel", "updated"}) + public static SecretAttributes create(final Boolean enabled, + final Integer created, + final Integer expires, + final Integer notBefore, + final String recoveryLevel, + final Integer updated) { + return new AutoValue_Secret_SecretAttributes(enabled, created, expires, notBefore, recoveryLevel, updated); + } + + SecretAttributes() { + } + } + + @AutoValue + public abstract static class DeletedSecretBundle { + @Nullable + public abstract SecretAttributes attributes(); + + @Nullable + public abstract String contentType(); + + @Nullable + public abstract String deletedDate(); + + @Nullable + public abstract String id(); + + @Nullable + public abstract String kid(); + + @Nullable + public abstract Boolean managed(); + + @Nullable + public abstract String recoveryId(); + + @Nullable + public abstract String scheduledPurgeDate(); + + @Nullable + public abstract Map<String, String> tags(); + + @Nullable + public abstract String value(); + + @SerializedNames({"attributes", "contentType", "deletedDate", "id", "kid", "managed", "recoveryId", "scheduledPurgeDate", "tags", "value"}) + public static DeletedSecretBundle create(final SecretAttributes attributes, + final String contentType, + final String deletedDate, + final String id, + final String kid, + final Boolean managed, + final String recoveryId, + final String scheduledPurgeDate, + final Map<String, String> tags, + String value) { + return new AutoValue_Secret_DeletedSecretBundle( + attributes, contentType, deletedDate, + id, kid, managed, recoveryId, scheduledPurgeDate, + tags != null ? ImmutableMap.copyOf(tags) : null, + value); + } + } + + @AutoValue + public abstract static class SecretBundle { + @Nullable + public abstract SecretAttributes attributes(); + + @Nullable + public abstract String contentType(); + + @Nullable + public abstract String id(); + + @Nullable + public abstract String kid(); + + @Nullable + public abstract Boolean managed(); + + @Nullable + public abstract Map<String, String> tags(); + + @Nullable + public abstract String value(); + + @SerializedNames({"attributes", "contentType", "id", "kid", "managed", "tags", "value"}) + public static SecretBundle create(final SecretAttributes attributes, + final String contentType, + final String id, + final String kid, + final Boolean managed, + final Map<String, String> tags, + String value) { + return new AutoValue_Secret_SecretBundle( + attributes, contentType, id, + kid, managed, + tags != null ? ImmutableMap.copyOf(tags) : null, + value); + } + } + + @Nullable + public abstract SecretAttributes attributes(); + + @Nullable + public abstract String contentType(); + + @Nullable + public abstract String id(); + + @Nullable + public abstract Boolean managed(); + + @Nullable + public abstract Map<String, String> tags(); + + @SerializedNames({"attributes", "contentType", "id", "managed", "tags"}) + public static Secret create(final SecretAttributes attributes, + final String contentType, + final String id, + final Boolean managed, + final Map<String, String> tags) { + return new AutoValue_Secret( + attributes, + contentType, + id, + managed, + tags != null ? ImmutableMap.copyOf(tags) : null + ); + } + + Secret() { + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/a2dee2f8/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Vault.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Vault.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Vault.java new file mode 100644 index 0000000..3683df6 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Vault.java @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import java.util.Date; +import java.util.Map; + +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +import com.google.auto.value.AutoValue; +import com.google.common.collect.ImmutableMap; + +@AutoValue +public abstract class Vault { + + @AutoValue + public abstract static class DeletedVault { + @Nullable public abstract String id(); + @Nullable public abstract String name(); + @Nullable public abstract String type(); + @Nullable public abstract DeletedVaultProperties properties(); + + @SerializedNames({"id", "name", "type", "properties"}) + public static DeletedVault create(final String id, final String name, + final String type, final DeletedVaultProperties properties) { + return new AutoValue_Vault_DeletedVault(id, name, type, properties); + } + } + + @AutoValue + public abstract static class DeletedVaultProperties { + @Nullable public abstract Date deletionDate(); + @Nullable public abstract String location(); + @Nullable public abstract Date scheduledPurgeDate(); + @Nullable public abstract Map<String, String> tags(); + @Nullable public abstract String vaultId(); + + @SerializedNames({"deletionDate", "location", "scheduledPurgeDate", "tags", "vaultId"}) + public static DeletedVaultProperties create (final Date deletionDate, final String location, + final Date scheduledPurgeDate, final Map<String, String> tags, + final String vaultId) { + return new AutoValue_Vault_DeletedVaultProperties( + deletionDate, + location, + scheduledPurgeDate, + tags != null ? ImmutableMap.copyOf(tags) : null, + vaultId + ); + } + } + + @Nullable public abstract String id(); + @Nullable public abstract String type(); + public abstract String location(); + @Nullable public abstract Map<String, String> tags(); + @Nullable public abstract String name(); + public abstract VaultProperties properties(); + + @SerializedNames({"id", "name", "type", "location", "properties", "tags"}) + public static Vault create(final String id, final String name, final String type, + final String location, + final VaultProperties properties, final Map<String, String> tags) { + return builder() + .id(id) + .name(name) + .type(type) + .location(location) + .properties(properties) + .tags(tags != null ? ImmutableMap.copyOf(tags) : null) + .build(); + } + + public abstract Builder toBuilder(); + + public static Builder builder() { + return new AutoValue_Vault.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder id(String id); + public abstract Builder name(String name); + public abstract Builder type(String type); + public abstract Builder location(String location); + public abstract Builder properties(VaultProperties properties); + public abstract Builder tags(Map<String, String> tags); + + abstract Map<String, String> tags(); + abstract Vault autoBuild(); + + public Vault build() { + tags(tags() != null ? ImmutableMap.copyOf(tags()) : null); + return autoBuild(); + } + + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/a2dee2f8/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VaultProperties.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VaultProperties.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VaultProperties.java new file mode 100644 index 0000000..5e97cf3 --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VaultProperties.java @@ -0,0 +1,131 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.domain; + +import java.net.URI; +import java.util.List; + +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.json.SerializedNames; + +import com.google.auto.value.AutoValue; +import com.google.common.collect.ImmutableList; + +@AutoValue +public abstract class VaultProperties { + + @AutoValue + public abstract static class Permissions { + + public abstract List<String> certificates(); + public abstract List<String> keys(); + public abstract List<String> secrets(); + public abstract List<String> storage(); + + @SerializedNames({ "certificates", "keys", "secrets", "storage"}) + public static Permissions create(final List<String> certificates, final List<String> keys, final List<String> secrets, final List<String> storage) { + return new AutoValue_VaultProperties_Permissions( + certificates != null ? ImmutableList.copyOf(certificates) : ImmutableList.<String> of(), + keys != null ? ImmutableList.copyOf(keys) : ImmutableList.<String> of(), + secrets != null ? ImmutableList.copyOf(secrets) : ImmutableList.<String> of(), + storage != null ? ImmutableList.copyOf(storage) : ImmutableList.<String> of() + ); + } + + Permissions() { + + } + } + + @AutoValue + public abstract static class AccessPolicyEntry { + + @Nullable public abstract String applicationId(); + public abstract String objectId(); + public abstract String tenantId(); + @Nullable public abstract Permissions permissions(); + + @SerializedNames({"applicationId", "objectId", "tenantId", "permissions"}) + public static AccessPolicyEntry create(final String applicationId, final String objectId, final String tenantId, final Permissions permissions) { + return new AutoValue_VaultProperties_AccessPolicyEntry(applicationId, objectId, tenantId, permissions); + } + + AccessPolicyEntry() { + + } + } + + @Nullable + public abstract String tenantId(); + @Nullable + public abstract URI vaultUri(); + @Nullable + public abstract Boolean enabledForDeployment(); + @Nullable + public abstract Boolean enabledForTemplateDeployment(); + @Nullable + public abstract Boolean enableSoftDelete(); + @Nullable + public abstract String createMode(); + @Nullable + public abstract SKU sku(); + @Nullable + public abstract List<AccessPolicyEntry> accessPolicies(); + + @SerializedNames({"tenantId", "vaultUri", "enabledForDeployment", "enabledForTemplateDeployment", "enableSoftDelete", "createMode", "sku", "accessPolicies" }) + public static VaultProperties create(final String tenantId, final URI vaultUri, final Boolean enabledForDeployment, final Boolean enabledForTemplateDeployment, final Boolean enableSoftDelete, final String createMode, + final SKU sku, final List<AccessPolicyEntry> accessPolicies) { + return builder() + .tenantId(tenantId) + .vaultUri(vaultUri) + .enabledForDeployment(enabledForDeployment) + .enabledForTemplateDeployment(enabledForTemplateDeployment) + .enableSoftDelete(enableSoftDelete) + .createMode(createMode) + .sku(sku) + .accessPolicies(accessPolicies) + .build(); + } + + public abstract Builder toBuilder(); + + public static Builder builder() { + return new AutoValue_VaultProperties.Builder(); + } + + @AutoValue.Builder + public abstract static class Builder { + public abstract Builder tenantId(String tenantId); + public abstract Builder vaultUri(URI vaultUri); + public abstract Builder enabledForDeployment(Boolean enabledForDeployment); + public abstract Builder enabledForTemplateDeployment(Boolean enabledForTemplateDeployment); + public abstract Builder enableSoftDelete(Boolean enableSoftDelete); + public abstract Builder createMode(String createMode); + public abstract Builder sku(SKU sku); + public abstract Builder accessPolicies(List<AccessPolicyEntry> accessPolicies); + + abstract List<AccessPolicyEntry> accessPolicies(); + + abstract VaultProperties autoBuild(); + + public VaultProperties build() { + return accessPolicies(accessPolicies() != null ? ImmutableList.copyOf(accessPolicies()) : ImmutableList.<AccessPolicyEntry>of()) + .autoBuild(); + } + + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/a2dee2f8/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/VaultApi.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/VaultApi.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/VaultApi.java new file mode 100644 index 0000000..5ae39ba --- /dev/null +++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/VaultApi.java @@ -0,0 +1,635 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.azurecompute.arm.features; + +import java.net.URI; +import java.util.List; +import java.util.Map; + +import javax.inject.Named; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.core.MediaType; + +import com.google.common.base.Function; + +import org.jclouds.Fallbacks.EmptyListOnNotFoundOr404; +import org.jclouds.Fallbacks.FalseOnNotFoundOr404; +import org.jclouds.Fallbacks.NullOnNotFoundOr404; +import org.jclouds.azurecompute.arm.config.OAuthResource; +import org.jclouds.azurecompute.arm.domain.Certificate; +import org.jclouds.azurecompute.arm.domain.Certificate.CertificateAttributes; +import org.jclouds.azurecompute.arm.domain.Certificate.CertificateBundle; +import org.jclouds.azurecompute.arm.domain.Certificate.CertificateIssuer; +import org.jclouds.azurecompute.arm.domain.Certificate.CertificateOperation; +import org.jclouds.azurecompute.arm.domain.Certificate.CertificatePolicy; +import org.jclouds.azurecompute.arm.domain.Certificate.Contact; +import org.jclouds.azurecompute.arm.domain.Certificate.Contacts; +import org.jclouds.azurecompute.arm.domain.Certificate.DeletedCertificate; +import org.jclouds.azurecompute.arm.domain.Certificate.DeletedCertificateBundle; +import org.jclouds.azurecompute.arm.domain.Certificate.IssuerAttributes; +import org.jclouds.azurecompute.arm.domain.Certificate.IssuerBundle; +import org.jclouds.azurecompute.arm.domain.Certificate.IssuerCredentials; +import org.jclouds.azurecompute.arm.domain.Certificate.IssuerParameters; +import org.jclouds.azurecompute.arm.domain.Certificate.KeyProperties; +import org.jclouds.azurecompute.arm.domain.Certificate.LifetimeAction; +import org.jclouds.azurecompute.arm.domain.Certificate.OrganizationDetails; +import org.jclouds.azurecompute.arm.domain.Certificate.SecretProperties; +import org.jclouds.azurecompute.arm.domain.Certificate.X509CertificateProperties; +import org.jclouds.azurecompute.arm.domain.Key; +import org.jclouds.azurecompute.arm.domain.Key.DeletedKeyBundle; +import org.jclouds.azurecompute.arm.domain.Key.JsonWebKey; +import org.jclouds.azurecompute.arm.domain.Key.KeyAttributes; +import org.jclouds.azurecompute.arm.domain.Key.KeyBundle; +import org.jclouds.azurecompute.arm.domain.Key.KeyOperationResult; +import org.jclouds.azurecompute.arm.domain.Secret; +import org.jclouds.azurecompute.arm.domain.Secret.DeletedSecretBundle; +import org.jclouds.azurecompute.arm.domain.Secret.SecretAttributes; +import org.jclouds.azurecompute.arm.domain.Secret.SecretBundle; +import org.jclouds.azurecompute.arm.domain.Vault; +import org.jclouds.azurecompute.arm.domain.Vault.DeletedVault; +import org.jclouds.azurecompute.arm.domain.VaultProperties; +import org.jclouds.azurecompute.arm.filters.ApiVersionFilter; +import org.jclouds.javax.annotation.Nullable; +import org.jclouds.oauth.v2.filters.OAuthFilter; +import org.jclouds.rest.annotations.EndpointParam; +import org.jclouds.rest.annotations.Fallback; +import org.jclouds.rest.annotations.MapBinder; +import org.jclouds.rest.annotations.PATCH; +import org.jclouds.rest.annotations.PayloadParam; +import org.jclouds.rest.annotations.RequestFilters; +import org.jclouds.rest.annotations.SelectJson; +import org.jclouds.rest.binders.BindToJsonPayload; +import org.jclouds.rest.annotations.ParamParser; + +@RequestFilters({ OAuthFilter.class, ApiVersionFilter.class }) +@Consumes(MediaType.APPLICATION_JSON) +public interface VaultApi { + static class PrependSlashOrEmptyString implements Function<Object, String> { + public String apply(Object from) { + if ((from == null) || (from.toString().length() == 0)) { + return ""; + } else { + return "/" + from.toString(); + } + } + } + + // Vault operations + @Named("vault:list") + @SelectJson("value") + @GET + @Path("/resourcegroups/{resourcegroup}/providers/Microsoft.KeyVault/vaults") + @Fallback(EmptyListOnNotFoundOr404.class) + List<Vault> listVaults(); + + @Named("vault:create_or_update") + @PUT + @MapBinder(BindToJsonPayload.class) + @Path("/resourcegroups/{resourcegroup}/providers/Microsoft.KeyVault/vaults/{vaultName}") + Vault createOrUpdateVault(@PathParam("vaultName") String vaultName, @PayloadParam("location") String location, + @PayloadParam("properties") VaultProperties properties, @Nullable @PayloadParam("tags") Map<String, String> tags); + + @Named("vault:get") + @Path("/resourcegroups/{resourcegroup}/providers/Microsoft.KeyVault/vaults/{vaultName}") + @GET + @Fallback(NullOnNotFoundOr404.class) + Vault getVault(@PathParam("vaultName") String vaultName); + + @Named("vault:delete") + @Path("/resourcegroups/{resourcegroup}/providers/Microsoft.KeyVault/vaults/{vaultName}") + @DELETE + @Fallback(FalseOnNotFoundOr404.class) + boolean deleteVault(@PathParam("vaultName") String vaultName); + + @Named("vault:list_deleted_vaults") + @Path("/providers/Microsoft.KeyVault/deletedVaults") + @GET + @SelectJson("value") + @Fallback(EmptyListOnNotFoundOr404.class) + List<DeletedVault> listDeletedVaults(); + + @Named("vault:get_deleted") + @GET + @Path("/providers/Microsoft.KeyVault/locations/{location}/deletedVaults/{vaultName}") + @Fallback(NullOnNotFoundOr404.class) + DeletedVault getDeletedVault(@PathParam("location") String location, @PathParam("vaultName") String vaultName); + + @Named("vault:purge") + @POST + @Fallback(FalseOnNotFoundOr404.class) + @Path("/providers/Microsoft.KeyVault/locations/{location}/deletedVaults/{vaultName}/purge") + boolean purgeVault(@PathParam("location") String location, @PathParam("vaultName") String vaultName); + + // Key operations + @Named("key:list") + @SelectJson("value") + @GET + @Fallback(EmptyListOnNotFoundOr404.class) + @Path("/keys") + @OAuthResource("https://vault.azure.net") + List<Key> listKeys(@EndpointParam URI keyVaultUri); + + @Named("key:create") + @POST + @MapBinder(BindToJsonPayload.class) + @Path("/keys/{keyName}/create") + @OAuthResource("https://vault.azure.net") + KeyBundle createKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName, + @Nullable @PayloadParam("attributes") KeyAttributes attributes, + @Nullable @PayloadParam("crv") String curveName, @Nullable @PayloadParam("key_ops") List<String> keyOps, + @PayloadParam("key_size") int keySize, @PayloadParam("kty") String keyType, + @Nullable @PayloadParam("tags") Map<String, String> tags); + + @Named("key:import") + @PUT + @MapBinder(BindToJsonPayload.class) + @Path("/keys/{keyName}") + @OAuthResource("https://vault.azure.net") + KeyBundle importKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName, + @PayloadParam("Hsm") boolean hsm, @Nullable @PayloadParam("attributes") KeyAttributes attributes, + @Nullable @PayloadParam("key") JsonWebKey key, @Nullable @PayloadParam("tags") Map<String, String> tags); + + @Named("key:get") + @GET + @Path("/keys/{keyName}") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + KeyBundle getKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName); + + @Named("key:delete") + @DELETE + @Path("/keys/{keyName}") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + DeletedKeyBundle deleteKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName); + + @Named("key:get_versions") + @GET + @SelectJson("value") + @Path("/keys/{keyName}/versions") + @Fallback(EmptyListOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + List<Key> getKeyVersions(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName); + + @Named("key:update") + @PATCH + @MapBinder(BindToJsonPayload.class) + @Path("/keys/{keyName}{keyVersion}") + @OAuthResource("https://vault.azure.net") + KeyBundle updateKey(@EndpointParam URI vaultBaseUrl, + @PathParam("keyName") String keyName, + @Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion, + @Nullable @PayloadParam("attributes") KeyAttributes attributes, + @Nullable @PayloadParam("key_ops") List<String> keyOps, + @Nullable @PayloadParam("tags") Map<String, String> tags); + + @Named("key:backup") + @POST + @SelectJson("value") + @Path("/keys/{keyName}/backup") + @OAuthResource("https://vault.azure.net") + String backupKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName); + + @Named("key:restore") + @POST + @MapBinder(BindToJsonPayload.class) + @Path("/keys/restore") + @OAuthResource("https://vault.azure.net") + KeyBundle restoreKey(@EndpointParam URI vaultBaseUrl, @PayloadParam("value") String keyInfo); + + // Soft-delete key operations + @Named("key:list_deleted") + @GET + @SelectJson("value") + @Path("/deletedkeys") + @Fallback(EmptyListOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + List<DeletedKeyBundle> listDeletedKeys(@EndpointParam URI vaultBaseUrl); + + @Named("key:get_deleted") + @GET + @Path("/deletedkeys/{keyName}") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + DeletedKeyBundle getDeletedKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName); + + @Named("key:recover_deleted") + @POST + @Path("/deletedkeys/{keyName}/recover") + @OAuthResource("https://vault.azure.net") + KeyBundle recoverDeletedKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName); + + @Named("key:purge_deleted") + @DELETE + @Path("/deletedkeys/{keyName}") + @Fallback(FalseOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + boolean purgeDeletedKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName); + + // Key cryptographic operations + @Named("key:crypto_encrypt") + @POST + @Path("/keys/{keyName}{keyVersion}/encrypt") + @MapBinder(BindToJsonPayload.class) + @OAuthResource("https://vault.azure.net") + KeyOperationResult encrypt(@EndpointParam URI vaultBaseUrl, + @PathParam("keyName") String keyName, + @Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion, + @PayloadParam("alg") String algorithm, + @PayloadParam("value") String value); + + @Named("key:crypto_decrypt") + @POST + @Path("/keys/{keyName}{keyVersion}/decrypt") + @MapBinder(BindToJsonPayload.class) + @OAuthResource("https://vault.azure.net") + KeyOperationResult decrypt(@EndpointParam URI vaultBaseUrl, + @PathParam("keyName") String keyName, + @Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion, + @PayloadParam("alg") String algorithm, + @PayloadParam("value") String value); + + @Named("key:crypto_sign") + @POST + @Path("/keys/{keyName}{keyVersion}/sign") + @MapBinder(BindToJsonPayload.class) + @OAuthResource("https://vault.azure.net") + KeyOperationResult sign(@EndpointParam URI vaultBaseUrl, + @PathParam("keyName") String keyName, + @Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion, + @PayloadParam("alg") String algorithm, + @PayloadParam("value") String value); + + @Named("key:crypto_verify") + @POST + @Path("/keys/{keyName}{keyVersion}/verify") + @MapBinder(BindToJsonPayload.class) + @OAuthResource("https://vault.azure.net") + boolean verify(@EndpointParam URI vaultBaseUrl, + @PathParam("keyName") String keyName, + @Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion, + @PayloadParam("alg") String algorithm, + @PayloadParam("digest") String digest, + @PayloadParam("value") String value); + + @Named("key:crypto_wrap") + @POST + @Path("/keys/{keyName}{keyVersion}/wrapkey") + @MapBinder(BindToJsonPayload.class) + @OAuthResource("https://vault.azure.net") + KeyOperationResult wrap(@EndpointParam URI vaultBaseUrl, + @PathParam("keyName") String keyName, + @Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion, + @PayloadParam("alg") String algorithm, + @PayloadParam("value") String value); + + @Named("key:crypto_unwrap") + @POST + @Path("/keys/{keyName}{keyVersion}/unwrapkey") + @MapBinder(BindToJsonPayload.class) + @OAuthResource("https://vault.azure.net") + KeyOperationResult unwrap(@EndpointParam URI vaultBaseUrl, + @PathParam("keyName") String keyName, + @Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion, + @PayloadParam("alg") String algorithm, + @PayloadParam("value") String value); + + // Secret operations + @Named("secret:list") + @SelectJson("value") + @GET + @Fallback(EmptyListOnNotFoundOr404.class) + @Path("/secrets") + @OAuthResource("https://vault.azure.net") + List<Secret> listSecrets(@EndpointParam URI keyVaultUri); + + @Named("secret:set") + @PUT + @MapBinder(BindToJsonPayload.class) + @Path("/secrets/{secretName}") + @OAuthResource("https://vault.azure.net") + SecretBundle setSecret(@EndpointParam URI keyVaultUri, @PathParam("secretName") String secretName, + @Nullable @PayloadParam("attributes") SecretAttributes attributes, + @Nullable @PayloadParam("contentType") String contentType, + @Nullable @PayloadParam("tags") Map<String, String> tags, @PayloadParam("value") String value); + + @Named("secret:get") + @GET + @Path("/secrets/{secretName}{secretVersion}") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + SecretBundle getSecret(@EndpointParam URI vaultBaseUrl, + @PathParam("secretName") String secretName, + @Nullable @PathParam("secretVersion") @ParamParser(PrependSlashOrEmptyString.class) String secretVersion); + + @Named("secret:delete") + @DELETE + @Path("/secrets/{secretName}") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + DeletedSecretBundle deleteSecret(@EndpointParam URI vaultBaseUrl, @PathParam("secretName") String secretName); + + @Named("secret:get_versions") + @GET + @SelectJson("value") + @Path("/secrets/{secretName}/versions") + @Fallback(EmptyListOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + List<Secret> getSecretVersions(@EndpointParam URI vaultBaseUrl, @PathParam("secretName") String secretName); + + @Named("secret:update") + @PATCH + @MapBinder(BindToJsonPayload.class) + @Path("/secrets/{secretName}{secretVersion}") + @OAuthResource("https://vault.azure.net") + SecretBundle updateSecret(@EndpointParam URI vaultBaseUrl, + @PathParam("secretName") String secretName, + @Nullable @PathParam("secretVersion") @ParamParser(PrependSlashOrEmptyString.class) String secretVersion, + @Nullable @PayloadParam("attributes") SecretAttributes attributes, + @Nullable @PayloadParam("contentType") String contentType, + @Nullable @PayloadParam("tags") Map<String, String> tags); + + @Named("secret:backup") + @POST + @SelectJson("value") + @Path("/secrets/{secretName}/backup") + @OAuthResource("https://vault.azure.net") + String backupSecret(@EndpointParam URI vaultBaseUrl, @PathParam("secretName") String secretName); + + @Named("secret:restore") + @POST + @MapBinder(BindToJsonPayload.class) + @Path("/secrets/restore") + @OAuthResource("https://vault.azure.net") + SecretBundle restoreSecret(@EndpointParam URI vaultBaseUrl, @PayloadParam("value") String secretInfo); + + // Soft-delete secret operations + @Named("secret:list_deleted") + @GET + @SelectJson("value") + @Path("/deletedsecrets") + @Fallback(EmptyListOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + List<DeletedSecretBundle> listDeletedSecrets(@EndpointParam URI vaultBaseUrl); + + @Named("secret:get_deleted") + @GET + @Path("/deletedsecrets/{secretName}") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + DeletedSecretBundle getDeletedSecret(@EndpointParam URI vaultBaseUrl, @PathParam("secretName") String secretName); + + @Named("secret:recover_deleted") + @POST + @Path("/deletedsecrets/{secretName}/recover") + @OAuthResource("https://vault.azure.net") + SecretBundle recoverDeletedSecret(@EndpointParam URI vaultBaseUrl, @PathParam("secretName") String secretName); + + @Named("secret:purge_deleted") + @DELETE + @Path("/deletedsecrets/{secretName}") + @Fallback(FalseOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + boolean purgeDeletedSecret(@EndpointParam URI vaultBaseUrl, @PathParam("secretName") String secretName); + + // Certificate operations + @Named("certificate:create") + @POST + @MapBinder(BindToJsonPayload.class) + @Path("/certificates/{certificateName}/create") + @OAuthResource("https://vault.azure.net") + CertificateOperation createCertificate(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName, + @Nullable @PayloadParam("attributes") CertificateAttributes attributes, + @Nullable @PayloadParam("policy") CertificatePolicy policy, + @Nullable @PayloadParam("tags") Map<String, String> tags); + + @Named("certificate:get") + @GET + @Path("/certificates/{certificateName}{certificateVersion}") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + CertificateBundle getCertificate(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName, + @Nullable @PathParam("certificateVersion") @ParamParser(PrependSlashOrEmptyString.class) String certificateVersion); + + @Named("certificate:delete") + @DELETE + @Path("/certificates/{certificateName}") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + DeletedCertificateBundle deleteCertificate(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName); + + @Named("certificate:list") + @GET + @SelectJson("value") + @Path("/certificates") + @Fallback(EmptyListOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + List<Certificate> getCertificates(@EndpointParam URI vaultBaseUrl); + + @Named("certificate:list_deleted") + @GET + @SelectJson("value") + @Path("/deletedcertificates") + @Fallback(EmptyListOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + List<DeletedCertificate> getDeletedCertificates(@EndpointParam URI vaultBaseUrl); + + @Named("certificate:get_deleted") + @GET + @Path("/deletedcertificates/{certificateName}") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + DeletedCertificateBundle getDeletedCertificate(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName); + + @Named("certificate:recover_deleted") + @POST + @Path("/deletedcertificates/{certificateName}/recover") + @OAuthResource("https://vault.azure.net") + CertificateBundle recoverDeletedCertificate(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName); + + @Named("certificate:purge_deleted") + @DELETE + @Path("/deletedcertificates/{certificateName}") + @Fallback(FalseOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + boolean purgeDeletedCertificate(@EndpointParam URI vaultBaseUrl, @PathParam("certificateName") String certificateName); + + @Named("certificate:get_versions") + @GET + @SelectJson("value") + @Path("/certificates/{certificateName}/versions") + @Fallback(EmptyListOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + List<Certificate> getCertificateVersions(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName); + + @Named("certificate:update") + @PATCH + @MapBinder(BindToJsonPayload.class) + @Path("/certificates/{certificateName}{certificateVersion}") + @OAuthResource("https://vault.azure.net") + CertificateBundle updateCertificate(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName, + @Nullable @PathParam("certificateVersion") @ParamParser(PrependSlashOrEmptyString.class) String certificateVersion, + @Nullable @PayloadParam("attributes") CertificateAttributes attributes, + @Nullable @PayloadParam("policy") CertificatePolicy policy, + @Nullable @PayloadParam("tags") Map<String, String> tags); + + @Named("certificate:import") + @POST + @MapBinder(BindToJsonPayload.class) + @Path("/certificates/{certificateName}/import") + @OAuthResource("https://vault.azure.net") + CertificateBundle importCertificate(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName, + @Nullable @PayloadParam("attributes") CertificateAttributes attributes, + @Nullable @PayloadParam("policy") CertificatePolicy policy, @Nullable @PayloadParam("pwd") String password, + @Nullable @PayloadParam("tags") Map<String, String> tags, @PayloadParam("value") String value); + + @Named("certificate:merge") + @POST + @MapBinder(BindToJsonPayload.class) + @Path("/certificates/{certificateName}/pending/merge") + @OAuthResource("https://vault.azure.net") + CertificateBundle mergeCertificate(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName, + @Nullable @PayloadParam("attributes") CertificateAttributes attributes, + @Nullable @PayloadParam("tags") Map<String, String> tags, @PayloadParam("x5c") List<String> value); + + @Named("certificate:get_operation") + @GET + @Path("/certificates/{certificateName}/pending") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + CertificateOperation getCertificateOperation(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName); + + @Named("certificate:update_operation") + @PATCH + @Path("/certificates/{certificateName}/pending") + @MapBinder(BindToJsonPayload.class) + @OAuthResource("https://vault.azure.net") + CertificateOperation updateCertificateOperation(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName, + @PayloadParam("cancellation_requested") boolean cancellationRequested); + + @Named("certificate:delete_operation") + @DELETE + @Path("/certificates/{certificateName}/pending") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + CertificateOperation deleteCertificateOperation(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName); + + @Named("certificate:set_issuer") + @PUT + @Path("/certificates/issuers/{issuerName}") + @MapBinder(BindToJsonPayload.class) + @OAuthResource("https://vault.azure.net") + IssuerBundle setCertificateIssuer(@EndpointParam URI vaultBaseUrl, @PathParam("issuerName") String issuerName, + @Nullable @PayloadParam("attributes") IssuerAttributes attributes, + @Nullable @PayloadParam("credentials") IssuerCredentials credentials, + @Nullable @PayloadParam("org_details") OrganizationDetails orgDetails, + @PayloadParam("provider") String provider); + + @Named("certificate:get_issuers") + @GET + @SelectJson("value") + @Path("/certificates/issuers") + @Fallback(EmptyListOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + List<CertificateIssuer> getCertificateIssuers(@EndpointParam URI vaultBaseUrl); + + @Named("certificate:get_issuer") + @GET + @Path("/certificates/issuers/{issuerName}") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + IssuerBundle getCertificateIssuer(@EndpointParam URI vaultBaseUrl, @PathParam("issuerName") String issuerName); + + @Named("certificate:update_issuer") + @PATCH + @Path("/certificates/issuers/{issuerName}") + @MapBinder(BindToJsonPayload.class) + @OAuthResource("https://vault.azure.net") + IssuerBundle updateCertificateIssuer(@EndpointParam URI vaultBaseUrl, @PathParam("issuerName") String issuerName, + @Nullable @PayloadParam("attributes") IssuerAttributes attributes, + @Nullable @PayloadParam("credentials") IssuerCredentials credentials, + @Nullable @PayloadParam("org_details") OrganizationDetails orgDetails, + @PayloadParam("provider") String provider); + + @Named("certificate:delete_issuer") + @DELETE + @Path("/certificates/issuers/{issuerName}") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + IssuerBundle deleteCertificateIssuer(@EndpointParam URI vaultBaseUrl, @PathParam("issuerName") String issuerName); + + @Named("certificate:get_contacts") + @GET + @Path("/certificates/contacts") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + Contacts getCertificateContacts(@EndpointParam URI vaultBaseUrl); + + @Named("certificate:set_contacts") + @PUT + @Path("/certificates/contacts") + @MapBinder(BindToJsonPayload.class) + @OAuthResource("https://vault.azure.net") + Contacts setCertificateContacts(@EndpointParam URI vaultBaseUrl, @PayloadParam("contacts") List<Contact> contacts); + + @Named("certificate:delete_contacts") + @DELETE + @Path("/certificates/contacts") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + Contacts deleteCertificateContacts(@EndpointParam URI vaultBaseUrl); + + @Named("certificate:get_policy") + @GET + @Path("/certificates/{certificateName}/policy") + @Fallback(NullOnNotFoundOr404.class) + @OAuthResource("https://vault.azure.net") + CertificatePolicy getCertificatePolicy(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName); + + @Named("certificate:update_policy") + @PATCH + @MapBinder(BindToJsonPayload.class) + @Path("/certificates/{certificateName}/policy") + @OAuthResource("https://vault.azure.net") + CertificatePolicy updateCertificatePolicy(@EndpointParam URI vaultBaseUrl, + @PathParam("certificateName") String certificateName, + @Nullable @PayloadParam("attributes") CertificateAttributes attributes, + @Nullable @PayloadParam("issuer") IssuerParameters issuer, + @Nullable @PayloadParam("key_props") KeyProperties keyProps, + @Nullable @PayloadParam("lifetime_actions") List<LifetimeAction> lifetimeActions, + @Nullable @PayloadParam("secret_props") SecretProperties secretProps, + @Nullable @PayloadParam("x509_props") X509CertificateProperties x509Props); +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/a2dee2f8/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiLiveTest.java ---------------------------------------------------------------------- diff --git a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiLiveTest.java b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiLiveTest.java index 5cf4239..adcde2b 100644 --- a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiLiveTest.java +++ b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiLiveTest.java @@ -39,7 +39,7 @@ import java.util.Properties; import java.util.Set; import org.jclouds.azurecompute.arm.AzureComputeApi; -import org.jclouds.azurecompute.arm.compute.config.AzureComputeServiceContextModule.PublicIpAvailablePredicateFactory; +import org.jclouds.azurecompute.arm.compute.config.AzurePredicatesModule.PublicIpAvailablePredicateFactory; import org.jclouds.azurecompute.arm.compute.domain.ResourceGroupAndName; import org.jclouds.azurecompute.arm.domain.AvailabilitySet; import org.jclouds.azurecompute.arm.domain.AvailabilitySet.AvailabilitySetProperties;
