#7 basic implementation of fas2discourse_retrieve_discourse_groups library
Merged a year ago by lenkaseg. Opened a year ago by dkirwan.
cpe/ dkirwan/fas2discourse discourse_groups  into  main

@@ -4,3 +4,5 @@ 

  fas2discourse_principal: "fas2discourse/fas2discourse.hostname@FEDORAPROJECT.ORG"

  f2d_namespace: "fas2discourse-operator"

  f2d_secret: "fas2discourse-operator-k8s-secret"

+ discourse_host: "OVERRIDEME"

+ discourse_api: "OVERRIDEME"

roles/fas2discourseconfig/library/fas2discourse_retrieve_discourse_groups.py roles/fas2discourseconfig/library/fas2discourse_retrieve_discourse_data.py
file renamed
+20 -27
@@ -14,7 +14,7 @@ 

  

  DOCUMENTATION = r"""

  ---

- module: fas2discourse_retrieve_discourse_data

+ module: fas2discourse_retrieve_discourse_groups

  

  short_description: Retrieve discourse groups.

  
@@ -36,22 +36,21 @@ 

  

  EXAMPLES = r"""

  - name: Retrieve discourse groups.

-   fas2discourse_retrieve_discourse_data:

+   fas2discourse_retrieve_discourse_groups:

+     discourse_api: "{{ discourse_api }}"

+     discourse_host: "{{ discourse_host }}"

    register: fas2discourse_discourse_response

  """

  

  RETURN = r"""

  # These are examples of possible return values, and in general should use other names for return

  # values.

+ 

  discourse_groups:

-     description: All the discourse groups.

-     type: str

+     description: The Discourse groups.

+     type: dict

      returned: always

-     sample:

- {

-         "groups":[{"group": "design"},

-                   {"group": "editors"}]

- }

+     sample: '{"groups":[{"id":51,"automatic":false,"name":"community-blog","user_count":2,"mentionable_level":3,"messageable_level":0,"visibility_level":0,"primary_group":false,"title":"","grant_trust_level":1,"flair_url":"https://redhat.discourse-cdn.com/fedoraproject/original/2X/2/28d0975bef06287ee5f04d0a9e576de172103298.png","flair_bg_color":"","flair_color":"","bio_cooked":null,"bio_excerpt":null,"public_admission":false,"public_exit":false,"allow_membership_requests":false,"full_name":"Community Blog Editors","default_notification_level":3,"membership_request_template":null,"members_visibility_level":0,"can_see_members":true,"publish_read_state":false}]}'

  

  msg:

      description: The output message that the module generates.
@@ -61,23 +60,19 @@ 

  """

  

  

- # Helper function to create the http requests

- def get_http_client():

-     session = requests.Session()

-     return session

- 

- 

  # Helper function to retrieve fasjson groups

- def get_groups(http_client):

-     response = http_client.get("%sgroups.json" % ("https://discussion.fedoraproject.org/"))

-     if response.ok:

-         return response.json()

+ def get_groups(discourse_host, discourse_api):

+     url = "%s/groups.json" % (discourse_host)

+     headers = {"Api-Key": "%s" % (discourse_api), "Api-Username" : "system"}

+     response = requests.get(url, headers=headers)

+     return response

  

  

  def run_module():

      # define available arguments/parameters a user can pass to the module

      module_args = dict(

-         discourse_groups=dict(type="str", required=True),

+         discourse_api=dict(type="str", required=True),

+         discourse_host=dict(type="str", required=True),

      )

  

      # seed the result dict in the object
@@ -102,17 +97,15 @@ 

      # manipulate or modify the state as needed (this is going to be the

      # part where your module will do what it needs to do)

      discourse_api = module.params["discourse_api"]

+     discourse_host = module.params["discourse_host"]

  

      try:

-         http_client = get_http_client()

-         groups_response = get_groups(http_client)

- 

          discourse_groups = []

-         for v in groups_response["groups"]:

-             dicourse_groups.append(v["name"])

- 

+         resp = get_groups(discourse_host, discourse_api)

+         if resp.ok:

+             discourse_groups = json.dumps(resp.json())

  

-         result["discourse_groups"] = json.dumps(discourse_groups)

+         result["discourse_groups"] = discourse_groups

          result["changed"] = True

          result["msg"] = "Successfully retrieved groups from Discourse."

      except Exception:

@@ -4,4 +4,4 @@ 

  - include_tasks: retrieve_discourse_groups.yml

  - include_tasks: kerberos_auth.yml

  - include_tasks: retrieve_ipa_groups.yml

- - include_tasks: sync_group_membership.yml 

+ - include_tasks: sync_group_membership.yml

@@ -2,17 +2,14 @@ 

  # tasks file for fas2discourse

  

  - name: Retrieve discourse groups

-   fas2discourse_retrieve_discourse_data:

-   register: discourse_response

+   fas2discourse_retrieve_discourse_groups:

+     discourse_host: "{{ discourse_host }}"

+     discourse_api: "{{ discourse_api }}"

+   register: fas2discourse_retrieve_discourse_groups_response

  

- - name: Set fact

-   set_fact:

-     fas2discourse_discourse_response: "{{ discourse_response }}"

  

  - name: Prints the groups

    ansible.builtin.debug:

      msg:

-     - "Groups found: {{ fas2discourse_discourse_response['matched_groups'] }}"

+     - "{{ fas2discourse_retrieve_discourse_groups_response['discourse_groups'] }}"

  

- - name: Write groups to json file

-   copy: content="{{ fas2discourse_discourse_response['matched_groups'] }}" dest=/tmp/groups.json