
    9                        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 e	j                  Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zddddddddddddddej*                  fdZd Zd Zd Zd Zd Zd Zd Zej*                  fdZej*                  fdZdej*                  fdZ ejB                   eejD                        jF                  ejD                   eejD                        jF                  ej*                   eej*                        jH                  iZ%ejB                   eejD                        jL                  ejD                   eejD                        jL                  ej*                   eej*                        jN                  iZ(ejB                   eejD                        jR                  ejD                   eejD                        jR                  ej*                   eej*                        jT                  iZ+ejB                   eejD                        jX                  ejD                   eejD                        jX                  ej*                   eej*                        jZ                  iZ.y)z0Utilities for constructing Assured api messages.    )absolute_import)division)unicode_literals)util)base)	arg_utilsc                 ,    t        j                  |       S N)r   GetMessagesModulerelease_tracks    2lib/googlecloudsdk/api_lib/assured/message_util.pyGetMessagesr      s    				..    c                 ,    t         j                  |       S r
   )WORKLOAD_MAPgetr   s    r   GetWorkloadMessager       s    			-	((r   c                 ,    t        |       j                  S r
   )r   ComplianceRegimeValueValuesEnumr   s    r   GetComplianceRegimesEnumr   $   s    	M	*	J	JJr   c                 ,    t        |       j                  S r
   )r   PartnerValueValuesEnumr   s    r   GetPartnersEnumr   (   s    	M	*	A	AAr   c                 ,    t         j                  |       S r
   )KMS_SETTINGS_MAPr   r   s    r   GetKmsSettingsr   ,   s    			m	,,r   c                 ,    t         j                  |       S r
   )RESOURCE_SETTINGS_MAPr   r   s    r   GetResourceSettingsr    0   s    		"	"=	11r   c                 ,    t         j                  |       S r
   )PARTNER_PERMISSIONS_MAPr   r   s    r   GetPartnerPermissionsr#   4   s    	 	$	$]	33r   c                 &    dj                  | |      S )Nzorganizations/{}/locations/{}format)organization_idlocations     r   CreateAssuredParentr)   8   s    	(	/	/	JJr   Nc                    t        |      } |       }|	r|	|_        |r||_        | r| |_        |rt	        |      |_        |rt        ||      |_        |r$t        j                  |t        |            |_        |r$t        j                  |t        |            |_        |r||_        |r t        |      |d         |_        |
