
                            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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ZdZdZddiZd Zej>                   ej@                  ejB                  jD                         G d dejF                                      Z$ej>                   ej@                  ejB                  jJ                         G d de$                    Z&d Z'd Z(ej>                   ej@                  ejB                  jR                         G d de&                    Z*y)z!Command to create an environment.    )absolute_import)division)unicode_literals)environments_util)operations_util)arg_parsers)base)flags)image_versions_util)parsers)resource_args)util)labels_util)logNz5Cannot specify --{opt} with Composer 2.X or greater.
z*Cannot specify --{opt} with Composer 1.X.
EXAMPLESa            To create an environment called ``env-1'' with all the default values,
          run:

            $ {command} env-1

          To create a new environment named ``env-1'' with the Google Compute
          Engine machine-type ``n1-standard-8'', and the Google Compute Engine
          network ``my-network'', run:

            $ {command} env-1 --machine-type=n1-standard-8 --network=my-network
        c           	         t        j                  | d       t        j                  j	                  |        | j                  dt        d       | j                  dd       | j                  dd	       | j                  d
t        j                  ddddg      dt        j                         | j                  d      }t        j                  j	                  |        t        j                  j	                  |       t        j                  j	                  |       t        j                  j	                  |        t!        j"                  |        t        j$                  j	                  |        | j                  dd       | j                  ddt        j&                         dt        j(                         | j                  ddt        j&                         dt        j(                         | j                  ddt        j*                         dt        j(                         | j                  dt,        d d!d"t        j                  d#$       | j/                         }t        j0                  d%d&      }|j                  d'|d(       t        j0                  d)d*      }|j                  d+|d,       t        j2                  | |       t        j4                  | |       | j/                         }t        j6                  j	                  |       t        j8                  j	                  |       t        j:                  j	                  |       t        j<                  j	                  |        t        j>                  j	                  |        t        j@                  j	                  |        t        jB                  |        d-jE                  d.d/      }tG        jH                  | d0|1       |t        jJ                  jL                  k(  r*t        jN                  jP                  j	                  |        n|t        jJ                  jR                  k(  r*t        jT                  jP                  j	                  |        nF|t        jJ                  jV                  k(  r)t        jX                  jP                  j	                  |        | j[                  t        j\                        }	t        j^                  j	                  |	       t        j`                  j	                  |	       t        jb                  j	                  |	       t        jd                  j	                  |	       t        jf                  j	                  |	       t        jh                  j	                  |	       t        jj                  j	                  |	       t        jl                  j	                  |	       t        jn                  j	                  |	       t        jp                  j	                  |	       t        jr                  j	                  |	       t        jt                  j	                  |	       | j                  d2      }
t        jv                  j	                  |
       t        jx                  j	                  |
       t        jz                  j	                  |        t        j|                  j	                  |        t        j~                  j	                  |        | j[                  t        j                        }t        j                  j	                  |       t        j                  j	                  |       t        j                  j	                  |       t        j                  j	                  |       | j[                  t        j                        }t        j                  j	                  |       t        j                  j	                  |       t        j                  j	                  |       t        j                  j	                  |       t        j                  j	                  | j[                                y3)4z1Common arguments that apply to all ReleaseTracks.z	to createz--node-countz5The number of nodes to create to run the environment.)typehelpz--zonezeThe Compute Engine zone in which the environment will be created. For example `--zone=us-central1-a`.)r   z--machine-typezThe Compute Engine machine type (https://cloud.google.com/compute/docs/machine-types) to use for nodes. For example `--machine-type=n1-standard-1`.--disk-size20GB64TBGBTB)lower_boundupper_boundsuggested_binary_size_scalesa  The disk size for each VM node in the environment. The minimum size is 20GB, and the maximum is 64TB. Specified value must be an integer multiple of gigabytes. Cannot be updated after the environment has been created. If units are not provided, defaults to GB.)r   r   actionz Virtual Private Cloud networkingz--service-accountzThe Google Cloud Platform service account to be used by the node VMs. You must explicitly specify a service account. Cannot be updated.z--oauth-scopeszThe set of Google API scopes to be made available on all of the node VMs. Defaults to ['https://www.googleapis.com/auth/cloud-platform']. Cannot be updated.SCOPE)r   r   metavarr   z--tagszThe set of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC 1035. Cannot be updated.TAGz--airflow-configszA list of Airflow software configuration override KEY=VALUE pairs to set. For
information on how to structure KEYs and VALUEs, run
`$ {top_command} help composer environments update`.z	KEY=VALUEz--python-versionz%Created environment will use Python 2z%Created environment will use Python 3)23zThe Python version to be used within the created environment. Supplied value should represent the desired major Python version. Cannot be updated.)r   choicesr   r   z*^(\d+(?:\.\d+(?:\.\d+(?:-build\.\d+)?)?)?)zmust be in the form X[.Y[.Z]].z--airflow-versiona2  Version of Apache Airflow to run in the environment.

      Must be of the form `X[.Y[.Z]]`, where `[]` denotes optional fragments.
      Examples: `2`, `2.3`, `2.3.4`.

      The current Cloud Composer version will be used within the created
      environment. The Apache Airflow version is a semantic version or an alias
      in the form of major or major.minor version numbers, resolved to the
      latest matching Apache Airflow version supported in the current Cloud
      Composer version. The resolved version is stored in the created
      environment.zg^composer-(\d+(?:\.\d+.\d+(?:-[a-z]+\.\d+)?)?|latest)-airflow-(\d+(?:\.\d+(?:\.\d+(?:-build\.\d+)?)?)?)zmust be in the form 'composer-A[.B.C[-D.E]]-airflow-X[.Y[.Z]]' or 'latest' can be provided in place of the Cloud Composer version string. For example: 'composer-latest-airflow-1.10.0'.z--image-versionaw  Version of the image to run in the environment.

      The image version encapsulates the versions of both Cloud Composer
      and Apache Airflow. Must be of the form
      `composer-A[.B.C[-D.E]]-airflow-X[.Y[.Z]]`, where `[]` denotes optional
      fragments.

      Examples: `composer-2-airflow-2`, `composer-2-airflow-2.2`,
      `composer-2.1.2-airflow-2.3.4`.

      The Cloud Composer portion of the image version is a semantic version or
      an alias in the form of major version number or `latest`, resolved to the
      current Cloud Composer version. The Apache Airflow portion of the image
      version is a semantic version or an alias in the form of major or
      major.minor version numbers, resolved to the latest matching Apache
      Airflow version supported in the given Cloud Composer version. The
      resolved versions are stored in the created environment.z{} must hold permission {}z2The 'Cloud Composer Service Agent' service accountz)'Cloud KMS CryptoKey Encrypter/Decrypter'environment)permission_infoz(Master Authorized Networks configurationN)Kr   AddEnvironmentResourceArgr	   
