# -*- coding: utf-8 -*-
"""
Manage PagerDuty users.

Example:

    .. code-block:: yaml

    ensure bruce test user 1:
        pagerduty.user_present:
            - name: 'Bruce TestUser1'
            - email: bruce+test1@lyft.com
            - requester_id: P1GV5NT

"""

# Import Python libs
from __future__ import absolute_import, print_function, unicode_literals


def __virtual__():
    """
    Only load if the pygerduty module is available in __salt__
    """
    if "pagerduty_util.get_resource" in __salt__:
        return "pagerduty_user"
    return (False, "pagerduty_util module could not be loaded")


def present(profile="pagerduty", subdomain=None, api_key=None, **kwargs):
    """
    Ensure pagerduty user exists.
    Arguments match those supported by
    https://developer.pagerduty.com/documentation/rest/users/create.
    """
    return __salt__["pagerduty_util.resource_present"](
        "users", ["email", "name", "id"], None, profile, subdomain, api_key, **kwargs
    )


def absent(profile="pagerduty", subdomain=None, api_key=None, **kwargs):
    """
    Ensure pagerduty user does not exist.
    Name can be pagerduty id, email address, or user name.
    """
    return __salt__["pagerduty_util.resource_absent"](
        "users", ["email", "name", "id"], profile, subdomain, api_key, **kwargs
    )
