
    U9                        S r SSKJr  SSKJr  SSKJr  \R                  rS r	S r
S rS rS	 rS
 rS rS rSSSSSSSSSSSSSS\R"                  4S jrS rS rS rS rS rS rS r\R"                  4S jr\R"                  4S jrS\R"                  4S jr\R:                  \	" \R<                  5      R>                  \R<                  \	" \R<                  5      R>                  \R"                  \	" \R"                  5      R@                  0r!\R:                  \	" \R<                  5      RD                  \R<                  \	" \R<                  5      RD                  \R"                  \	" \R"                  5      RF                  0r$\R:                  \	" \R<                  5      RJ                  \R<                  \	" \R<                  5      RJ                  \R"                  \	" \R"                  5      RL                  0r'\R:                  \	" \R<                  5      RP                  \R<                  \	" \R<                  5      RP                  \R"                  \	" \R"                  5      RR                  0r*g)z0Utilities for constructing Assured api messages.    )util)base)	arg_utilsc                 .    [         R                  " U 5      $ N)r   GetMessagesModulerelease_tracks    2lib/googlecloudsdk/api_lib/assured/message_util.pyGetMessagesr      s    				..    c                 ,    [         R                  U 5      $ r   )WORKLOAD_MAPgetr	   s    r   GetWorkloadMessager      s    			-	((r   c                 ,    [        U 5      R                  $ r   )r   ComplianceRegimeValueValuesEnumr	   s    r   GetComplianceRegimesEnumr   !   s    	M	*	J	JJr   c                 ,    [        U 5      R                  $ r   )r   PartnerValueValuesEnumr	   s    r   GetPartnersEnumr   %   s    	M	*	A	AAr   c                 ,    [         R                  U 5      $ r   )KMS_SETTINGS_MAPr   r	   s    r   GetKmsSettingsr   )   s    			m	,,r   c                 ,    [         R                  U 5      $ r   )RESOURCE_SETTINGS_MAPr   r	   s    r   GetResourceSettingsr   -   s    		"	"=	11r   c                 ,    [         R                  U 5      $ r   )PARTNER_PERMISSIONS_MAPr   r	   s    r   GetPartnerPermissionsr    1   s    	 	$	$]	33r   c                 $    SR                  X5      $ )Nzorganizations/{}/locations/{}format)organization_idlocations     r   CreateAssuredParentr&   5   s    	(	/	/	JJr   Nc                    [        U5      nU" 5       nU	(       a  U	Ul        U(       a  UUl        U (       a  U Ul        U(       a  [	        U5      Ul        U(       a  [        X5      Ul        U(       a%  [        R                  " U[        U5      5      Ul        U(       a%  [        R                  " U[        U5      5      Ul        U(       a  UUl        U(       a  [        U5      " US   S9Ul        U
(       a  U
Ul        U(       a  U(       a  [%        U5      " XgS9Ul        U(       a  [)        X5      Ul        U(       a  UUl        U$ )a-  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_regimer4    partner_services_billing_accountpartner_permissionsbilling_accountnext_rotation_timerotation_periodr1   r+   provisioned_resources_parentresource_settingsenable_sovereign_controlsviolation_notifications_enabledr
   workload_messageworkloads                    r   CreateAssuredWorkloadrI   9   s   j (6(	HM-H'H$-M'.H* "6<HO ) 6 63MB!H  --/H &-MH*"7"F*+=>#H "*FH'O)-8+H  :!H '@H$	/r   c                 &    SR                  XU5      $ )Nz*organizations/{}/locations/{}/workloads/{}r"   )r$   r%   workload_ids      r   CreateAssuredWorkloadsParentrL      s    	5	<	<
 r   c                 Z    U R                  5       S:X  a  gU R                  5       S:X  a  gU $ )NtrueTfalseF)lower)rF   s    r   r.   r.      s0    $**,6$**,7**r   c                     / nU R                  5        H/  u  p4UR                  R                  X4S9nUR                  U5        M1     UR                  US9$ )N)keyvalue)additionalProperties)itemsLabelsValueAdditionalPropertyappend)r1   rG   workload_labelsrR   rS   	new_labels         r   r0   r0      s^    /LLNjc ,,?? @ I 9%	 #
 
	%	%?	%	KKr   c                 "   0 nU R                  5        Ha  u  p4[        X15      nXR;   a  X%   O
[        XQ5      n UR                  S5      (       a  X@l        OUR                  S5      (       a  X@l        XU'   Mc     [        UR                  5       5      $ )a%  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)rU   GetResourceTypeCreateResourceSettingsendswith
resourceIdr-   listvalues)rD   r
   resource_settings_dictrR   rS   resource_types         r   r9   r9      s     %++-jc#C7M 2 	-#MA 
 ||E%*"	g		&+#,==) . 
$++-	..r   c                 "   [        U5      nU R                  S5      (       a  UR                  R                  $ U R                  S5      (       a  UR                  R                  $ U R                  S5      (       a  UR                  R
                  $ g)a4  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)rR   r
   resource_settings_messages      r   r\   r\      s     2-@^^&''!==NN ~~/00!==UU ~~i  $@@HHH !r   c                 $    [        U5      nU" U S9$ )N)resourceType)r   )rc   r
   rk   s      r   r]   r]      s    1-@	"	>>r   c                     / nU (       a  UR                  S5        U(       a  UR                  S5        U(       a  UR                  S5        SR                  U5      $ )Nzworkload.display_namezworkload.labelsz(workload.violation_notifications_enabled,)rX   join)r<   r1   rF   update_masks       r   CreateUpdateMaskrr      sL    +./()$AB	+	r   c                     U[         R                  :X  a%  [        R                  " U5      R	                  U UUS9$ [        R                  " U5      R	                  U UUS9$ )aL  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)rt   ru   *googleCloudAssuredworkloadsV1beta1Workload)ReleaseTrackGAr   r   <AssuredworkloadsOrganizationsLocationsWorkloadsCreateRequest)external_idru   rH   r
   s       r   CreateCreateRequestr|      sr    " loo%!!BB.6 C  !!BB3; C r   c                     [         R                  " U5      nU[        R                  :X  a  UR	                  U UUS9$ UR	                  U UUS9$ )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.
)rv   name
updateMask)rw   r~   r   )r   r   rx   ry   ;AssuredworkloadsOrganizationsLocationsWorkloadsPatchRequest)rH   r~   rq   r
   messagess        r   CreateUpdateRequestr     sf    $ ##M2(loo%OO.6 P   OO3; P  r   c                    [         R                  " U5      nU(       a  UR                  R                  U5      nU[        R
                  :X  a  UR                  UR                  US9U S9$ UR                  UR                  XS9U S9$ )a  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AcknowledgeTypeValueValuesEnumrx   ry   KAssuredworkloadsOrganizationsLocationsWorkloadsViolationsAcknowledgeRequest8GoogleCloudAssuredworkloadsV1AcknowledgeViolationRequest)r~   r   acknowledge_typer
   r   s        r   CreateAcknowledgeRequestr   7  s    ( ##M2(]]|| loo%__AI  BC  BC BC B
 	 `   __FN  GM  GM GM G
 	 `  r   )+__doc__googlecloudsdk.api_lib.assuredr   googlecloudsdk.callioper   calliope_base$googlecloudsdk.command_lib.util.apisr   rx   r   r   r   r   r   r   r    r&   ry   rI   rL   r.   r0   r9   r\   r]   rr   r|   r   r   ALPHABETA*GoogleCloudAssuredworkloadsV1beta1Workload%GoogleCloudAssuredworkloadsV1Workloadr   5GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings0GoogleCloudAssuredworkloadsV1WorkloadKMSSettingsr   :GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings5GoogleCloudAssuredworkloadsV1WorkloadResourceSettingsr   <GoogleCloudAssuredworkloadsV1beta1WorkloadPartnerPermissions7GoogleCloudAssuredworkloadsV1WorkloadPartnerPermissionsr    r   r   <module>r      sd   7 0 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   