ASYNC_FLAGAddToParseradd_argumentintr   
BinarySizer
   V1ExclusiveStoreAction	add_groupNETWORK_ATTACHMENTNETWORK_FLAGSUBNETWORK_FLAGSTORAGE_BUCKET_FLAGr   AddCreateLabelsFlagsCREATE_ENV_VARS_FLAGArgListUpdateActionArgDictstradd_mutually_exclusive_groupRegexpValidatorAddIpAliasEnvironmentFlagsAddPrivateIpEnvironmentFlagsWEB_SERVER_ALLOW_IPWEB_SERVER_ALLOW_ALLWEB_SERVER_DENY_ALLCLOUD_SQL_MACHINE_TYPECLOUD_SQL_PREFERRED_ZONEWEB_SERVER_MACHINE_TYPEAddMaintenanceWindowFlagsGroupformatkms_resource_argsAddKmsKeyResourceArgReleaseTrackGAENVIRONMENT_SIZE_GA
choice_argBETAENVIRONMENT_SIZE_BETAALPHAENVIRONMENT_SIZE_ALPHAadd_argument_group"AUTOSCALING_FLAG_GROUP_DESCRIPTIONSCHEDULER_CPU
WORKER_CPUWEB_SERVER_CPUSCHEDULER_MEMORYWORKER_MEMORYWEB_SERVER_MEMORYSCHEDULER_STORAGEWORKER_STORAGEWEB_SERVER_STORAGEMIN_WORKERSMAX_WORKERSNUM_SCHEDULERS&ENABLE_MASTER_AUTHORIZED_NETWORKS_FLAGMASTER_AUTHORIZED_NETWORKS_FLAGENABLE_HIGH_RESILIENCE!ENABLE_LOGS_IN_CLOUD_LOGGING_ONLY"DISABLE_LOGS_IN_CLOUD_LOGGING_ONLY%SCHEDULED_SNAPSHOTS_GROUP_DESCRIPTION"ENABLE_SCHEDULED_SNAPSHOT_CREATIONSNAPSHOT_LOCATIONSNAPSHOT_CREATION_SCHEDULESNAPSHOT_SCHEDULE_TIMEZONE+TRIGGERER_PARAMETERS_FLAG_GROUP_DESCRIPTIONTRIGGERER_CPUTRIGGERER_COUNTTRIGGERER_MEMORYENABLE_TRIGGERERAIRFLOW_DATABASE_RETENTION_DAYS)parsersupport_max_pods_per_noderelease_tracknetwork_subnetwork_groupversion_groupairflow_version_typeimage_version_typeweb_server_groupr%   autoscaling_group_parser master_authorized_networks_group scheduled_snapshots_params_grouptriggerer_params_groups                +lib/surface/composer/environments/create.py_CommonArgsry   <   s   ))&+>//f%B  D 	8  9 	;  <
 	!!(,d|5
 ))  + $--/ .  &&v.  !9:##$<=''/""6*((0   	  %%  ' 	F  %%  ' 	8  %%  ' 	66 ))  
 557-$443& 
   #22p? B  C( ""6+DE$$V];88:''(89(()9:''(89**62  ,,V4++F3&&v.077:13/ ((m_> d''***	((44V<))...	**66v>))///	  ++77?#66..0!!":;78""#;<$$%=>!!":;%%&>?%%&>?""#;<&&'?@ 89 89""#;<%+%5%55 &6 &7"..::&(''33&( **62))55f=**66v>%+%>%>11&3"**66&(%%&FG""../OP""../OP!4477 !!"89##$:;$$%;<$$%;<''33!#    c                       e Zd ZdZeZdZeej                  j                  f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d Zy)CreateCreate and initialize a Cloud Composer environment.

  If run asynchronously with `--async`, exits after printing an operation
  that can be used to poll the status of the creation operation via:

    {top_command} composer operations describe
  Fc                 ^    t        || j                  |       t        |       t        |       y N)ry   _support_max_pods_per_nodeAddComposer3FlagsAddLineageIntegrationParser)clsrl   rn   s      rx   ArgszCreate.Args  s$    66Ff'rz   c           	      J   t        j                  |j                        r?t        j                  |j                  |j                        }t        j                  |       d | _        |j                  r%t        j                  |j                        | _        n|j                  r|j                  | _        | j                  || j                         | j                  || j                         | j                  || j                  | j                                | j                  |       | j                  || j                                | j                  |       | j                  |       | j!                  |t        j"                  | j                        | j                                | j%                  |t        j"                  | j                        | j                                t'        j(                  d|j*                         |j,                  j.                  j1                         | _        | j2                  j5                         }| j7                  |       t9        j:                  |      s=t9        j<                  dj?                  |t8        j@                  jB                              |jD                  rtG        jH                  |jD                        nd | _%        | jJ                  r| jJ                  jM                         nd | _"        d | _'        d | _(        d | _)        |jN                  rZtG        jT                  |jN                  | jJ                  r| jJ                  j5                         nd       jM                         | _'        |jP                  r2tG        jV                  |jP                        jM                         | _(        |jR                  rZtG        jX                  |jR                  | j2                  j[                         j5                               jM                         | _)        d | _.        |j\                  rt'        j^                  |      | _.        | ja                  |t        j"                  | j                              }dj?                  |jb                        }|jd                  r3t        jf                  | j2                  jM                         dd|       |S 	 ti        jj                  |d	j?                  | j2                  jM                         |jb                        | j                         
       y # t8        jl                  $ rU}t9        jn                  dj?                  | j2                  jM                         tq        jr                  |                  d }~ww xY w)Nr   z6Invalid environment name: [{}]. Must match pattern: {})fallback_zonefallback_regionzwith operation [{0}]r$   T)kindis_asyncdetailsz(Waiting for [{}] to be created with [{}])rn   zError creating [{}]: {}):r   IsDefaultImageVersionimage_version"BuildDefaultComposerVersionWarningairflow_versionr   warningImageVersionFromAirflowVersionParseIpAliasConfigOptions$ParsePrivateEnvironmentConfigOptions.ParsePrivateEnvironmentWebServerCloudSqlRangesrF   (ParseWebServerAccessControlConfigOptions*ParseMasterAuthorizedNetworksConfigOptionsValidateTriggererFlagsValidateComposer3FlagsValidateFlagsAddedInComposer2IsImageVersionStringComposerV1ValidateComposer1ExclusiveFlagsr
   ValidateDiskSize	disk_sizeCONCEPTSr$   Parseenv_refNameParseComposer3Flagscommand_utilIsValidEnvironmentNameInvalidUserInputErrorrC   ENVIRONMENT_NAME_PATTERNpatternzoner   	ParseZonezone_refRelativeNamemachine_typenetwork
