
                            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 Zd Zd Zd Z	 ddZd Zd Z	 ddZ e
j>                  e
j@                  jB                  e
j@                  jD                        e
jF                   G d de
jH                                      Z% e
j>                  e
j@                  jL                        e
jF                   G d de%                    Z'y)z6Command for changing the default service of a URL map.    )absolute_import)division)unicode_literals)encoding)base_classes)base)scope)flags)url_maps_utils)logc                      dddS )N:Change the default service or default bucket of a URL map.z      *{command}* is used to change the default service or default
      bucket of a URL map. The default service or default bucket is
      used for any requests for which there is no mapping in the
      URL map.
      )briefDESCRIPTION r       3lib/surface/compute/url_maps/set_default_service.py_DetailedHelpr   !   s    K

 r   c                 t    | j                  d      }|j                  dd       |j                  dd       y )NTrequiredz--default-servicezXA backend service that will be used for requests for which this URL map has no mappings.)helpz--default-backend-bucketzWA backend bucket that will be used for requests for which this URL map has no mappings.)add_mutually_exclusive_groupadd_argument)parsergroups     r   _Argsr   -   sM    

-
-t
-
<%%    %  r   c                     | j                   j                  d| j                  j                  |j	                         |j
                        fS )z6Returns the request for the existing URL map resource.Get)urlMapproject)apitools_clienturlMapsmessagesComputeUrlMapsGetRequestNamer!   clienturl_map_refs     r   _GetGetRequestr*   ?   sK     $$oo..!!#[-@-@ / 
 r   c                     | j                   j                  d| j                  j                  |j	                         ||j
                        fS )NUpdate)r    urlMapResourcer!   )r"   r#   r$   ComputeUrlMapsUpdateRequestr&   r!   r(   r)   replacements      r   _GetSetRequestr1   J   sM    $$oo11!!#$%% 2 
 r   c                 6   t        j                  |      }|j                  r't        j                  ||||       j                         }nI|r't        j                  ||||       j                         }n |j                  ||       j                         }||_        |S )z#Returns a modified URL map message.)	r   CopyProtoMessagedefault_servicer   ResolveUrlMapDefaultServiceSelfLink!ResolveUrlMapDefaultBackendBucketResolveAsResourcedefaultService)		resourcesargsurl_mapr)   backend_bucket_argbackend_service_arg supports_regional_backend_bucketr0   default_backend_uris	            r   _ModifyrA   V   s     ))'2+	(DD!;	hj  (*LL
"K
  /@@
	
   3+	r   c                     | j                   j                  d| j                  j                  |j	                         |j
                  |j                        fS )zAReturns the request to get an existing regional URL map resource.r   )r    r!   region)r"   regionUrlMapsr$   ComputeRegionUrlMapsGetRequestr&   r!   rC   r'   s     r   _GetRegionalGetRequestrF   u   sU     **oo44!!#%%## 5 
 r   c                     | j                   j                  d| j                  j                  |j	                         ||j
                  |j                        fS )zDReturns the request to update an existing regional URL map resource.r,   )r    r-   r!   rC   )r"   rD   r$   !ComputeRegionUrlMapsUpdateRequestr&   r!   rC   r/   s      r   _GetRegionalSetRequestrI      sX     **oo77!!#$%%##	 8 	
 	r   c           	      P   |j                   }|j                  | |j                  t        j                  j
                        }t        j                  |      rt        ||      }nt        ||      }|j                  |g      }	t        |j                  | |	d   ||||      }
|	d   |
k(  r=t        j                  j                  dj                  |	d   j                                |	S t        j                  |      rt#        |||
      }nt%        |||
      }|j                  |g      S )zAIssues requests necessary to set the default service of URL maps.)default_scoper   z/No change requested; skipping update for [{0}].)r(   r8   r:   compute_scope	ScopeEnumGLOBALr   IsRegionalUrlMapRefrF   r*   MakeRequestsrA   r   statusPrintformatnamerI   r1   )r;   holderr=   r>   url_map_argr?   r(   r)   get_requestold_url_mapmodified_url_mapset_requests               r   _Runr[      s"    ==&--
FM,C,C,J,J . + ''4(=K 5K##[M2+
!n& ^''JJ9@@N	

 ''4(>NOK 6FGK			k]	++r   c                   D    e Zd ZdZdZ e       ZdZdZdZ	e
d        Zd Zy)SetDefaultServicer   FNc                 >   | j                   rt        j                  d      | _        nt        j                  d      | _        t        j                  d      | _        t        j                         | _
        | j                  j                  |       t        |       y )NFr   )!_supports_regional_backend_bucketbackend_bucket_flags.RegionSupportingBackendBucketArgumentForUrlMapBACKEND_BUCKET_ARGBackendBucketArgumentForUrlMapbackend_service_flagsBackendServiceArgumentForUrlMapBACKEND_SERVICE_ARGr
   UrlMapArgumentURL_MAP_ARGAddArgumentr   )clsr   s     r   ArgszSetDefaultService.Args   s    
,,

M
M 
 
=
=u
M 
 	==uM  **,COOO'	&Mr   c                     t        j                  | j                               }t        ||| j                  | j
                  | j                  | j                        S )N)r   ComputeApiHolderReleaseTrackr[   rb   rf   rh   r_   )selfr;   rU   s      r   RunzSetDefaultService.Run   sR    **4+<+<+>?F  .. r   )__name__
__module____qualname____doc__r_   r   detailed_helprb   rf   rh   classmethodrk   rp   r   r   r   r]   r]      s=     C&+#/-+ &	r   r]   c                       e Zd ZdZdZy)SetDefaultServiceAlphar   TN)rq   rr   rs   rt   r_   r   r   r   rx   rx      s     C&*#r   rx   N)F)(rt   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer	   rL   2googlecloudsdk.command_lib.compute.backend_bucketsr
   r`   3googlecloudsdk.command_lib.compute.backend_servicesrd   +googlecloudsdk.command_lib.compute.url_mapsr   googlecloudsdk.corer   r   r   r*   r1   rA   rF   rI   r[   ReleaseTracksrn   BETAGAUniverseCompatibleUpdateCommandr]   ALPHArx   r   r   r   <module>r      s     = &  ' % 7 ( E \ ^ = F #	$	& &+>
( &+/,d D%%**D,=,=,@,@A&** &  B&R D%%++,+. +  -+r   