upgrade_scheduler.yml 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. ---
  2. # Upgrade predicates
  3. - vars:
  4. prev_predicates: "{{ lookup('openshift_master_facts_default_predicates', short_version=openshift_upgrade_min, deployment_type=openshift_deployment_type) }}"
  5. prev_predicates_no_region: "{{ lookup('openshift_master_facts_default_predicates', short_version=openshift_upgrade_min, deployment_type=openshift_deployment_type, regions_enabled=False) }}"
  6. default_predicates_no_region: "{{ lookup('openshift_master_facts_default_predicates', regions_enabled=False) }}"
  7. # older_predicates are the set of predicates that have previously been
  8. # hard-coded into openshift_facts
  9. older_predicates:
  10. - - name: MatchNodeSelector
  11. - name: PodFitsResources
  12. - name: PodFitsPorts
  13. - name: NoDiskConflict
  14. - name: NoVolumeZoneConflict
  15. - name: MaxEBSVolumeCount
  16. - name: MaxGCEPDVolumeCount
  17. - name: Region
  18. argument:
  19. serviceAffinity:
  20. labels:
  21. - region
  22. - - name: MatchNodeSelector
  23. - name: PodFitsResources
  24. - name: PodFitsPorts
  25. - name: NoDiskConflict
  26. - name: NoVolumeZoneConflict
  27. - name: Region
  28. argument:
  29. serviceAffinity:
  30. labels:
  31. - region
  32. - - name: MatchNodeSelector
  33. - name: PodFitsResources
  34. - name: PodFitsPorts
  35. - name: NoDiskConflict
  36. - name: Region
  37. argument:
  38. serviceAffinity:
  39. labels:
  40. - region
  41. # older_predicates_no_region are the set of predicates that have previously
  42. # been hard-coded into openshift_facts, with the Region predicate removed
  43. older_predicates_no_region:
  44. - - name: MatchNodeSelector
  45. - name: PodFitsResources
  46. - name: PodFitsPorts
  47. - name: NoDiskConflict
  48. - name: NoVolumeZoneConflict
  49. - name: MaxEBSVolumeCount
  50. - name: MaxGCEPDVolumeCount
  51. - - name: MatchNodeSelector
  52. - name: PodFitsResources
  53. - name: PodFitsPorts
  54. - name: NoDiskConflict
  55. - name: NoVolumeZoneConflict
  56. - - name: MatchNodeSelector
  57. - name: PodFitsResources
  58. - name: PodFitsPorts
  59. - name: NoDiskConflict
  60. block:
  61. # Handle case where openshift_master_predicates is defined
  62. - block:
  63. - debug:
  64. msg: "WARNING: openshift_master_scheduler_predicates is set to defaults from an earlier release of OpenShift current defaults are: {{ openshift_master_scheduler_default_predicates }}"
  65. when: openshift_master_scheduler_predicates in older_predicates + older_predicates_no_region + [prev_predicates] + [prev_predicates_no_region]
  66. - debug:
  67. msg: "WARNING: openshift_master_scheduler_predicates does not match current defaults of: {{ openshift_master_scheduler_default_predicates }}"
  68. when: openshift_master_scheduler_predicates != openshift_master_scheduler_default_predicates
  69. when: openshift_master_scheduler_predicates | default(none) is not none
  70. # Handle cases where openshift_master_predicates is not defined
  71. - block:
  72. - debug:
  73. msg: "WARNING: existing scheduler config does not match previous known defaults automated upgrade of scheduler config is disabled.\nexisting scheduler predicates: {{ openshift_master_scheduler_current_predicates }}\ncurrent scheduler default predicates are: {{ openshift_master_scheduler_default_predicates }}"
  74. when:
  75. - openshift_master_scheduler_current_predicates != openshift_master_scheduler_default_predicates
  76. - openshift_master_scheduler_current_predicates not in older_predicates + [prev_predicates]
  77. - set_fact:
  78. openshift_upgrade_scheduler_predicates: "{{ openshift_master_scheduler_default_predicates }}"
  79. when:
  80. - openshift_master_scheduler_current_predicates != openshift_master_scheduler_default_predicates
  81. - openshift_master_scheduler_current_predicates in older_predicates + [prev_predicates]
  82. - set_fact:
  83. openshift_upgrade_scheduler_predicates: "{{ default_predicates_no_region }}"
  84. when:
  85. - openshift_master_scheduler_current_predicates != default_predicates_no_region
  86. - openshift_master_scheduler_current_predicates in older_predicates_no_region + [prev_predicates_no_region]
  87. when: openshift_master_scheduler_predicates | default(none) is none
  88. # Upgrade priorities
  89. - vars:
  90. prev_priorities: "{{ lookup('openshift_master_facts_default_priorities', short_version=openshift_upgrade_min, deployment_type=openshift_deployment_type) }}"
  91. prev_priorities_no_zone: "{{ lookup('openshift_master_facts_default_priorities', short_version=openshift_upgrade_min, deployment_type=openshift_deployment_type, zones_enabled=False) }}"
  92. default_priorities_no_zone: "{{ lookup('openshift_master_facts_default_priorities', zones_enabled=False) }}"
  93. # older_priorities are the set of priorities that have previously been
  94. # hard-coded into openshift_facts
  95. older_priorities:
  96. - - name: LeastRequestedPriority
  97. weight: 1
  98. - name: SelectorSpreadPriority
  99. weight: 1
  100. - name: Zone
  101. weight: 2
  102. argument:
  103. serviceAntiAffinity:
  104. label: zone
  105. # older_priorities_no_region are the set of priorities that have previously
  106. # been hard-coded into openshift_facts, with the Zone priority removed
  107. older_priorities_no_zone:
  108. - - name: LeastRequestedPriority
  109. weight: 1
  110. - name: SelectorSpreadPriority
  111. weight: 1
  112. block:
  113. # Handle case where openshift_master_priorities is defined
  114. - block:
  115. - debug:
  116. msg: "WARNING: openshift_master_scheduler_priorities is set to defaults from an earlier release of OpenShift current defaults are: {{ openshift_master_scheduler_default_priorities }}"
  117. when: openshift_master_scheduler_priorities in older_priorities + older_priorities_no_zone + [prev_priorities] + [prev_priorities_no_zone]
  118. - debug:
  119. msg: "WARNING: openshift_master_scheduler_priorities does not match current defaults of: {{ openshift_master_scheduler_default_priorities }}"
  120. when: openshift_master_scheduler_priorities != openshift_master_scheduler_default_priorities
  121. when: openshift_master_scheduler_priorities | default(none) is not none
  122. # Handle cases where openshift_master_priorities is not defined
  123. - block:
  124. - debug:
  125. msg: "WARNING: existing scheduler config does not match previous known defaults automated upgrade of scheduler config is disabled.\nexisting scheduler priorities: {{ openshift_master_scheduler_current_priorities }}\ncurrent scheduler default priorities are: {{ openshift_master_scheduler_default_priorities }}"
  126. when:
  127. - openshift_master_scheduler_current_priorities != openshift_master_scheduler_default_priorities
  128. - openshift_master_scheduler_current_priorities not in older_priorities + [prev_priorities]
  129. - set_fact:
  130. openshift_upgrade_scheduler_priorities: "{{ openshift_master_scheduler_default_priorities }}"
  131. when:
  132. - openshift_master_scheduler_current_priorities != openshift_master_scheduler_default_priorities
  133. - openshift_master_scheduler_current_priorities in older_priorities + [prev_priorities]
  134. - set_fact:
  135. openshift_upgrade_scheduler_priorities: "{{ default_priorities_no_zone }}"
  136. when:
  137. - openshift_master_scheduler_current_priorities != default_priorities_no_zone
  138. - openshift_master_scheduler_current_priorities in older_priorities_no_zone + [prev_priorities_no_zone]
  139. when: openshift_master_scheduler_priorities | default(none) is none
  140. # Update scheduler
  141. - vars:
  142. scheduler_config:
  143. kind: Policy
  144. apiVersion: v1
  145. predicates: "{{ openshift_upgrade_scheduler_predicates
  146. | default(openshift_master_scheduler_current_predicates) }}"
  147. priorities: "{{ openshift_upgrade_scheduler_priorities
  148. | default(openshift_master_scheduler_current_priorities) }}"
  149. block:
  150. - name: Update scheduler config
  151. copy:
  152. content: "{{ scheduler_config | to_nice_json }}"
  153. dest: "{{ openshift_master_scheduler_conf }}"
  154. backup: true
  155. when: >
  156. openshift_upgrade_scheduler_predicates is defined or
  157. openshift_upgrade_scheduler_priorities is defined