subnetworkParseMachineTypeParseNetworkParseSubnetworkParentkms_keyGetAndValidateKmsEncryptionKeyGetOperationMessagenameasync_CreatedResourceoperations_api_utilWaitForOperationOperationErrorEnvironmentCreateErrorsix	text_type)selfargsmessageenv_name	operationr   es          rx   Runz
Create.Run  sV   001C1CD#FF


d22g 
kk'D.MM


 d			--d""4););<--dD4F4FG778<8J8J8<8I8I8KM 	11$733D$:K:K:MN%%&&::4;M;MN 	((::4;M;MN
 
=$..9==,,224DL||  "HT"..x8..
B
I
I==EEGH H 59IIG%%dii04DM04**,4DIDDLDO!22


]] **, $& '3ln  ||))$,,7DDFdl//
//,,--/44688D o DL||99$?dl((::4;M;MNPI %++INN;G{{	
,,
#
#
%	
 	@,,6==))+Y^^=++-		/
 (( @11%,,T\\-F-F-H-0]]1-=?@ 	@@s   !AT: :V"AVV"c                    |j                   r>t        j                  |      s)t        j                  t
        j                  d            |j                  rU|j                   sIt        j                  |      r4t        j                  t        j                  j                  dd            |j                  rU|j                   sIt        j                  |      r4t        j                  t        j                  j                  dd            |j                  rU|j                   sIt        j                  |      r4t        j                  t        j                  j                  dd            |j                  rU|j                   sIt        j                  |      r4t        j                  t        j                  j                  dd            | j                  rJ|j                  r>t        j                  |      s)t        j                  t
        j                  d            | j                  rL|j                  r@|j                   s4t        j                  t        j                  j                  dd            |j                  rW|j                   sJt        j                  |      r4t        j                  t        j                  j                  dd	            y
y
y
)z0Parses the options for VPC-native configuration.enable-ip-aliasoptzcluster-ipv4-cidrprerequisiter   zcluster-secondary-range-namezservices-ipv4-cidrzservices-secondary-range-namezmax-pods-per-nodezenable-ip-masq-agentN)enable_ip_aliasr   r   r   r    _INVALID_OPTION_FOR_V2_ERROR_MSGrC   cluster_ipv4_cidrr
   PREREQUISITE_OPTION_ERROR_MSGcluster_secondary_range_nameservices_ipv4_cidrservices_secondary_range_namer   max_pods_per_nodeenable_ip_masq_agentr   r   r   s      rx   r   z Create.ParseIpAliasConfigOptionsr  s   >>}M..
*
1
16G
1
HJ Jt';';::=I..

-
-
4
4,2E 5 GH H 	))$2F2F::=I..

