# flake8: noqa
# pylint: skip-file

DOCUMENTATION = '''
---
module: oc_user
short_description: Create, modify, and idempotently manage openshift users.
description:
  - Modify openshift users programmatically.
options:
  state:
    description:
    - State controls the action that will be taken with resource
    - 'present' will create or update a user to the desired state
    - 'absent' will ensure user is removed
    - 'list' will read and return a list of users
    default: present
    choices: ["present", "absent", "list"]
    aliases: []
  kubeconfig:
    description:
    - The path for the kubeconfig file to use for authentication
    required: false
    default: /etc/origin/master/admin.kubeconfig
    aliases: []
  debug:
    description:
    - Turn on debug output.
    required: false
    default: False
    aliases: []
  username:
    description:
    - Short username to query/modify.
    required: false
    default: None
    aliases: []
  full_name:
    description:
    - String with the full name/description of the user.
    required: false
    default: None
    aliases: []
  groups:
    description:
    - List of groups the user should be a member of. This does not add/update the legacy 'groups' field in the OpenShift user object, but makes user entries into the appropriate OpenShift group object for the given user.
    required: false
    default: []
    aliases: []
author:
- "Joel Diaz <jdiaz@redhat.com>"
extends_documentation_fragment: []
'''

EXAMPLES = '''
- name: Ensure user exists
  oc_user:
    state: present
    username: johndoe
    full_name "John Doe"
    groups:
    - dedicated-admins
  register: user_johndoe

user_johndoe variable will have contents like:
ok: [ded-int-aws-master-61034] => {
    "user_johndoe": {
        "changed": true,
        "results": {
            "cmd": "oc -n default get users johndoe -o json",
            "results": [
                {
                    "apiVersion": "v1",
                    "fullName": "John DOe",
                    "groups": null,
                    "identities": null,
                    "kind": "User",
                    "metadata": {
                        "creationTimestamp": "2017-02-28T15:09:21Z",
                        "name": "johndoe",
                        "resourceVersion": "848781",
                        "selfLink": "/oapi/v1/users/johndoe",
                        "uid": "e23d3300-fdc7-11e6-9e3e-12822d6b7656"
                    }
                }
            ],
            "returncode": 0
        },
        "state": "present"
    }
}
'groups' is empty because this field is the OpenShift user object's 'group' field.

- name: Ensure user does not exist
  oc_user:
    state: absent
    username: johndoe

- name: List user's info
  oc_user:
    state: list
    username: johndoe
  register: user_johndoe

user_johndoe will have contents similar to:
ok: [ded-int-aws-master-61034] => {
    "user_johndoe": {
        "changed": false,
        "results": [
            {
                "apiVersion": "v1",
                "fullName": "John Doe",
                "groups": null,
                "identities": null,
                "kind": "User",
                "metadata": {
                    "creationTimestamp": "2017-02-28T15:04:44Z",
                    "name": "johndoe",
                    "resourceVersion": "848280",
                    "selfLink": "/oapi/v1/users/johndoe",
                    "uid": "3d479ad2-fdc7-11e6-9e3e-12822d6b7656"
                }
            }
        ],
        "state": "list"
    }
}
'''
