
    .                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z
 ddlmZ dd	lmZ dd
lmZ d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)z3Flags and helpers for the Assured related commands.    )absolute_import)division)unicode_literals)message_util)arg_parsers)base)resource_args)	arg_utils)concept_parsersc                 T    | j                  ddd       | j                  ddd       y )N
--locationTzThe location of the Assured Workloads environments. For a current list of supported LOCATION values, see [Assured Workloads locations](https://cloud.google.com/assured-workloads/docs/locations).requiredhelp--organizationz^The parent organization of the Assured Workloads environments, provided as an organization ID.add_argumentparsers    /lib/googlecloudsdk/command_lib/assured/flags.pyAddListWorkloadsFlagsr      A    I	  	 	,	      c                 T    | j                  ddd       | j                  ddd       y )Nr   TzThe location of the Assured Workloads operations. For a current list of supported LOCATION values, see [Assured Workloads locations](https://cloud.google.com/assured-workloads/docs/locations).r   r   z\The parent organization of the Assured Workloads operations, provided as an organization ID.r   r   s    r   AddListOperationsFlagsr   2   r   r   c                 t   | j                  ddd       | j                  ddd       | j                  dd	       | j                  d
dd       t        j                  dt        j                  |      d dd      j
                  j                  |        t        j                  dt        j                  |      d d      j
                  j                  |        | j                  dt        j                  dt        i      dd       | j                  ddd       | j                  ddd       | j                  dd 	       | j                  d!d"	       | j                  d#t        j                         dd$       | j                  d%d&	       | j                  d't        dd()       t        | |       y*)+zAdds required flags to the assured workloads create command.

  Args:
    parser: Parser, Parser used to construct the command flags.
    release_track: ReleaseTrack, Release track of the command being called.

  Returns:
    None.
  r   TzThe location of the new Assured Workloads environment. For a current list of supported LOCATION values, see [Assured Workloads locations](https://cloud.google.com/assured-workloads/docs/locations).r   r   z`The parent organization of the new Assured Workloads environment, provided as an organization IDz--external-identifierz@The external identifier of the new Assured Workloads environmentr   --display-namez9The display name of the new Assured Workloads environmentz--compliance-regimec                     | dk7  S )NCOMPLIANCE_REGIME_UNSPECIFIED regimes    r   <lambda>z(AddCreateWorkloadFlags.<locals>.<lambda>o   s
    F.M$Mr   z>The compliance regime of the new Assured Workloads environment)include_filterr   help_strz	--partnerc                     | dk7  S )NPARTNER_UNSPECIFIEDr!   r"   s    r   r$   z(AddCreateWorkloadFlags.<locals>.<lambda>v   s
    F.C$Cr   zNThe partner choice when creating a workload managed by local trusted partners.)r%   r&   z--partner-permissionszdata-logs-viewerspec	KEY=VALUEzXThe partner permissions for the partner regime, for example, data-logs-viewer=true/falsetypemetavarr   z"--partner-services-billing-accountFa6  Billing account necessary for purchasing services from Sovereign Partners. This field is required for creating SIA/PSN/CNTXT partner workloads. The caller should have 'billing.resourceAssociations.create' IAM permission on this billing-account. The format of this string is billingAccounts/AAAAAA-BBBBBB-CCCCCCz--billing-accountzoThe billing account of the new Assured Workloads environment, for example, billingAccounts/0000AA-AAA00A-A0A0A0z--next-rotation-timezuThe next rotation time of the KMS settings of new Assured Workloads environment, for example, 2020-12-30T10:15:30.00Zz--rotation-periodzfThe rotation period of the KMS settings of the new Assured Workloads environment, for example, 172800s--labelszmThe labels of the new Assured Workloads environment, for example, LabelKey1=LabelValue1,LabelKey2=LabelValue2z--provisioned-resources-parentzHThe parent of the provisioned projects, for example, folders/{FOLDER_ID}z--enable-sovereign-controlszIf true, enable sovereign controls for the new Assured Workloads environment, currently only supported by EU_REGIONS_AND_SUPPORT)r-   defaultr   N)r   r
   ChoiceEnumMapperr   GetComplianceRegimesEnum