-
-
4
4,0 5 23 3 	(<(<::=I..

-
-
4
4,2F 5 HI I 	**43G3G::=I..

-
-
4
4,1 5 34 4 	''D,B,B>>}M..
*
1
16I
1
JL L''D,B,B  ..

-
-
4
4,2E 5 GH H 	!!$*>*>::=I..

-
-
4
4,2H 5 JK K 	J +?!rz   c                    | j                  |      ry|j                  rU|j                  sIt        j                  |      r4t        j                  t        j                  j                  dd            |j                  r@|j                  s4t        j                  t        j                  j                  dd            |j                  r@|j                  s4t        j                  t        j                  j                  dd            |j                  rA|j                  s4t        j                  t        j                  j                  dd            yy)z9Parses the options for Private Environment configuration.Nr   enable-private-environmentr   enable-private-endpointz enable-privately-used-public-ipsmaster-ipv4-cidr)isComposer3enable_private_environmentr   r   r   r   r   r
   r   rC   enable_private_endpoint enable_privately_used_public_ipsmaster_ipv4_cidrr   s      rx   r   z+Create.ParsePrivateEnvironmentConfigOptions  sB    ''0D0D::=I..

-
-
4
4,2N 5 PQ Q ##D,K,K..

-
-
4
47+ 5 -. .
 	--++..

-
-
4
474 5 67 7
 T%D%D..

-
-
4
47$ 5 &' ' &Erz   c                    |j                   r>t        j                  |      s)t        j                  t
        j                  d            |j                   r@|j                  s4t        j                  t        j                  j                  dd            |j                  r@|j                  s4t        j                  t        j                  j                  dd            |j                  r>t        j                  |      r)t        j                  t        j                  d            |j                  rA|j                  s4t        j                  t        j                  j                  dd            y y )Nzweb-server-ipv4-cidrr   r   r   cloud-sql-ipv4-cidrcomposer-network-ipv4-cidr)web_server_ipv4_cidrr   r   r   r   r   rC   r   r
   r   cloud_sql_ipv4_cidrcomposer_network_ipv4_cidr _INVALID_OPTION_FOR_V1_ERROR_MSG)r   r   r   rn   s       rx   r   z5Create.ParsePrivateEnvironmentWebServerCloudSqlRanges  s\   !!>>}M..
*
1
16L
1
MO O   )H)H..

-
-
4
47( 5 *+ +
 (G(G..

-
-
4
47' 5 )* *
 	''::=I..
*
1
1. 2 01 1 	''++..

-
-
4
47. 5 01 1 , 	(rz   c                 @    t        j                  |j                        S r   )r   IsVersionComposer3Compatibler   r   r   s     rx   r   zCreate.isComposer3  s    ;;D<N<NOOrz   c                    |j                   r9|j                  s-|j                  s!|j                  st	        j
                  d      t        j                  |j                  |j                  xs |j                   |j                        | _        t        j                  | j                  D cg c]  }|d   	 c}       y c c}w )NzCannot specify --enable-private-environment without one of: --web-server-allow-ip, --web-server-allow-all or --web-server-deny-allip_range)r   web_server_allow_ipweb_server_allow_allweb_server_deny_allr   r   environments_api_utilBuildWebServerAllowedIpsweb_server_access_controlr
   ValidateIpRanges)r   r   acls      rx   r   z/Create.ParseWebServerAccessControlConfigOptions  s    ''(())((..%& & 	66$$d&?&? ')((($*B*B	D 	" 
$($B$BC$BSZ$BCECs   ,C c                     |j                   r|j                   | _         n!|j                  rt        j                  d      t        j                  |j                         |j                  | _        y )NzXCannot specify --master-authorized-networks without --enable-master-authorized-networks.)!enable_master_authorized_networksmaster_authorized_networksr   r    ValidateMasterAuthorizedNetworks)r   r   rn   s      rx   r   z1Create.ParseMasterAuthorizedNetworksConfigOptions  sa    --/3/U/Ud,		(	(..12 2 11'')&*&E&ED#rz   c                      y r    r   s     rx   ValidateScheduledSnapshotFlagsz%Create.ValidateScheduledSnapshotFlags  s    rz   c                    |j                   rt        j                  |j                         }|j                  |j                  |j
                  |j                  d}|j                         D ][  \  }}|s	|rt        j                  t        j                  j                  |t        j                  t        j                               |j                  s|j                  r|j                  dkD  s|j                  r3t        j                  t        j                  j                  d            |j
                  r3t        j                  t        j                  j                  d            y y y N)zenable-triggerertriggerer-cputriggerer-memoryztriggerer-count)r   composer_versionr   r   r   r   r   r   r   IsVersionTriggererCompatibleenable_triggerertriggerer_cputriggerer_memorytriggerer_countitemsr   r   r
   .INVALID_OPTION_FOR_MIN_IMAGE_VERSION_ERROR_MSGrC   MIN_TRIGGERER_COMPOSER_VERSIONMIN_TRIGGERER_AIRFLOW_VERSION!ENABLED_TRIGGERER_IS_REQUIRED_MSGr   r   triggerer_supportedpossible_argskvs         rx   r   zCreate.ValidateTriggererFlags  sP   /LL


 #33--"33!11	m  %%'$!Q(22BBII#(#G#G"'"E"E J   ( 	  T%9%9A%=			0033:::O
 	
 
		0033::& ; 
 	
 
 &> 	rz   c           
      V   | j                  |      }|j                  |j                  |j                  |j                  |j
                  d}|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  d	}|j                         D ]L  \  }}|	|rt!        j"                  t$        j&                  j)                  |t$        j*                               |j                         D ]L  \  }}|	|st!        j"                  t$        j,                  j)                  |t$        j*                               |j                  r.|j.                  s|j0                  rt!        j"                  d      y y )N)r   r   connection-subnetworkr   r   )	zsupport-web-server-pluginszdag-processor-cpuzdag-processor-memoryzdag-processor-countzdag-processor-storageznetwork-attachmentz!composer-internal-ipv4-cidr-blockzenable-private-builds-onlyzdisable-private-builds-only)r   r   zpargument --network-attachment: At most one of --network-attachment | [--network : --subnetwork] can be specified)r   r   r   connection_subnetworkr   r   support_web_server_pluginsdag_processor_cpudag_processor_memorydag_processor_countdag_processor_storagenetwork_attachment!composer_internal_ipv4_cidr_blockenable_private_builds_onlydisable_private_builds_onlyr  r   r   r
   COMPOSER3_IS_REQUIRED_MSGrC   MIN_COMPOSER3_VERSIONCOMPOSER3_IS_NOT_SUPPORTED_MSGr   r   )r   r   is_composer3forbidden_argsr  r  r  s          rx   r   zCreate.ValidateComposer3Flags$  s   ##D)L  $77&*&E&E!%!;!;#'#?#? 11N '+&E&E!33 $ 9 9#77!%!;!;"5522&*&E&E'+'G'GM ##%1	
