
                          &   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  ej&                  ej(                  j*                        ej,                   G d dej.                                      Z ej&                  ej(                  j2                        ej,                   G d de                    Z ej&                  ej(                  j6                        ej,                   G d de                    Zy)z%Command for creating backend buckets.    )base_classes)base)cdn_flags_utils)
exceptions)flags)resource_manager_tags_utils)scope)signed_url_flags)backend_buckets_utilsc                   L    e Zd ZdZdZdZed        Zd Zd Z	d Z
d Zd	 Zd
 Zy)CreateCreate a backend bucket.

  *{command}* is used to create backend buckets. Backend buckets
  define Google Cloud Storage buckets that can serve content. URL
  maps define which requests are sent to which backend buckets.
  NFc                 B   |j                   j                  t        j                         t        j                  | |d| j
                         t        j                  j                  |       |j                   j                  t        j                         t        j                  |d       t        j                  |d       t        j                  |       t        j                  |       t        j                   || j
                         t        j"                  |       y)z"Set up arguments for this command.createF)requiredzbackend bucketN)display_info	AddFormatbackend_buckets_flagsDEFAULT_LIST_FORMATAddUpdatableArgs(_support_regional_statera_load_balancersREQUIRED_GCS_BUCKET_ARGAddArgumentAddCacheUpdaterBackendBucketsCompleterr
   AddSignedUrlCacheMaxAge	cdn_flagsAddCdnPolicyArgsAddCacheKeyExtendedCachingArgsAddCompressionModeAddLoadBalancingSchemeAddResourceManagerTags)clsparsers     -lib/surface/compute/backend_buckets/create.pyArgszCreate.Args*   s     !!"7"K"KL**VXsKK 11==fE
''557,,VeDv'7888@,,V400<< 008    c                 \   t        j                  | j                               }|j                  }| j                  j                  ||j                  t        j                  j                        }|j                  xs d}|j                  j                  |j                  |j                         |j                  |      }t!        j"                  |||       |j$                  |j$                  |_        |j(                  +|j(                  j*                  r|j                  durd|_        |j.                  4|j                  j                  j1                  |j.                        |_        |j4                  4|j                  j                  j7                  |j4                        |_        |S )z'Creates and returns the backend bucket.)default_scopeF)descriptionname
bucketName	enableCdnT)r   ComputeApiHolderReleaseTrackclientBACKEND_BUCKET_ARGResolveAsResource	resourcescompute_scope	ScopeEnumGLOBAL
enable_cdnmessagesBackendBucketr*   Namegcs_bucket_namer   ApplyCdnPolicyArgscustom_response_headercustomResponseHeaders	cdnPolicy	cacheModer-   compression_modeCompressionModeValueValuesEnumcompressionModeload_balancing_scheme"LoadBalancingSchemeValueValuesEnumloadBalancingScheme)selfargsholderr0   backend_buckets_refr7   backend_buckets          r%   CreateBackendBucketzCreate.CreateBackendBucket?   sv   **4+<+<+>?F]]F11CCfm.E.E.L.L D N )EJ__22$$ %%'''	 3 N ,,VT>J"".-1-H-Hn*  ,$$..OO5(!%n(
//
'
'
F
F## $ !!-
//
'
'
J
J(( ( r'   c                 (   t        j                  | j                               }|j                  }| j	                  |      }| j
                  rt        j                  j                  ||j                  t        j                  |      t        j                  j                        }|j                         dk(  r| j!                  ||      }n&|j                         dk(  r| j#                  |||      }| j%                  ||||       |j'                        S |j(                  +| j+                  |j,                  |j(                        |_        | j0                  j                  ||j                        }|j'                  | j!                  ||            S )z;Issues the request necessary for creating a backend bucket.)scope_listerr)   compute.backendBucketscompute.regionBackendBuckets)r   r.   r/   r0   rL   r   r   "GLOBAL_REGIONAL_BACKEND_BUCKET_ARGr2   r3   compute_flagsGetDefaultScopeListerr4   r5   r6   
Collection_CreateGlobalRequests_CreateRegionalRequests_ApplyResourceManagerTagsMakeRequestsresource_manager_tags_CreateBackendBucketParamsr8   paramsr1   )rG   rH   rI   r0   rK   refrequestsrJ   s           r%   Runz
Create.Runk   se   **4+<+<+>?F]]F--d3N44!DDVV



$::6B%//66	 W c 
	5	5--ncB>>==//ncJ
$$T>3G  **!!-"==
//455n 11CCf "">3FG r'   c                     |j                   y |j                         dk(  r,| j                  |j                  |j                         |_        y |j                         dk(  rt        j                  dd      y )NrO   rP   z--resource-manager-tagszEResource Manager tags are not supported for regional backend buckets.)rY   rT   rZ   r8   r[   compute_exceptionsArgumentError)rG   rH   rK   r\   r0   s        r%   rW   z Create._ApplyResourceManagerTags   su    !!)
~~33"==
//455n 
	;	;,,
#  
<r'   c                    t        j                  |      }|j                  }t        |j	                               D cg c]"  \  }}|j
                  j                  ||      $ }}} ||j                  |            S c c}}w )N)keyvalue)additionalProperties)resourceManagerTags)r   GetResourceManagerTagsBackendBucketParamssorteditemsResourceManagerTagsValueAdditionalProperty)rG   r8   rY   resource_manager_tags_mapr[   rc   rd   additional_propertiess           r%   rZ   z!Create._CreateBackendBucketParams   s    #::!	
 
 ))F !!:!@!@!BCCJC 	''::s%:PC   ";;!6 < 
 	s   'Bc                     t        j                  | j                               }|j                  }|j                  j                  ||j                        }|j                  j                  d|fgS )N)backendBucketprojectInsert)	r   r.   r/   r0   r8   "ComputeBackendBucketsInsertRequestrq   apitools_clientbackendBuckets)rG   rK   rJ   rI   r0   requests         r%   rU   zCreate._CreateGlobalRequests   sh    **4+<+<+>?F]]Foo@@$.A.I.I A G ##22HgFGGr'   c                     t        j                  | j                               }|j                  }|j                  j                  ||j                  |j                        }|j                  j                  d|fgS )N)rp   rq   regionrr   )
r   r.   r/   r0   r8   (ComputeRegionBackendBucketsInsertRequestrq   rx   rt   regionBackendBuckets)rG   rH   rK   rJ   rI   r0   rv   s          r%   rV   zCreate._CreateRegionalRequests   so    **4+<+<+>?F]]FooFF$#++{{ G G
 ##88(GLMMr'   )__name__
__module____qualname____doc__r1   r   classmethodr&   rL   r^   rW   rZ   rU   rV    r'   r%   r   r      sI     -2*9 9(*X D"HNr'   r   c                       e Zd ZdZdZy)
CreateBetar   FNr{   r|   r}   r~   r   r   r'   r%   r   r      s     .3*r'   r   c                       e Zd ZdZdZy)CreateAlphar   TNr   r   r'   r%   r   r      s     .2*r'   r   N)r~   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   r   r   r`   r   rR   r   r	   r4   r
   2googlecloudsdk.command_lib.compute.backend_bucketsr   r   ReleaseTracksr/   GADefaultUniverseOnlyCreateCommandr   BETAr   ALPHAr   r   r'   r%   <module>r      s    , 7 ( K O E J E ? T ] D%%(()]NT ]N  *]N@ D%%**+3 3  ,3 D%%++,2* 2  -2r'   