infra-docs-fpo/modules/ocp4/pages/sop_fas2discourse_operator_debugging.adoc
David Kirwan 244bf310ae fas2discourse: SOPs
fas2discourse: Update index to link to the fas2discourse operator SOPs
fas2discourse: Add SOP for interacting with the operator
fas2discourse: add SOP for debugging issues with operator

Signed-off-by: David Kirwan <dkirwan@redhat.com>
2023-04-27 06:33:55 +01:00

37 lines
2 KiB
Text

= Debugging issues with the fas2discourse Operator
== Resources
- [1] Code: https://pagure.io/cpe/fas2discourse/
- [2] Playbook: https://pagure.io/fedora-infra/ansible/blob/main/f/playbooks/manual/fas2discourse.yml
- [3] Role: https://pagure.io/fedora-infra/ansible/blob/main/f/roles/fas2discourse
== Workload
The operator runs in the namespace: `fas2discourse-operator` on both the staging and production openshift clusters.
There is a single pod running. First port of call should be to examine the logs of this pod.
By default, the verbocity of logs are set low. To increase them to debug level add the following annotation to the `Fas2DiscourseConfig` object in the `fas2discourse-operator` namespace:
----
apiVersion: fas2discourse.apps.fedoraproject.org/v1alpha1
kind: Fas2discourseConfig
metadata:
annotations:
ansible.sdk.operatorframework.io/verbosity: '5'
----
This will enable full output from logging, which may aid in debugging.
The following task list is contained inside the operator. This list is repeated in the reconcile loop which is currently set to run every `20 minutes`.
----
# tasks file for Fas2discourseConfig
- include_tasks: retrieve_openshift_secrets.yml # Retrieves the secrets such as discourse api key etc and populates variable which feeds into the later tasks
- include_tasks: kerberos_auth.yml # Authenticate to fasjson via keytab
- include_tasks: retrieve_discourse_groups.yml # Contact Discourse API, retrieve the list of groups, and retrieve the list of users in each group
- include_tasks: retrieve_ipa_groups.yml # Contact fasjson, using the Discourse group list, retrieve the membership of each group in IPA
- include_tasks: sync_group_membership.yml # Using set functions, discover who is not in Discourse group but is in IPA group: add them. Who is in Discourse group but not in IPA group: remove them.
----
The results of each call in the workflow is outputted in the log. If any task fails the entire loop stops and retries.