r|
|_        |r|r t%        |      ||      |_        |rt)        ||      |_        |r||_        |S )am  Construct an Assured Workload message for Assured Workloads Beta API requests.

  Args:
    display_name: str, display name of the Assured Workloads environment.
    compliance_regime: str, the compliance regime, which is one of:
      FEDRAMP_MODERATE, FEDRAMP_HIGH, IL4 or CJIS.
    partner: str, the partner regime/controls.
    partner_services_billing_account: str, the billing account of the partner
      service in the form: billingAccounts/{BILLING_ACCOUNT_ID}
    partner_permissions: dict, dictionary of permission names and values for the
      partner regime.
    billing_account: str, the billing account of the Assured Workloads
      environment in the form: billingAccounts/{BILLING_ACCOUNT_ID}
    next_rotation_time: str, the next key rotation time for the Assured
      Workloads environment, for example: 2020-12-30T10:15:00.00Z
    rotation_period: str, the time between key rotations, for example: 172800s.
    labels: dict, dictionary of label keys and values of the Assured Workloads
      environment.
    etag: str, the etag of the Assured Workloads environment.
    provisioned_resources_parent: str, parent of provisioned projects, e.g.
      folders/{FOLDER_ID}.
    resource_settings: list of key=value pairs to set customized resource
      settings, which can be one of the following: consumer-project-id,
      consumer-project-name, encryption-keys-project-id,
      encryption-keys-project-name or keyring-id, for example:
      consumer-project-id={ID1},encryption-keys-project-id={ID2}
    enable_sovereign_controls: bool, whether to enable sovereign controls for
      the Assured Workloads environment.
    violation_notifications_enabled: bool, whether email notifications are
      enabled or disabled
    release_track: ReleaseTrack, gcloud release track being used

  Returns:
    A populated Assured Workloads message for the Assured Workloads Beta API.
  zdata-logs-viewer)dataLogsViewer)nextRotationTimerotationPeriod)r   etagbillingAccountdisplayName GetViolationNotificationsEnabledviolationNotificationsEnabledCreateLabelslabelsr   ChoiceToEnumr   complianceRegimer   partnerpartnerServicesBillingAccountr#   partnerPermissionsprovisionedResourcesParentr   kmsSettingsCreateResourceSettingsListresourceSettingsenableSovereignControls)display_namecompliance_regimer7    partner_services_billing_accountpartner_permissionsbilling_accountnext_rotation_timerotation_periodr4   r.   provisioned_resources_parentresource_settingsenable_sovereign_controlsviolation_notifications_enabledr   workload_messageworkloads                    r   CreateAssuredWorkloadrL   <   s$   j (6(	HM-H'H$-M'.H* "6+;<HO ) 6 63MB!H  --/H &-MH*"F"7"F*+=>#H "*FH'O8>-8+OH  :=!H '@H$	/r   c                 (    dj                  | ||      S )Nz*organizations/{}/locations/{}/workloads/{}r%   )r'   r(   workload_ids      r   CreateAssuredWorkloadsParentrO      s    	5	<	<x
 r   c                 V    | j                         dk(  ry| j                         dk(  ry| S )NtrueTfalseF)lower)rI   s    r   r1   r1      s0    $**,6$**,7**r   c                     g }| j                         D ]3  \  }}|j                  j                  ||      }|j                  |       5 |j                  |      S )N)keyvalue)additionalProperties)itemsLabelsValueAdditionalPropertyappend)r4   rJ   workload_labelsrU   rV   	new_labels         r   r3   r3      sb    /LLNjc5 ,,??u @ I 9%	 #
 
	%	%?	%	KKr   c                    i }| j                         D ]\  \  }}t        ||      }||v r||   nt        ||      } |j                  d      r|| _        n|j                  d      r|| _        | ||<   ^ t        |j                               S )a3  Construct a list of ResourceSettings for Assured Workload object.

  Args:
    resource_settings: a list of key=value pairs of customized resource
      settings.
    release_track: ReleaseTrack, gcloud release track being used.

  Returns:
    A list of ResourceSettings for the Assured Workload object.
  z-idz-name)rX   GetResourceTypeCreateResourceSettingsendswith
resourceIdr0   listvalues)rG   r   resource_settings_dictrU   rV   resource_types         r   r<   r<      s     %++-jc5#C7M 22 	}-#M=A 
 ||E%*"	g	&+#,==) . 
$++-	..r   c                    t        |      }| j                  d      r|j                  j                  S | j                  d      r|j                  j                  S | j                  d      r|j                  j
                  S y)a@  Returns a resource settings type from the key.

  Args:
    key: str, the setting name, which can be one of the following -
      consumer-project-id, consumer-project-name, encryption-keys-project-id,
      encryption-keys-project-name or keyring-id.
    release_track: ReleaseTrack, gcloud release track being used.
  zconsumer-projectzencryption-keys-projectkeyringN)r    
startswithResourceTypeValueValuesEnumCONSUMER_PROJECTENCRYPTION_KEYS_PROJECTKEYRING)rU   r   resource_settings_messages      r   r_   r_      sx     2-@^^&'!==NN ~~/0!==UU ~~i $@@HHH !r   c                 *    t        |      } ||       S )N)resourceType)r    )rf   r   rn   s      r   r`   r`      s    1-@	"	>>r   c                     g }| r|j                  d       |r|j                  d       |r|j                  d       dj                  |      S )Nzworkload.display_namezworkload.labelsz(workload.violation_notifications_enabled,)r[   join)r?   r4   rI   update_masks       r   CreateUpdateMaskru      sL    +./()$AB	+	r   c                     |t         j                  k(  r't        j                  |      j	                  | ||      S t        j                  |      j	                  | ||      S )ab  Construct an Assured Workload Create Request for Assured Workloads API requests.

  Args:
    external_id: str, the identifier that identifies this Assured Workloads
      environment externally.
    parent: str, the parent organization of the Assured Workloads environment to
      be created, in the form: organizations/{ORG_ID}/locations/{LOCATION}.
    workload: Workload, new Assured Workloads environment containing the values
      to be used.
    release_track: ReleaseTrack, gcloud release track being used

  Returns:
    A populated Assured Workloads Update Request for the Assured Workloads API.
  )
