openshift_master_facts_default_predicates_tests.py 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. import pytest
  2. # Predicates ordered according to OpenShift Origin source:
  3. # origin/vendor/k8s.io/kubernetes/plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go
  4. DEFAULT_PREDICATES_1_1 = [
  5. {'name': 'PodFitsHostPorts'},
  6. {'name': 'PodFitsResources'},
  7. {'name': 'NoDiskConflict'},
  8. {'name': 'MatchNodeSelector'},
  9. ]
  10. DEFAULT_PREDICATES_1_2 = [
  11. {'name': 'PodFitsHostPorts'},
  12. {'name': 'PodFitsResources'},
  13. {'name': 'NoDiskConflict'},
  14. {'name': 'NoVolumeZoneConflict'},
  15. {'name': 'MatchNodeSelector'},
  16. {'name': 'MaxEBSVolumeCount'},
  17. {'name': 'MaxGCEPDVolumeCount'}
  18. ]
  19. DEFAULT_PREDICATES_1_3 = [
  20. {'name': 'NoDiskConflict'},
  21. {'name': 'NoVolumeZoneConflict'},
  22. {'name': 'MaxEBSVolumeCount'},
  23. {'name': 'MaxGCEPDVolumeCount'},
  24. {'name': 'GeneralPredicates'},
  25. {'name': 'PodToleratesNodeTaints'},
  26. {'name': 'CheckNodeMemoryPressure'}
  27. ]
  28. DEFAULT_PREDICATES_1_4 = [
  29. {'name': 'NoDiskConflict'},
  30. {'name': 'NoVolumeZoneConflict'},
  31. {'name': 'MaxEBSVolumeCount'},
  32. {'name': 'MaxGCEPDVolumeCount'},
  33. {'name': 'GeneralPredicates'},
  34. {'name': 'PodToleratesNodeTaints'},
  35. {'name': 'CheckNodeMemoryPressure'},
  36. {'name': 'CheckNodeDiskPressure'},
  37. {'name': 'MatchInterPodAffinity'}
  38. ]
  39. DEFAULT_PREDICATES_1_5 = [
  40. {'name': 'NoVolumeZoneConflict'},
  41. {'name': 'MaxEBSVolumeCount'},
  42. {'name': 'MaxGCEPDVolumeCount'},
  43. {'name': 'MatchInterPodAffinity'},
  44. {'name': 'NoDiskConflict'},
  45. {'name': 'GeneralPredicates'},
  46. {'name': 'PodToleratesNodeTaints'},
  47. {'name': 'CheckNodeMemoryPressure'},
  48. {'name': 'CheckNodeDiskPressure'},
  49. ]
  50. DEFAULT_PREDICATES_3_6 = DEFAULT_PREDICATES_1_5
  51. DEFAULT_PREDICATES_3_7 = [
  52. {'name': 'NoVolumeZoneConflict'},
  53. {'name': 'MaxEBSVolumeCount'},
  54. {'name': 'MaxGCEPDVolumeCount'},
  55. {'name': 'MaxAzureDiskVolumeCount'},
  56. {'name': 'MatchInterPodAffinity'},
  57. {'name': 'NoDiskConflict'},
  58. {'name': 'GeneralPredicates'},
  59. {'name': 'PodToleratesNodeTaints'},
  60. {'name': 'CheckNodeMemoryPressure'},
  61. {'name': 'CheckNodeDiskPressure'},
  62. {'name': 'NoVolumeNodeConflict'},
  63. ]
  64. DEFAULT_PREDICATES_3_8 = DEFAULT_PREDICATES_3_7
  65. DEFAULT_PREDICATES_3_9 = [
  66. {'name': 'NoVolumeZoneConflict'},
  67. {'name': 'MaxEBSVolumeCount'},
  68. {'name': 'MaxGCEPDVolumeCount'},
  69. {'name': 'MaxAzureDiskVolumeCount'},
  70. {'name': 'MatchInterPodAffinity'},
  71. {'name': 'NoDiskConflict'},
  72. {'name': 'GeneralPredicates'},
  73. {'name': 'PodToleratesNodeTaints'},
  74. {'name': 'CheckNodeMemoryPressure'},
  75. {'name': 'CheckNodeDiskPressure'},
  76. {'name': 'CheckVolumeBinding'},
  77. ]
  78. DEFAULT_PREDICATES_3_10 = DEFAULT_PREDICATES_3_9
  79. REGION_PREDICATE = {
  80. 'name': 'Region',
  81. 'argument': {
  82. 'serviceAffinity': {
  83. 'labels': ['region']
  84. }
  85. }
  86. }
  87. TEST_VARS = [
  88. ('1.1', 'origin', DEFAULT_PREDICATES_1_1),
  89. ('3.1', 'openshift-enterprise', DEFAULT_PREDICATES_1_1),
  90. ('1.2', 'origin', DEFAULT_PREDICATES_1_2),
  91. ('3.2', 'openshift-enterprise', DEFAULT_PREDICATES_1_2),
  92. ('1.3', 'origin', DEFAULT_PREDICATES_1_3),
  93. ('3.3', 'openshift-enterprise', DEFAULT_PREDICATES_1_3),
  94. ('1.4', 'origin', DEFAULT_PREDICATES_1_4),
  95. ('3.4', 'openshift-enterprise', DEFAULT_PREDICATES_1_4),
  96. ('1.5', 'origin', DEFAULT_PREDICATES_1_5),
  97. ('3.5', 'openshift-enterprise', DEFAULT_PREDICATES_1_5),
  98. ('3.6', 'origin', DEFAULT_PREDICATES_3_6),
  99. ('3.6', 'openshift-enterprise', DEFAULT_PREDICATES_3_6),
  100. ('3.7', 'origin', DEFAULT_PREDICATES_3_7),
  101. ('3.7', 'openshift-enterprise', DEFAULT_PREDICATES_3_7),
  102. ('3.8', 'origin', DEFAULT_PREDICATES_3_8),
  103. ('3.8', 'openshift-enterprise', DEFAULT_PREDICATES_3_8),
  104. ('3.9', 'origin', DEFAULT_PREDICATES_3_9),
  105. ('3.9', 'openshift-enterprise', DEFAULT_PREDICATES_3_9),
  106. ('3.10', 'origin', DEFAULT_PREDICATES_3_10),
  107. ('3.10', 'openshift-enterprise', DEFAULT_PREDICATES_3_10),
  108. ]
  109. def assert_ok(predicates_lookup, default_predicates, regions_enabled, **kwargs):
  110. results = predicates_lookup.run(None, regions_enabled=regions_enabled, **kwargs)
  111. if regions_enabled:
  112. assert results == default_predicates + [REGION_PREDICATE]
  113. else:
  114. assert results == default_predicates
  115. def test_openshift_version(predicates_lookup, openshift_version_fixture, regions_enabled):
  116. facts, default_predicates = openshift_version_fixture
  117. assert_ok(predicates_lookup, default_predicates, variables=facts, regions_enabled=regions_enabled)
  118. @pytest.fixture(params=TEST_VARS)
  119. def openshift_version_fixture(request, facts):
  120. version, deployment_type, default_predicates = request.param
  121. version += '.1'
  122. facts['openshift_version'] = version
  123. facts['openshift']['common']['deployment_type'] = deployment_type
  124. return facts, default_predicates
  125. def test_openshift_release(predicates_lookup, openshift_release_fixture, regions_enabled):
  126. facts, default_predicates = openshift_release_fixture
  127. assert_ok(predicates_lookup, default_predicates, variables=facts, regions_enabled=regions_enabled)
  128. @pytest.fixture(params=TEST_VARS)
  129. def openshift_release_fixture(request, facts, release_mod):
  130. release, deployment_type, default_predicates = request.param
  131. facts['openshift_release'] = release_mod(release)
  132. facts['openshift']['common']['deployment_type'] = deployment_type
  133. return facts, default_predicates
  134. def test_short_version(predicates_lookup, short_version_fixture, regions_enabled):
  135. facts, default_predicates = short_version_fixture
  136. assert_ok(predicates_lookup, default_predicates, variables=facts, regions_enabled=regions_enabled)
  137. @pytest.fixture(params=TEST_VARS)
  138. def short_version_fixture(request, facts):
  139. short_version, deployment_type, default_predicates = request.param
  140. facts['openshift']['common']['short_version'] = short_version
  141. facts['openshift']['common']['deployment_type'] = deployment_type
  142. return facts, default_predicates
  143. def test_short_version_kwarg(predicates_lookup, short_version_kwarg_fixture, regions_enabled):
  144. facts, short_version, default_predicates = short_version_kwarg_fixture
  145. assert_ok(
  146. predicates_lookup, default_predicates, variables=facts,
  147. regions_enabled=regions_enabled, short_version=short_version)
  148. @pytest.fixture(params=TEST_VARS)
  149. def short_version_kwarg_fixture(request, facts):
  150. short_version, deployment_type, default_predicates = request.param
  151. facts['openshift']['common']['deployment_type'] = deployment_type
  152. return facts, short_version, default_predicates
  153. def test_deployment_type_kwarg(predicates_lookup, deployment_type_kwarg_fixture, regions_enabled):
  154. facts, deployment_type, default_predicates = deployment_type_kwarg_fixture
  155. assert_ok(
  156. predicates_lookup, default_predicates, variables=facts,
  157. regions_enabled=regions_enabled, deployment_type=deployment_type)
  158. @pytest.fixture(params=TEST_VARS)
  159. def deployment_type_kwarg_fixture(request, facts):
  160. short_version, deployment_type, default_predicates = request.param
  161. facts['openshift']['common']['short_version'] = short_version
  162. return facts, deployment_type, default_predicates
  163. def test_short_version_deployment_type_kwargs(
  164. predicates_lookup, short_version_deployment_type_kwargs_fixture, regions_enabled):
  165. short_version, deployment_type, default_predicates = short_version_deployment_type_kwargs_fixture
  166. assert_ok(
  167. predicates_lookup, default_predicates, regions_enabled=regions_enabled,
  168. short_version=short_version, deployment_type=deployment_type)
  169. @pytest.fixture(params=TEST_VARS)
  170. def short_version_deployment_type_kwargs_fixture(request):
  171. return request.param