
    9                         S r SSKJr  SSKJr  SSKJ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 \RB                  \" \RD                  5      RF                  \RD                  \" \RD                  5      RF                  \R*                  \" \R*                  5      RH                  0r%\RB                  \" \RD                  5      RL                  \RD                  \" \RD                  5      RL                  \R*                  \" \R*                  5      RN                  0r(\RB                  \" \RD                  5      RR                  \RD                  \" \RD                  5      RR                  \R*                  \" \R*                  5      RT                  0r+\RB                  \" \RD                  5      RX                  \RD                  \" \RD                  5      RX                  \R*                  \" \R*                  5      RZ                  0r.g)z0Utilities for constructing Assured api messages.    )absolute_import)division)unicode_literals)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    0   s    		"	"=	11r   c                 ,    [         R                  U 5      $ r
   )PARTNER_PERMISSIONS_MAPr   r   s    r   GetPartnerPermissionsr#   4   s    	 	$	$]	33r   c                 $    SR                  X5      $ )Nzorganizations/{}/locations/{}format)organization_idlocations     r   CreateAssuredParentr)   8   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_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*"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   CreateAssuredWorkloadsParentrO      s    	5	<	<
 r   c                 Z    U R                  5       S:X  a  gU R                  5       S:X  a  gU $ )NtrueTfalseF)lower)rI   s    r   r1   r1      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)r4   rJ   workload_labelsrU   rV   	new_labels         r   r3   r3      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)rX   GetResourceTypeCreateResourceSettingsendswith
resourceIdr0   listvalues)rG   r   resource_settings_dictrU   rV   resource_types         r   r<   r<      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)rU   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    )rf   r   rn   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,)r[   join)r?   r4   rI   update_masks       r   CreateUpdateMaskru      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)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                     [         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.
)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                    [         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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   