choice_argAddToParserGetPartnersEnumr   ArgDictbool_AddResourceSettingsFlagr   release_tracks     r   AddCreateWorkloadFlagsr;   G   s    	I	  	 	+	   	M   	F  
 ++M:MO J{{6"""=1C J{{6" $
 )   	*2	   	:	   	H   	8   	 8   	&    	#L   6=1r   c                 8   |t         j                  j                  k(  rD| j                  dt	        j
                  t        t        t        t        t        d      dd       y	| j                  dt	        j
                  t        t        t        d      dd       y	)
zAdds the resource settings flag to the assured workloads create command.

  Args:
    parser: Parser, Parser used to construct the command flags.
    release_track: ReleaseTrack, Release track of the command being called.

  Returns:
    None.
  z--resource-settings)zconsumer-project-idzconsumer-project-nameencryption-keys-project-idencryption-keys-project-name
keyring-idr)   r+   a  A comma-separated, key=value map of custom resource settings such as custom project ids, for example: consumer-project-id={CONSUMER_PROJECT_ID} Note: Currently only consumer-project-id, consumer-project-name, encryption-keys-project-id, encryption-keys-project-name and keyring-id are supported. The encryption-keys-project-id, encryption-keys-project-name and keyring-id settings can be specified only if KMS settings are providedr,   )r=   r>   r?   a  A comma-separated, key=value map of custom resource settings such as custom project ids, for example: consumer-project-id={CONSUMER_PROJECT_ID} Note: Currently only encryption-keys-project-id, encryption-keys-project-name and keyring-id are supported. The encryption-keys-project-id, encryption-keys-project-name and keyring-id settings can be specified only if KMS settings are providedN)calliope_baseReleaseTrackGAr   r   r6   strr9   s     r   r8   r8      s     m00333
  '*),.103!
 ;  0   .103!
 ;  r   c                 D    t        | d       | j                  dd       y )Ndeleteverb--etagzPThe etag acquired by reading the Assured Workloads environment or AW "resource".r   )AddWorkloadResourceArgToParserr   r   s    r   AddDeleteWorkloadFlagsrJ      s'     h7  r   c                     t        | d       y NdescriberF   rI   r   s    r   AddDescribeWorkloadFlagsrO     s     j9r   c                     t        | d       y rL   )AddViolationResourceArgToParserr   s    r   AddDescribeViolationFlagsrR     s    !&z:r   c                     t        | d       y )Nzenable-resource-monitoringrF   rN   r   s    r    AddEnableResourceMonitoringFlagsrT     s     .JKr   c                    t        | d       | j                  dd       | j                  dd      }|j                  d	d
       |j                  dd       |j                  ddt        j                         d       y)z$Method to add update workload flags.updaterF   rH   zOThe etag acquired by reading the Assured Workloads environment before updating.r   TzBSettings that can be updated on the Assured Workloads environment.r   r   z:The new display name of the Assured Workloads environment.z!--violation-notifications-enabledz>The notification setting of the Assured Workloads environment.r/   r+   zmThe new labels of the Assured Workloads environment, for example, LabelKey1=LabelValue1,LabelKey2=LabelValue2)r.   r-   r   N)rI   r   	add_groupr   r6   )r   updatable_fieldss     r   AddUpdateWorkloadFlagsrY     s     h7   %%O &  G    )K     8   r   c                     t         j                  j                  dt        j                         dd      j                  |        y )N	operationz5The Assured Workloads operation resource to describe.Tr   )r   ConceptParserForResourcer	   GetOperationResourceSpecr4   r   s    r   AddDescribeOperationFlagsr`   8  s<    ++,,.=	 , 
 Kr   c                     t         j                  j                  dt        j                         dj                  |      d      j                  |        y )Nworkloadz1The Assured Workloads environment resource to {}.Tr\   )r   r]   r^   r	   GetWorkloadResourceSpecformatr4   r   rG   s     r   rI   rI   A  sG    ++++-9@@F	 , 
 Kr   c                     t         j                  j                  dt        j                         dj                  |      d      j                  |        y )N	violationz/The Assured Workloads violation resource to {}.Tr\   )r   r]   r^   r	   GetViolationResourceSpecrd   r4   re   s     r   rQ   rQ   J  sG    ++,,.7>>tD	 , 
 Kr   c                 B    t        |        | j                  ddd       y)z$Method to add list violations flags.z
--workloadTzQThe parent workload of the Assured Workloads violations, provided as workload ID.r   N)r   r   r   s    r   AddListViolationsFlagsrj   S  s(    %	  r   c                 l    t        | d       | j                  ddd       | j                  dd	       y
)z+Method to add acknowledge violations flags.acknowledgerF   z	--commentTz=Business justification used added to acknowledge a violation.r   z--acknowledge-typea  the acknowledge type for specified violation, which is one of:
      SINGLE_VIOLATION - to acknowledge specified violation,
      EXISTING_CHILD_RESOURCE_VIOLATIONS - to acknowledge specified org policy
      violation and all associated child resource violations.r   N)rQ   r   r   s    r   AddAcknowledgeViolationsFlagsrm   `  sF    !&}=J  
 	A  r   N)__doc__
__future__r   r   r   googlecloudsdk.api_lib.assuredr   googlecloudsdk.callioper   r   r@   "googlecloudsdk.command_lib.assuredr	   $googlecloudsdk.command_lib.util.apisr
   (googlecloudsdk.command_lib.util.conceptsr   r   r   r;   r8   rJ   rO   rR   rT   rY   r`   rI   rQ   rj   rm   r!   r   r   <module>ru      sp    : &  ' 7 / 9 < : D**}2@6r:;LB
r   