
                             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  G d dej"                        Zd Zd Zy)z*`gcloud monitoring uptime create` command.    )absolute_import)division)unicode_literals)uptime)base)flags)resource_args)util)repeated)logc                   0    e Zd ZdZdddZed        Zd Zy)Updatez5Update an existing uptime check or synthetic monitor.aZ            Updates an existing uptime check or synthetic monitor.

          Flags only apply to uptime checks unless noted that they apply to
          synthetic monitors.

          For information about the JSON/YAML format of an uptime check:
          https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.uptimeCheckConfigs
       z~          To update an uptime check or synthetic monitor, run:

          $ {command} CHECK_ID --period=5 --timeout=30
       )DESCRIPTIONEXAMPLESc                     t        j                  d      g}t        j                  | |       t        j                  | d       y )Nzto be updated.T)update)r	   CreateUptimeResourceArgAddResourceArgsr   AddUptimeSettingsFlags)parser	resourcess     'lib/surface/monitoring/uptime/update.pyArgszUpdate.Args1   s6    667GHII!!&)4	  5    c                 .   t        j                         }|j                  j                  j	                         }|j                  |      }t        j                  |d|j                  j                  j                  |j                        }d }t        |j                        t        j                  |dfd      }g g }g g }	|j                   t        j                  |d|j                  j"                  j$                  |j                   j&                        }|j                   j(                  D ]E  }
|
j*                  j-                  |
j*                         +j-                  |
j.                         G t        j                  |dfd      }t1              t        j                  |dfd      }	t        j2                  ||j                  |||||	|d	
	       |j5                  ||d       }t7        j8                  |j:                  d       |S )Nuser_labelsregionsc                       S N )r   s   r   <lambda>zUpdate.Run.<locals>.<lambda>E   s    wr   headersstatus_codesc                       S r   r    )r#   s   r   r!   zUpdate.Run.<locals>.<lambda>W   s    r   status_classesc                       S r   r    )r%   s   r   r!   zUpdate.Run.<locals>.<lambda>[   s    .r   T)r   r   r"   r%   r#   r   )fieldsr   )r   UptimeClientCONCEPTScheck_idParseGetr
   ProcessUpdateLabelsmessagesUptimeCheckConfigUserLabelsValue
userLabelsParseSelectedRegionsselectedRegionsr   ParsePrimitiveArgs	httpCheck	HttpCheckHeadersValuer"   acceptedResponseStatusCodesstatusClassappendstatusValueParseStatusClassesModifyUptimeCheckr   r   UpdatedResourcename)selfargsclientuptime_check_refuptime_checknew_user_labelsnew_headersnew_regionsnew_status_codesnew_status_classesstatusresultr   r%   r#   s               @@@r   Runz
Update.Run7   s     "F}}--335::./L..))99	O K"<#?#?@G--dIOKLN),,


//
#
#
0
0

 
 
(
(	k !**FF&)


 2 2
3


f00
1	 G
 "44
 4 *.9n#66
 "8 	#)%
 ]]+\$]GFX.Mr   N)__name__
__module____qualname____doc__detailed_helpstaticmethodr   rL   r    r   r   r   r      s/    =-  6 6
5r   r   c                    t        j                         }|j                  }|j                  j                  j
                  d|j                  j                  j                  d|j                  j                  j                  d|j                  j                  j                  d|j                  j                  j                  d|j                  j                  j                  di}| D cg c]  }|j                  |       c}S c c}w )zGConvert previously selected regions from enum to flag for update logic.z
usa-oregonzusa-iowazusa-virginiaeuropezsouth-americazasia-pacific)r   r(   r.   r/   'SelectedRegionsValueListEntryValuesEnum
USA_OREGONUSA_IOWAUSA_VIRGINIAEUROPESOUTH_AMERICAASIA_PACIFICget)selected_regionsrB   r.   region_mappingregions        r   r2   r2   o   s     &__(  HHSS
  HHQQ
  HHUU
  HHOO
  HHVV
  HHUU
#.( 4D	D3C.

V
$3C	DD	D   'Dc                    t        j                         }|j                  }|j                  j                  j
                  d|j                  j                  j                  d|j                  j                  j                  d|j                  j                  j                  d|j                  j                  j                  d|j                  j                  j                  di}| D cg c]  }|j                  |       c}S c c}w )zEConvert previously status classes from enum to flag for update logic.1xx2xx3xx4xx5xxany)r   r(   r.   ResponseStatusCodeStatusClassValueValuesEnumSTATUS_CLASS_1XXSTATUS_CLASS_2XXSTATUS_CLASS_3XXSTATUS_CLASS_4XXSTATUS_CLASS_5XXSTATUS_CLASS_ANYr\   )r%   rB   r.   status_mappingstatus_classs        r   r<   r<      s     &__(!!<<MM
!!<<MM
!!<<MM
!!<<MM
!!<<MM
!!<<MM
#.( @N	N~|.

\
*~	NN	Nr`   N)rP   
__future__r   r   r   !googlecloudsdk.api_lib.monitoringr   googlecloudsdk.callioper   %googlecloudsdk.command_lib.monitoringr   r	   r
   $googlecloudsdk.command_lib.util.argsr   googlecloudsdk.corer   UpdateCommandr   r2   r<   r    r   r   <module>ry      sI    1 &  ' 4 ( 7 ? 6 9 #NT NbE6Or   