externalIdparent%googleCloudAssuredworkloadsV1Workload)rw   rx   *googleCloudAssuredworkloadsV1beta1Workload)ReleaseTrackGAr   r   <AssuredworkloadsOrganizationsLocationsWorkloadsCreateRequest)external_idrx   rK   r   s       r   CreateCreateRequestr      sr    " loo%!!BB.6 C  !!BB3; C r   c                     t        j                  |      }|t        j                  k(  r|j	                  | ||      S |j	                  | ||      S )a  Construct an Assured Workload Update Request for Assured Workloads API requests.

  Args:
    workload: googleCloudAssuredworkloadsV1beta1Workload, new Assured Workloads
      environment containing the new configuration values to be used.
    name: str, the name for the Assured Workloads environment being updated in
      the form:
      organizations/{ORG_ID}/locations/{LOCATION}/workloads/{WORKLOAD_ID}.
    update_mask: str, list of the fields to be updated, for example,
      workload.display_name,workload.labels
    release_track: ReleaseTrack, gcloud release track being used

  Returns:
    A populated Assured Workloads Update Request for the Assured Workloads API.
  )ry   name
updateMask)rz   r   r   )r   r   r{   r|   ;AssuredworkloadsOrganizationsLocationsWorkloadsPatchRequest)rK   r   rt   r   messagess        r   CreateUpdateRequestr     sf    $ ##M2(loo%OO.6 P   OO3; P  r   c                    t        j                  |      }|r|j                  j                  |      }|t        j
                  k(  r#|j                  |j                  |      |       S |j                  |j                  ||      |       S )a6  Construct an Assured Workload Violation Acknowledgement Request.

  Args:
    name: str, the name for the Assured Workloads violation being described in
      the form:
      organizations/{ORG_ID}/locations/{LOCATION}/workloads/{WORKLOAD_ID}/violations/{VIOLATION_ID}.
    comment: str, the business justification which the user wants to add while
      acknowledging a violation.
    acknowledge_type: str, 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.
    release_track: ReleaseTrack, gcloud release track being used

  Returns:
    A populated Assured Workloads Violation Acknowledgement Request.
  )comment)8googleCloudAssuredworkloadsV1AcknowledgeViolationRequestr   )r   acknowledgeType)=googleCloudAssuredworkloadsV1beta1AcknowledgeViolationRequestr   )r   r   =GoogleCloudAssuredworkloadsV1beta1AcknowledgeViolationRequestAcknowledgeTypeValueValuesEnumr{   r|   KAssuredworkloadsOrganizationsLocationsWorkloadsViolationsAcknowledgeRequest8GoogleCloudAssuredworkloadsV1AcknowledgeViolationRequest)r   r   acknowledge_typer   r   s        r   CreateAcknowledgeRequestr   :  s    ( ##M2(]]|| loo%__AI  BC  BC BC B
 	 `   __FN  GM  GM-= GM G
 	 `  r   )/__doc__
__future__r   r   r   googlecloudsdk.api_lib.assuredr   googlecloudsdk.callioper   calliope_base$googlecloudsdk.command_lib.util.apisr   r{   r   r   r   r   r   r    r#   r)   r|   rL   rO   r1   r3   r<   r_   r`   ru   r   r   r   ALPHABETA*GoogleCloudAssuredworkloadsV1beta1Workload%GoogleCloudAssuredworkloadsV1Workloadr   5GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings0GoogleCloudAssuredworkloadsV1WorkloadKMSSettingsr   :GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings5GoogleCloudAssuredworkloadsV1WorkloadResourceSettingsr   <GoogleCloudAssuredworkloadsV1beta1WorkloadPartnerPermissions7GoogleCloudAssuredworkloadsV1WorkloadPartnerPermissionsr"    r   r   <module>r      sk   7 &  ' / 9 :))/)KB-24K
 %)	!%"$(//]@+L/6I,?
 2> H 0<D %)&T 00{00OO[++
 ;;{;;OO[66
  @@{@@OO[;;
  BB{BBOO[==
 r   