Infra.controller_configuration.object_diff not adding missing job template

I have been using the config as code to setup my orgs instance of awx and manage all the objects in a git repo. Awesome project and i thank all the contributors for all the options. Its exciting to see releases with meaningful features. I’m not sure if i have been around too many paint fumes, but i’m stuck on some basic functionality of the drop diff.

Summary of my problem is that i created an environment with the basic playbook of

- role: infra.controller_configuration.filetree_read
- role: infra.controller_configuration.dispatch

Everything created fine and i have a config the way i like it for testing. After this environment exists and is functional, i added the below roles to playbook

        - role: infra.controller_configuration.object_diff
            controller_api_plugin: awx.awx.controller_api
            drop_user_external_accounts: false
            protect_not_empty_orgs: true
              - {name: organizations, var: controller_organizations, tags: organizations}
              - {name: projects, var: controller_projects, tags: projects}
              - {name: credential_types, var: controller_credential_types, tags: credential_types}
              - {name: inventories, var: controller_inventories, tags: inventories}
              - {name: inventory_sources, var: controller_inventory_sources, tags: inventory_sources}
              - {name: job_templates, var: controller_templates, tags: job_templates}
              - {name: workflow_job_templates, var: controller_workflows, tags: workflow_job_templates}
              # - {name: user_accounts, var: controller_user_accounts, tags: users}
              # - {name: groups, var: controller_groups, tags: groups}
              # - {name: hosts, var: controller_hosts, tags: hosts}
              - {name: credentials, var: controller_credentials, tags: credentials}

Below are the logs from this. The ansible fact that is getting set to be used by the dispatch role is showing no objects to change. If i comment out the job template diff task, dispatch picks up all my job template yml files and adds the missing item. I have bolded below the template (ApplyFileTreeCommon) that it sees in the diff task, but it doesn’t recognize it in compare. I have tried to add “state: “present”” to the yml file to see if it made any difference. Strangely, if i add an additional object to AWX through the API, object_diff detects it and adds it for removal on the dispatch task.

TASK [infra.controller_configuration.object_diff : Find the difference of Job Templates between what is on the Controller versus CasC on SCM] ***
compare_list_reduced: [{'name': 'AWXDevAddCreds', 'organization': 'contoso'}, {'name': 'AWXDevCreate_Update', 'organization': 'contoso'}, {'name': 'AWXFileTreeExportArtifactory', 'organization': 'contoso'}, {'name': 'AWXPRDKCCreate_Update', 'organization': 'contoso'}, {'name': 'AWXPRDSTLCreate_Update', 'organization': 'contoso'}, {'name': 'awxprdstlAddCreds', 'organization': 'contoso'}, {'name': 'ApplyFileTreeCommon', 'organization': 'contoso'}]
api_list_reduced: [{'name': 'AWXDevAddCreds', 'organization': 'contoso'}, {'name': 'AWXDevCreate_Update', 'organization': 'contoso'}, {'name': 'AWXFileTreeExportArtifactory', 'organization': 'contoso'}, {'name': 'AWXPRDKCCreate_Update', 'organization': 'contoso'}, {'name': 'awxprdstlAddCreds', 'organization': 'contoso'}, {'name': 'AWXPRDSTLCreate_Update', 'organization': 'contoso'}]
ok: [] => {"ansible_facts": {"__job_templates_difference": []}, "changed": false}

TASK [infra.controller_configuration.object_diff : Set job_template's list to be configured] ***
ok: [] => {"ansible_facts": {"controller_templates": []}, "changed": false}

I appreciate any help that someone has to offer.

You can probably ignore this massive brain fart. I assumed that this is drop extra and add missing, but i see that object_diff is just listing extra objects found on the API.

So now my question is what is best way to do both? Two playbooks in a workflow
Apply CAC

- role: infra.controller_configuration.filetree_read
- role: infra.controller_configuration.dispatch


- role: infra.controller_configuration.filetree_read
- role: infra.controller_configuration.object_diff
- role: infra.controller_configuration.dispatch

Any downsides in calling the roles multiple times per playbook like one big one? i assume the ansible facts from the top filetree_read will be overwritten by the object_diff task anyway.

- role: infra.controller_configuration.filetree_read
- role: infra.controller_configuration.dispatch
- role: infra.controller_configuration.filetree_read
- role: infra.controller_configuration.object_diff
- role: infra.controller_configuration.dispatch