%PDF- %PDF-
Direktori : /lib/python2.7/site-packages/salt/states/ |
Current File : //lib/python2.7/site-packages/salt/states/pagerduty_schedule.pyo |
� ���^c @@ s\ d Z d d l m Z m Z m Z d � Z d d d d � Z d d d d � Z d � Z d S( ut Manage PagerDuty schedules. Example: .. code-block:: yaml ensure test schedule: pagerduty_schedule.present: - name: 'bruce test schedule level1' - schedule: name: 'bruce test schedule level1' time_zone: 'Pacific Time (US & Canada)' schedule_layers: - name: 'Schedule Layer 1' start: '2015-01-01T00:00:00' users: - user: 'id': 'Bruce TestUser1' member_order: 1 - user: 'id': 'Bruce TestUser2' member_order: 2 - user: 'id': 'bruce+test3@lyft.com' member_order: 3 - user: 'id': 'bruce+test4@lyft.com' member_order: 4 rotation_virtual_start: '2015-01-01T00:00:00' priority: 1 rotation_turn_length_seconds: 604800 i ( t absolute_importt print_functiont unicode_literalsc C@ s d t k r d St S( uD Only load if the pygerduty module is available in __salt__ u pagerduty_util.get_resourceu pagerduty_schedule( t __salt__t False( ( ( sB /usr/lib/python2.7/site-packages/salt/states/pagerduty_schedule.pyt __virtual__) s u pagerdutyc K@ s� | d | d d <x� | d d D]� } x� | d D]u } t d d | d d d d d g d | d | d | �} | d k r� t d j | � � � n | d | d d <q2 Wq! Wt d d d d g t | | | | � } | S( u4 Ensure that a pagerduty schedule exists. This method accepts as args everything defined in https://developer.pagerduty.com/documentation/rest/schedules/create. This means that most arguments are in a dict called "schedule." User id's can be pagerduty id, or name, or email address. u nameu scheduleu schedule_layersu usersu pagerduty_util.get_resourceu useru idu emailt profilet subdomaint api_keyu unknown user: {0}u pagerduty_util.resource_presentu schedulesN( R t Nonet Exceptiont formatt _diff( R R R t kwargst schedule_layert usert ut r( ( sB /usr/lib/python2.7/site-packages/salt/states/pagerduty_schedule.pyt present0 s( c K@ s) t d d d d g | | | | � } | S( u| Ensure that a pagerduty schedule does not exist. Name can be pagerduty schedule id or pagerduty schedule name. u pagerduty_util.resource_absentu schedulesu nameu id( R ( R R R R R ( ( sB /usr/lib/python2.7/site-packages/salt/states/pagerduty_schedule.pyt absentP s c C@ s� | d d | d <d } xe | d j � D]S \ } } | d k rG q) n | | d | k r) d j | | | d | � } Pq) q) W| s�x#| d d D]} d } x: | d d D]* } t } | d | d k r� t } Pq� q� W| s� d j | d � } Pn | d | d <xr | j � D]d \ } } | d k r4qn | d k rFqn | | | k rd j | d | | | | � } PqqW| r�Pn t | d � t | d � k r�d j | d t | d � t | d � � } Pn x� | d D]� } t } d } x4 | d D]( } | d | d d k rt } PqqW| sQd j | d | d � } Pn | d d | d d k r�d j | d | d | d d | d d � } Pq�q�Wq� Wn | r�| Si Sd S( u� helper method to compare salt state info with the PagerDuty API json structure, and determine if we need to update. returns the dict to pass to the PD API to perform the update, or empty dict if no update. u scheduleu idu schedule_layersu {0} {1} {2}u nameu layer {0} missingu usersu startu layer {0} key {1} {2} != {3}u! num users in layer {0} {1} != {2}u member_orderi u&