Example #1
0
    def test_list_all_pritunl_user(self, pritunl_settings,
                                   get_pritunl_user_mock, org_id,
                                   org_user_count):
        api._get_pritunl_users = get_pritunl_user_mock()

        response = api.list_pritunl_users(
            **dict_merge(pritunl_settings, {"organization_id": org_id}))

        assert len(response) == org_user_count
Example #2
0
def remove_pritunl_user(module):
    result = {}

    org_name = module.params.get("organization")
    user_name = module.params.get("user_name")

    org_obj_list = []

    org_obj_list = list_pritunl_organizations(**dict_merge(
        get_pritunl_settings(module),
        {
            "filters": {
                "name": org_name
            },
        },
    ))

    if len(org_obj_list) == 0:
        module.fail_json(
            msg="Can not remove user '%s' from a non existing organization '%s'"
            % (user_name, org_name))

    org_id = org_obj_list[0]["id"]

    # Grab existing users from this org
    users = list_pritunl_users(**dict_merge(
        get_pritunl_settings(module),
        {
            "organization_id": org_id,
            "filters": {
                "name": user_name
            },
        },
    ))

    # Check if the pritunl user exists, if not, do nothing
    if len(users) == 0:
        result["changed"] = False
        result["response"] = {}

    # Otherwise remove the org from Pritunl
    else:
        response = delete_pritunl_user(**dict_merge(
            get_pritunl_settings(module),
            {
                "organization_id": org_id,
                "user_id": users[0]["id"],
            },
        ))
        result["changed"] = True
        result["response"] = response

    module.exit_json(**result)
Example #3
0
    def test_list_filtered_pritunl_user(
        self,
        pritunl_settings,
        get_pritunl_user_mock,
        org_id,
        user_filters,
        user_expected,
    ):
        api._get_pritunl_users = get_pritunl_user_mock()

        response = api.list_pritunl_users(
            **dict_merge(pritunl_settings, {
                "organization_id": org_id,
                "filters": user_filters
            }))

        assert len(response) > 0

        for user in response:
            assert user["organization"] == org_id
            assert user["name"] == user_expected
Example #4
0
def get_pritunl_user(module):
    user_name = module.params.get("user_name")
    user_type = module.params.get("user_type")
    org_name = module.params.get("organization")

    org_obj_list = []

    org_obj_list = list_pritunl_organizations(**dict_merge(
        get_pritunl_settings(module), {"filters": {
            "name": org_name
        }}))

    if len(org_obj_list) == 0:
        module.fail_json(
            msg=
            "Can not list users from the organization '%s' which does not exist"
            % org_name)

    org_id = org_obj_list[0]["id"]

    users = list_pritunl_users(**dict_merge(
        get_pritunl_settings(module),
        {
            "organization_id":
            org_id,
            "filters": ({
                "type": user_type
            } if user_name is None else {
                "name": user_name,
                "type": user_type
            }),
        },
    ))

    result = {}
    result["changed"] = False
    result["users"] = users

    module.exit_json(**result)
Example #5
0
def add_or_update_pritunl_user(module):
    result = {}

    org_name = module.params.get("organization")
    user_name = module.params.get("user_name")

    user_params = {
        "name": user_name,
        "email": module.params.get("user_email"),
        "groups": module.params.get("user_groups"),
        "disabled": module.params.get("user_disabled"),
        "gravatar": module.params.get("user_gravatar"),
        "mac_addresses": module.params.get("user_mac_addresses"),
        "type": module.params.get("user_type"),
    }

    org_obj_list = list_pritunl_organizations(**dict_merge(
        get_pritunl_settings(module),
        {"filters": {
            "name": org_name
        }},
    ))

    if len(org_obj_list) == 0:
        module.fail_json(
            msg="Can not add user to organization '%s' which does not exist" %
            org_name)

    org_id = org_obj_list[0]["id"]

    # Grab existing users from this org
    users = list_pritunl_users(**dict_merge(
        get_pritunl_settings(module),
        {
            "organization_id": org_id,
            "filters": {
                "name": user_name
            },
        },
    ))

    # Check if the pritunl user already exists
    if len(users) > 0:
        # Compare remote user params with local user_params and trigger update if needed
        user_params_changed = False
        for key in user_params.keys():
            # When a param is not specified grab existing ones to prevent from changing it with the PUT request
            if user_params[key] is None:
                user_params[key] = users[0][key]

            # 'groups' and 'mac_addresses' are list comparison
            if key == "groups" or key == "mac_addresses":
                if set(users[0][key]) != set(user_params[key]):
                    user_params_changed = True

            # otherwise it is either a boolean or a string
            else:
                if users[0][key] != user_params[key]:
                    user_params_changed = True

        # Trigger a PUT on the API to update the current user if settings have changed
        if user_params_changed:
            response = post_pritunl_user(**dict_merge(
                get_pritunl_settings(module),
                {
                    "organization_id": org_id,
                    "user_id": users[0]["id"],
                    "user_data": user_params,
                },
            ))

            result["changed"] = True
            result["response"] = response
        else:
            result["changed"] = False
            result["response"] = users
    else:
        response = post_pritunl_user(**dict_merge(
            get_pritunl_settings(module),
            {
                "organization_id": org_id,
                "user_data": user_params,
            },
        ))
        result["changed"] = True
        result["response"] = response

    module.exit_json(**result)