|00++22!&!<!< 3 
 	
 & $$&1	
<000077!&!<!< 8 
 	
 ' DLLDOO..;  5Drz   c                     |j                   r[t        j                  |j                   | j                  j	                         j                               j                         |_         y y )Nr   )r  r   ParseNetworkAttachmentr   r   r   r   r   s     rx   r   zCreate.ParseComposer3FlagsR  sN     ' > >

!
!4<<3F3F3H3M3M3O!  rz   c                    |j                   r+|r)t        j                  t        j	                  d            |j
                  xs |j                  xs| |j                  xsn |j                  xs` |j                  xsR |j                  xsD |j                  xs6 |j                  xs( |j                  xs |j                  xs |j                  }|r|rt        j                  d      |j                   r+|r)t        j                  t        j	                  d            |j"                  r+|r)t        j                  t        j	                  d            |j$                  r+|r)t        j                  t        j	                  d            |j&                  r+|r)t        j                  t        j	                  d            |j(                  r+|r)t        j                  t        j	                  d            |j*                  r+|r)t        j                  t        j	                  d	            |j,                  r+|r)t        j                  t        j	                  d
            |j,                  r@|j.                  s4t        j                  t0        j2                  j	                  dd
            |j4                  r+|r)t        j                  t        j	                  d            |j4                  r@|j.                  s4t        j                  t0        j2                  j	                  dd            |j4                  r2|j4                  dk(  r"|j,                  rt        j                  d      yyy)FRaises InputError if flags from Composer v2 are used when creating v1.zenvironment-sizer   ziWorkloads Config flags introduced in Composer 2.X cannot be used when creating Composer 1.X environments.zenable-high-resiliencez!enable-logs-in-cloud-logging-onlyz"disable-logs-in-cloud-logging-onlyz%enable-cloud-data-lineage-integrationz&disable-cloud-data-lineage-integrationzcloud-sql-preferred-zoner  r   r   zconnection-typezvpc-peeringzXYou cannot specify a connection subnetwork if connection type 'VPC_PEERING' is selected.N)environment_sizer   r   r   rC   scheduler_cpu
worker_cpuweb_server_cpuscheduler_memoryworker_memoryweb_server_memoryscheduler_storageworker_storageweb_server_storagemin_workersmax_workersenable_high_resilience!enable_logs_in_cloud_logging_only"disable_logs_in_cloud_logging_only%enable_cloud_data_lineage_integration&disable_cloud_data_lineage_integrationcloud_sql_preferred_zoner  r   r
   r   connection_type)r   r   is_composer_v1rn   composer_v2_flag_useds        rx   r   z$Create.ValidateFlagsAddedInComposer2X  sv   ..
*
1
16H
1
IK K 	 	Hdoo 	H1D1D 	H	H!%!3!3	H7;7M7M	H	H"&"5"5	H 		H $(#3#3	H 8<7G7G	 
 ..EF F ""~..
*
1
16N
1
OQ Q--...
*
1
15 2  
 ..>..
*
1
16 2  
 11n..
*
1
19 2  
 22~..
*
1
1: 2  
 $$..
*
1
1, 2  
 !!n..
*
1
16M
1
NP P!!$*I*I..

-
-
4
47) 5 +, , ..
*
1
16G
1
HJ JD$C$C..

-
-
4
47=N 5 PQ Q 	!5!5!F""..'( ( 	# "Grz   c                 P   |j                   r+|s)t        j                  t        j	                  d            |j
                  r+|s)t        j                  t        j	                  d            |j                  r,|s)t        j                  t        j	                  d            yy)r#  zpython-versionr   z	disk-sizezmachine-typeN)python_versionr   r   r   rC   r   r   )r   r   r7  rn   s       rx   r   z&Create.ValidateComposer1ExclusiveFlags  s     >..
*
1
16F
1
GI I~~n..
*
1
1k
1
BD D..
*
1
1n
1
EG G "0rz   c                 	   t        j                  dNi d|j                  d|j                  d| j                  d| j
                  d| j                  d| j                  d|j                  d|j                  d	|j                  d
|j                  d|j                  d|j                  dt        j                  |j                        d|j                   d| j"                  d|j$                  d|j&                  d|j(                  d|j*                  d|j,                  d|j.                  d| j0                  d|j2                  d|j4                  d|j6                  d|j8                  d|j:                  d|j<                  d|j>                  d| j@                  d|jB                  d |jD                  d!|jF                  d"|jH                  d#|jJ                  d$|jL                  d%|jN                  d&|jP                  d'|jR                  d(t        jT                  |jV                        d)t        jT                  |jX                        d*t        jT                  |jZ                        d+t        jT                  |j\                        d,t        jT                  |j^                        d-t        jT                  |j`                        d.t        jT                  |jb                        d/|jd                  d0|jf                  d1|jh                  d2|jj                  d3|jl                  d4|jn                  d5|jp                  d6|jr                  d7|jt                  d8|jv                  d9|jx                  d:|jz                  d;|j|                  d<|j~                  d=|j                  d>|j                  d?|j                  d@|j                  dA|j                  dB|j                  dC|j                  dD|j                  dE|j                  dFt        jT                  |j                        dGt        jT                  |j                        dH|j                  dI|j                  dJ|j                  dK| j                         dL|j                  dM|j                  }t        j                  | j                  ||      S )OzConstructs Create message.
node_countlabelslocationr   r   r   r  env_variablesairflow_config_overridesservice_accountoauth_scopestagsdisk_size_gbr:  r   use_ip_aliasesr   r   cluster_ipv4_cidr_blockservices_ipv4_cidr_blockr   r   private_environmentprivate_endpointprivately_used_public_ipsr   r   r   r   r   r  r6  cloud_sql_machine_typeweb_server_machine_typer%  r  r  r&  r'  scheduler_memory_gbtriggerer_memory_gbworker_memory_gbweb_server_memory_gbscheduler_storage_gbworker_storage_gbweb_server_storage_gbr.  r/  scheduler_countr  r$  maintenance_window_startmaintenance_window_endmaintenance_window_recurrencer   r   "enable_scheduled_snapshot_creationsnapshot_creation_schedulesnapshot_locationsnapshot_schedule_timezoner3  r4  r0  r1  r2  r5  r  r  r  dag_processor_memory_gbdag_processor_storage_gbr  r  r  rn   storage_bucketairflow_database_retention_daysr   )Sr   CreateEnvironmentFlagsr<  r=  r   r   r   r   r  r?  airflow_configsrA  rB  rC  DiskSizeBytesToGBr   r:  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r6  rK  rL  r%  r  r  r&  r'  MemorySizeBytesToGBr(  r  r)  r*  r+  r,  r-  r.  r/  rT  r  r$  rU  rV  rW  r   r   rX  rY  rZ  r[  r3  r4  r0  r1  r2  r5  r  r  r  r  r  r  r  r  rF   r^  r_  r|   r   r   r   r7  create_flagss       rx   r   zCreate.GetOperationMessage  s%    )?? d??d{{d d &&	d
 d ??d  22d ((d "&!5!5d ,,d &&d YYd +<<T^^Ld **d ((d  ++!d" &*%F%F#d$ '+&H&H%d& !% 6 6'd( "&!8!8)d* "66+d, -d. !;;/d0 551d2 #'"G"G3d4 ..5d6 "667d8 !449d: $(#B#B;d< #'"@"@=d> #88?d@ ,,AdB  $::CdD !% < <EdF ((GdH ((IdJ ,,KdL ??MdN **OdP 2EE!!
QdV 2EE!!
Wd\ /BB
]db 3FF""
cdh 3FF""
idn 0CC
odt 4GG##
udz $${d| $$}d~ ,,d@ ..AdB ..CdD "&!>!>EdF  $::GdH '+&H&HIdL 22MdP $(#B#BQdT 33UdX $(#B#BYdZ 00[d\ $(#B#B]d^ /3.X.X_d` 04/Z/Zadb  $::cdd +/*P*Pedf ,0+R+Rgdh "&!>!>idj $(#B#Bkdl 00mdn !44odp !6 I I%%!
qdv "7!J!J&&"
wd| +/*P*P}d~ $(#B#Bd@ %)$D$DAdB '')CdD **EdF )-(L(LGdLJ !''l(68 8rz   N)__name__
__module____qualname____doc__DETAILED_HELPdetailed_helpr   classmethodr	   rF   rG   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rz   rx   r|   r|   	  s      -$&*&7&7&:&: ( (
S@j)KV'>1@PE(	F	!
F,\B(HGi8rz   r|   c                   h     e Zd ZdZdZeej                  j                  f fd	       Z	d Z
d Z xZS )
CreateBetar}   Tc                 .    t         t        |   ||       y r   )superrn  r   r   rl   rn   	__class__s      rx   r   zCreateBeta.Args#  s    	*c6rz   c                 	   t        j                  dOi d|j                  d|j                  d| j                  d| j
                  d| j                  d| j                  d|j                  d|j                  d	|j                  d
|j                  d|j                  d|j                  dt        j                  |j                        d|j                   d| j"                  d|j$                  d|j&                  d|j(                  d|j*                  d|j,                  d|j.                  d| j0                  d|j2                  d|j4                  d|j6                  d|j8                  d|j:                  d|j<                  d|j>                  d|j@                  d|jB                  d |jD                  d!| jF                  d"|jH                  d#|jJ                  d$|jL                  d%|jN                  d&|jP                  d'|jR                  d(|jT                  d)t        jV                  |jX                        d*t        jV                  |jZ                        d+t        jV                  |j\                        d,t        jV                  |j^                        d-t        jV                  |j`                        d.t        jV                  |jb                        d/t        jV                  |jd                        d0|jf                  d1|jh                  d2|jj                  d3|jl                  d4|jn                  d5|jp                  d6|jr                  d7|jt                  d8|jv                  d9|jx                  d:|jz                  d;|j|                  d<|j~                  d=|j                  d>|j                  d?|j                  d@|j                  dA|j                  dB|j                  dC|j                  dD|j                  dE|j                  dF|j                  dGt        jV                  |j                        dHt        jV                  |j                        dI|j                  dJ|j                  dK|j                  dL| j                         dM|j                  dN|j                  }t        j                  | j                  ||      S )PSee base class.r<  r=  r>  r   r   r   r  r?  r@  rA  rB  rC  rD  r:  r   rE  r   r   rF  rG  r   r   rH  rI  rJ  r  r6  r   r   r   r   r   r   rK  rL  r%  r  r  r&  r'  rM  rN  rO  rP  rQ  rR  rS  r.  r/  rT  r  rU  rV  rW  r$  r   r   rX  rY  rZ  r[  r3  r4  r0  r1  r2  r5  r  r  r  r\  r]  r  r  r  rn   r^  r_  r   )Tr   r`  r<  r=  r   r   r   r   r  r?  ra  rA  rB  rC  rb  r   r:  r   r   r   r   r   r   r   r   r   r   r   r  r6  r   r   r   r   r   r   rK  rL  r%  r  r  r&  r'  rc  r(  r  r)  r*  r+  r,  r-  r.  r/  rT  r  rU  rV  rW  r$  r   r   rX  rY  rZ  r[  r3  r4  r0  r1  r2  r5  r  r  r  r  r  r  r  r  rF   r^  r_  r|   r   rd  s       rx   r   zCreateBeta.GetOperationMessage'  s8    )?? a??a{{a a &&	a
 a ??a  22a ((a "&!5!5a ,,a &&a YYa +<<T^^La **a ((a  ++!a" &*%F%F#a$ '+&H&H%a& !% 6 6'a( "&!8!8)a* 00+a, -a. !;;/a0 551a2 #'"G"G3a4 #885a6 ,,7a8 ..9a: "66;a< !44=a> $(#B#B?a@ "66AaB #'"@"@CaD  $::EaF !% < <GaH ((IaJ ((KaL ,,MaN ??OaP **QaR 2EE!!
SaX 2EE!!
Ya^ /BB
_ad 3FF""
eaj 3FF""
kap 0CC
qav 4GG##
wa| $$}a~ $$a@ ,,AaB ..CaD "&!>!>EaF  $::GaH '+&H&HIaJ ..KaL +/*P*PMaN $(#B#BOaP ,0+R+RQaR $(#B#BSaT 00UaV $(#B#BWaX /3.X.XYaZ 04/Z/Z[a\  $::]a^ +/*P*P_a` ,0+R+Raab "&!>!>cad $(#B#Beaf 00gah !44iaj !6 I I%%!
kap "7!J!J&&"
qav +/*P*Pwax $(#B#Byaz %)$D$D{a| '')}a~ **a@ )-(L(LAaLF !''l(68 8rz   c                    |j                   rt        j                  |j                         }|j                  |j                  |j
                  |j                  d}|j                         D ][  \  }}|s	|rt        j                  t        j                  j                  |t        j                  t        j                               |j                  s|j                  r|j                  dkD  s|j                  r3t        j                  t        j                  j                  d            |j
                  r3t        j                  t        j                  j                  d            y y y r   r   r
  s         rx   r   z!CreateBeta.ValidateTriggererFlags  sX   /LL


 #33--"33!11	m  %%'$!Q(22BBII#(#G#G"'"E"E J GH H ( !!d&:&:&*&:&:Q&>			0033::# ; %& 	& 
		0033::& ; () 	) 
 '? "rz   )rf  rg  rh  ri  r   rl  r	   rF   rJ   r   r   r   __classcell__rr  s   @rx   rn  rn    s=      $&*&7&7&<&< 7 7g8R)rz   rn  c                     | j                         }t        j                  j                  |       t        j                  j                  |       y)z-Adds lineage integration flags to the parser.N)r8   r
   *ENABLE_CLOUD_DATA_LINEAGE_INTEGRATION_FLAGr(   +DISABLE_CLOUD_DATA_LINEAGE_INTEGRATION_FLAG)rl   lineage_params_groups     rx   r   r     sC      <<>22>> 33??rz   c                 R   t         j                  j                  |        | j                  t         j                        }t         j
                  j                  |       t         j                  j                  |       t         j                  j                  |       t         j                  j                  |       t         j                  j                  |        | j                         }t         j                  j                  |       t         j                  j                  |       y)z$Adds Composer 3 flags to the parser.N)r
   SUPPORT_WEB_SERVER_PLUGINSr(   rN   /DAG_PROCESSOR_PARAMETERS_FLAG_GROUP_DESCRIPTIONDAG_PROCESSOR_CPUDAG_PROCESSOR_COUNTDAG_PROCESSOR_MEMORYDAG_PROCESSOR_STORAGE COMPOSER_INTERNAL_IPV4_CIDR_FLAGr8   ENABLE_PRIVATE_BUILDS_ONLYDISABLE_PRIVATE_BUILDS_ONLY)rl   dag_processor_params_groupprivate_builds_only_groups      rx   r   r     s     ""..v6%88;;  %%&@A''(BC(()CD))*DE((44V<$AAC""../HI##//0IJrz   c                   ^     e Zd ZdZeej                  j                  f fd	       Zd Z	 xZ
S )CreateAlphar}   c                 ^    t         t        |   ||       |j                  dddddd       y )Nz--airflow-executor-typeTz*Task instances will run by CELERY executorz.Task instances will run by KUBERNETES executor)CELERY
KUBERNETESzThe type of executor by which task instances are run on Airflow;
        currently supported executor types are CELERY and KUBERNETES.
        Defaults to CELERY. Cannot be updated.)hiddenr#   r   )rp  r  r   r)   rq  s      rx   r   zCreateAlpha.Args  s?    	+s 7 !BJ
2  	3rz   c                 	   t        j                  dPi d|j                  d|j                  d|j                  d| j
                  d| j                  d| j                  d| j                  d|j                  d	|j                  d
|j                  d|j                  d|j                  d|j                  dt        j                  |j                         d|j"                  d| j$                  d|j&                  d|j(                  d|j*                  d|j,                  d|j.                  d|j0                  d|j2                  d|j4                  d| j6                  d|j8                  d|j:                  d|j<                  d|j>                  d|j@                  d|jB                  d |jD                  d!|jF                  d"|jH                  d#| jJ                  d$|jL                  d%|jN                  d&|jP                  d'|jR                  d(|jT                  d)|jV                  d*|jX                  d+t        jZ                  |j\                        d,t        jZ                  |j^                        d-t        jZ                  |j`                        d.t        jZ                  |jb                        d/t        jZ                  |jd                        d0t        jZ                  |jf                        d1t        jZ                  |jh                        d2|jj                  d3|jl                  d4|jn                  d5|jp                  d6|jr                  d7|jt                  d8|jv                  d9|jx                  d:|jz                  d;|j|                  d<|j~                  d=|j                  d>|j                  d?|j                  d@|j                  dA|j                  dB|j                  dC|j                  dD|j                  dE|j                  dF|j                  dG|j                  dH|j                  dIt        jZ                  |j                        dJt        jZ                  |j                        dK|j                  dL|j                  dM|j                  dN| j                         dO|j                  }t        j                  | j                  ||      S )Qrt  r<  r$  r=  r>  r   r   r   r  r?  r@  rA  rB  rC  rD  r:  r   airflow_executor_typerE  r   r   rF  rG  r   r   r   rH  rI  r   r   r   r   rJ  r  r6  r   rK  rL  r%  r  r  r&  r'  rM  rN  rO  rP  rQ  rR  rS  r.  r/  rT  r  rU  rV  rW  r   r   r_  rX  rY  rZ  r[  r3  r4  r0  r1  r2  r5  r  r  r  r\  r]  r  r  r  rn   r^  r   )Ur   r`  r<  r$  r=  r   r   r   r   r  r?  ra  rA  rB  rC  rb  r   r:  r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r6  r   rK  rL  r%  r  r  r&  r'  rc  r(  r  r)  r*  r+  r,  r-  r.  r/  rT  r  rU  rV  rW  r   r   r_  rX  rY  rZ  r[  r3  r4  r0  r1  r2  r5  r  r  r  r  r  r  r  r  rF   r^  r|   r   rd  s       rx   r   zCreateAlpha.GetOperationMessage  sK    )?? b??b..b {{b 	b
 &&b b ??b  22b ((b "&!5!5b ,,b &&b YYb +<<T^^Lb **b  ((!b" #88#b$ ++%b& &*%F%F'b( '+&H&H)b* !% 6 6+b, "&!8!8-b. 00/b0 "661b2 3b4 !;;5b6 557b8 "669b: !44;b< $(#B#B=b> ..?b@ #'"G"GAbB #88CbD ,,EbF #'"@"@GbH  $::IbJ !% < <KbL ((MbN ((ObP ,,QbR ??SbT **UbV 2EE!!
Wb\ 2EE!!
]bb /BB
cbh 3FF""
ibn 3FF""
obt 0CC
ubz 4GG##
{b@ $$AbB $$CbD ,,EbF ..GbH "&!>!>IbJ  $::KbL '+&H&HMbN +/*P*PObP $(#B#BQbR )-(L(LSbT ,0+R+RUbV $(#B#BWbX 00YbZ $(#B#B[b\ /3.X.X]b^ 04/Z/Z_b`  $::abb +/*P*Pcbd ,0+R+Rebf "&!>!>gbh $(#B#Bibj 00kbl !44mbn !6 I I%%!
obt "7!J!J&&"
ubz +/*P*P{b| $(#B#B}b~ %)$D$Db@ '')AbB **CbLH !''l(68 8rz   )rf  rg  rh  ri  rl  r	   rF   rL   r   r   rv  rw  s   @rx   r  r    s1     &*&7&7&=&= 3 3h8rz   r  )+ri  
__future__r   r   r   googlecloudsdk.api_lib.composerr   r   r   r   googlecloudsdk.callioper   r	   #googlecloudsdk.command_lib.composerr
   r   r   r   r   r   googlecloudsdk.command_lib.kmsrD   $googlecloudsdk.command_lib.util.argsr   googlecloudsdk.corer   r   r   r   rj  ry   DefaultUniverseOnlyReleaseTracksrF   rG   Commandr|   rJ   rn  r   r   rL   r  r   rz   rx   <module>r     sB   ( &  ' V R / ( 5 C 7 = D M < # 
$  $  
 	"J#Z D%%(()H8T\\ H8 * H8V D%%**+R) R) , R)j
K( D%%++,A8* A8 - A8rz   