]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-cm-ansible.git/commitdiff
Intelligently enable repo sets 47/head
authorZack Cerza <zack@redhat.com>
Wed, 3 Jun 2015 18:18:05 +0000 (12:18 -0600)
committerZack Cerza <zack@redhat.com>
Wed, 17 Jun 2015 17:19:11 +0000 (11:19 -0600)
Before this, once we were subscribed, we never care *what* we were
subscribed to.

Signed-off-by: Zack Cerza <zack@redhat.com>
roles/common/tasks/rhel-entitlements.yml

index 745e6ac0e3c2394576ef7b73c71dcfa83a062c2b..88c16765e3bf4430fa84301b9c06e8c2115d60ef 100644 (file)
   changed_when: false
   no_log: true
 
+- name: Set rhsm_registered
+  set_fact:
+    rhsm_registered: "{{ subscription.rc == 0 }}"
+
 - name: Register with subscription-manager.
   command: subscription-manager register
            --activationkey={{ subscription_manager_activationkey }}
            --org={{ subscription_manager_org }}
   no_log: true
-  when: subscription is defined and
-        subscription.rc != 0
+  when: rhsm_registered == "False"
   register: entitled
   until: entitled|success
   retries: 5
   delay: 10
 
-- name: disable all rhsm repos
-  command: subscription-manager repos --disable '*'
+- name: Get list of enabled repos
+  shell: sudo subscription-manager repos --list | grep -B4 'Enabled:.*1' | grep 'Repo ID:' | sed -e 's/Repo ID:\s*\(.*\)/\1/' | sort
+  register: repo_list_cmd
+  # This only needs to happen if we are not newly-subscribed
+  when: rhsm_registered == "True"
+  changed_when: false
+
+- name: Store list of enabled repos
+  set_fact:
+    repo_list: "{{ repo_list_cmd.stdout.split('\n') }}"
+  when: repo_list_cmd is defined
+
+- name: Set replace_repos if rhsm_repos changed
+  set_fact:
+    replace_repos: "{{ repo_list.sort() != rhsm_repos.sort() }}"
+  when: repo_list is defined
+
+- name: Set replace_repos if newly-subscribed
+  set_fact:
+    replace_repos: True
   when: entitled|changed
 
-- name: enable necessary rhsm repos
+- name: Disable all rhsm repos
+  command: subscription-manager repos --disable '*'
+  when: replace_repos == "True"
+  # This produces an absurd amount of useless output
+  no_log: True
+
+- name: Enable necessary rhsm repos
   command: subscription-manager repos --enable {{ item }}
   with_items: rhsm_repos
-  when: entitled|changed and rhsm_repos|length > 0
+  when: replace_repos == "True" and rhsm_repos|length > 0
 
 - name: Remove old apt-mirror repository definition.
   file: