3535 from azure .core .paging import ItemPaged
3636
3737
38+ NO_SAN_OR_SUBJECT = "You need to set either subject or one of the subject alternative names parameters in the policy"
39+
40+
3841class CertificateClient (KeyVaultClientBase ):
3942 """A high-level interface for managing a vault's certificates.
4043
@@ -68,17 +71,20 @@ def begin_create_certificate(self, certificate_name, policy, **kwargs):
6871 an :class:`~azure.core.exceptions.HttpResponseError`
6972
7073 :param str certificate_name: The name of the certificate.
71- :param policy: The management policy for the certificate.
74+ :param policy: The management policy for the certificate. Either subject or one of the subject alternative
75+ name properties are required.
7276 :type policy:
73- ~azure.keyvault.certificates.CertificatePolicy
77+ ~azure.keyvault.certificates.CertificatePolicy
7478 :keyword bool enabled: Whether the certificate is enabled for use.
7579 :keyword tags: Application specific metadata in the form of key-value pairs.
7680 :paramtype tags: dict[str, str]
7781 :returns: An LROPoller for the create certificate operation. Waiting on the poller
78- gives you the certificate if creation is successful, the CertificateOperation if not.
82+ gives you the certificate if creation is successful, the CertificateOperation if not.
7983 :rtype: ~azure.core.polling.LROPoller[~azure.keyvault.certificates.KeyVaultCertificate or
80- ~azure.keyvault.certificates.CertificateOperation]
81- :raises: :class:`~azure.core.exceptions.HttpResponseError`
84+ ~azure.keyvault.certificates.CertificateOperation]
85+ :raises:
86+ :class:`ValueError` if the certificate policy is invalid,
87+ :class:`~azure.core.exceptions.HttpResponseError` for other errors.
8288
8389 Keyword arguments
8490 - *enabled (bool)* - Determines whether the object is enabled.
@@ -92,12 +98,14 @@ def begin_create_certificate(self, certificate_name, policy, **kwargs):
9298 :caption: Create a certificate
9399 :dedent: 8
94100 """
101+ if not (policy .san_emails or policy .san_user_principal_names or policy .san_dns_names or policy .subject ):
102+ raise ValueError (NO_SAN_OR_SUBJECT )
103+
95104 polling_interval = kwargs .pop ("_polling_interval" , None )
96105 if polling_interval is None :
97106 polling_interval = 5
98107 enabled = kwargs .pop ("enabled" , None )
99108
100-
101109 if enabled is not None :
102110 attributes = self ._models .CertificateAttributes (enabled = enabled )
103111 else :
@@ -106,7 +114,7 @@ def begin_create_certificate(self, certificate_name, policy, **kwargs):
106114 parameters = self ._models .CertificateCreateParameters (
107115 certificate_policy = policy ._to_certificate_policy_bundle (),
108116 certificate_attributes = attributes ,
109- tags = kwargs .pop ("tags" , None )
117+ tags = kwargs .pop ("tags" , None ),
110118 )
111119
112120 cert_bundle = self ._client .create_certificate (
@@ -332,7 +340,6 @@ def begin_recover_deleted_certificate(self, certificate_name, **kwargs):
332340
333341 return KeyVaultOperationPoller (polling_method )
334342
335-
336343 @distributed_trace
337344 def import_certificate (self , certificate_name , certificate_bytes , ** kwargs ):
338345 # type: (str, bytes, **Any) -> KeyVaultCertificate
@@ -459,8 +466,7 @@ def update_certificate_properties(self, certificate_name, version=None, **kwargs
459466 attributes = None
460467
461468 parameters = self ._models .CertificateUpdateParameters (
462- certificate_attributes = attributes ,
463- tags = kwargs .pop ("tags" , None )
469+ certificate_attributes = attributes , tags = kwargs .pop ("tags" , None )
464470 )
465471
466472 bundle = self ._client .update_certificate (
@@ -528,7 +534,8 @@ def restore_certificate_backup(self, backup, **kwargs):
528534 bundle = self ._client .restore_certificate (
529535 vault_base_url = self .vault_url ,
530536 parameters = self ._models .CertificateRestoreParameters (certificate_bundle_backup = backup ),
531- error_map = _error_map , ** kwargs
537+ error_map = _error_map ,
538+ ** kwargs
532539 )
533540 return KeyVaultCertificate ._from_certificate_bundle (certificate_bundle = bundle )
534541
@@ -795,9 +802,7 @@ def merge_certificate(self, certificate_name, x509_certificates, **kwargs):
795802 attributes = None
796803
797804 parameters = self ._models .CertificateMergeParameters (
798- x509_certificates = x509_certificates ,
799- certificate_attributes = attributes ,
800- tags = kwargs .pop ("tags" , None )
805+ x509_certificates = x509_certificates , certificate_attributes = attributes , tags = kwargs .pop ("tags" , None )
801806 )
802807
803808 bundle = self ._client .merge_certificate (
@@ -884,9 +889,7 @@ def create_issuer(self, issuer_name, provider, **kwargs):
884889 else :
885890 admin_details = None
886891 if organization_id or admin_details :
887- organization_details = self ._models .OrganizationDetails (
888- id = organization_id , admin_details = admin_details
889- )
892+ organization_details = self ._models .OrganizationDetails (id = organization_id , admin_details = admin_details )
890893 else :
891894 organization_details = None
892895 if enabled is not None :
@@ -902,11 +905,7 @@ def create_issuer(self, issuer_name, provider, **kwargs):
902905 )
903906
904907 issuer_bundle = self ._client .set_certificate_issuer (
905- vault_base_url = self .vault_url ,
906- issuer_name = issuer_name ,
907- parameter = parameters ,
908- error_map = _error_map ,
909- ** kwargs
908+ vault_base_url = self .vault_url , issuer_name = issuer_name , parameter = parameters , error_map = _error_map , ** kwargs
910909 )
911910 return CertificateIssuer ._from_issuer_bundle (issuer_bundle = issuer_bundle )
912911
@@ -951,9 +950,7 @@ def update_issuer(self, issuer_name, **kwargs):
951950 else :
952951 admin_details = None
953952 if organization_id or admin_details :
954- organization_details = self ._models .OrganizationDetails (
955- id = organization_id , admin_details = admin_details
956- )
953+ organization_details = self ._models .OrganizationDetails (id = organization_id , admin_details = admin_details )
957954 else :
958955 organization_details = None
959956 if enabled is not None :
@@ -965,15 +962,11 @@ def update_issuer(self, issuer_name, **kwargs):
965962 provider = kwargs .pop ("provider" , None ),
966963 credentials = issuer_credentials ,
967964 organization_details = organization_details ,
968- attributes = issuer_attributes
965+ attributes = issuer_attributes ,
969966 )
970967
971968 issuer_bundle = self ._client .update_certificate_issuer (
972- vault_base_url = self .vault_url ,
973- issuer_name = issuer_name ,
974- parameter = parameters ,
975- error_map = _error_map ,
976- ** kwargs
969+ vault_base_url = self .vault_url , issuer_name = issuer_name , parameter = parameters , error_map = _error_map , ** kwargs
977970 )
978971 return CertificateIssuer ._from_issuer_bundle (issuer_bundle = issuer_bundle )
979972
0 commit comments