metadata_test.yaml 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. suite: externalInterface metadata test
  2. templates:
  3. - common.yaml
  4. release:
  5. name: release-name
  6. tests:
  7. - it: should generate correct annotations without selector
  8. set:
  9. # Simulate middleware injection
  10. ixExternalInterfacesConfiguration:
  11. - '{"cniVersion": "0.3.1", "name": "ix-release-name-0", "type": "macvlan", "master": "ens3s0", "ipam": {"type": "dhcp"}}'
  12. - '{"cniVersion": "0.3.1", "name": "ix-release-name-0", "type": "macvlan", "master": "ens4s0", "ipam": {"type": "dhcp"}}'
  13. ixExternalInterfacesConfigurationNames:
  14. - ix-release-name-0
  15. - ix-release-name-1
  16. scaleExternalInterface:
  17. - hostInterface: enp0s3
  18. ipam:
  19. type: dhcp
  20. - hostInterface: enp0s4
  21. ipam:
  22. type: dhcp
  23. image: &image
  24. repository: nginx
  25. tag: 1.21.4
  26. pullPolicy: IfNotPresent
  27. workload:
  28. workload-name1:
  29. enabled: true
  30. primary: true
  31. type: Deployment
  32. podSpec:
  33. containers:
  34. container-name1:
  35. enabled: true
  36. primary: true
  37. imageSelector: image
  38. probes: &probes
  39. liveness:
  40. enabled: false
  41. readiness:
  42. enabled: false
  43. startup:
  44. enabled: false
  45. workload-name2:
  46. enabled: true
  47. primary: false
  48. type: Deployment
  49. podSpec:
  50. containers:
  51. container-name1:
  52. enabled: true
  53. primary: true
  54. imageSelector: image
  55. probes: *probes
  56. asserts:
  57. - documentIndex: &deploymentDoc 2
  58. isKind:
  59. of: Deployment
  60. - documentIndex: *deploymentDoc
  61. isAPIVersion:
  62. of: apps/v1
  63. - documentIndex: *deploymentDoc
  64. equal:
  65. path: metadata.name
  66. value: release-name-common-test
  67. - documentIndex: *deploymentDoc
  68. isSubset:
  69. path: spec.template.metadata.annotations
  70. content:
  71. k8s.v1.cni.cncf.io/networks: ix-release-name-0, ix-release-name-1
  72. - documentIndex: &otherDeploymentDoc 3
  73. isKind:
  74. of: Deployment
  75. - documentIndex: *otherDeploymentDoc
  76. isAPIVersion:
  77. of: apps/v1
  78. - documentIndex: *otherDeploymentDoc
  79. equal:
  80. path: metadata.name
  81. value: release-name-common-test-workload-name2
  82. - documentIndex: *otherDeploymentDoc
  83. isNotSubset:
  84. path: spec.template.metadata.annotations
  85. content:
  86. k8s.v1.cni.cncf.io/networks: ix-release-name-0, ix-release-name-1
  87. - it: should generate correct annotations with targetSelectAll
  88. set:
  89. # Simulate middleware injection
  90. ixExternalInterfacesConfiguration:
  91. - '{"cniVersion": "0.3.1", "name": "ix-release-name-0", "type": "macvlan", "master": "ens3s0", "ipam": {"type": "dhcp"}}'
  92. - '{"cniVersion": "0.3.1", "name": "ix-release-name-0", "type": "macvlan", "master": "ens4s0", "ipam": {"type": "dhcp"}}'
  93. ixExternalInterfacesConfigurationNames:
  94. - ix-release-name-0
  95. - ix-release-name-1
  96. scaleExternalInterface:
  97. - hostInterface: enp0s3
  98. ipam:
  99. type: dhcp
  100. targetSelectAll: true
  101. - hostInterface: enp0s4
  102. ipam:
  103. type: dhcp
  104. targetSelectAll: true
  105. image: *image
  106. workload:
  107. workload-name1:
  108. enabled: true
  109. primary: true
  110. type: Deployment
  111. podSpec:
  112. containers:
  113. container-name1:
  114. enabled: true
  115. primary: true
  116. imageSelector: image
  117. probes: *probes
  118. workload-name2:
  119. enabled: true
  120. primary: false
  121. type: Job
  122. podSpec:
  123. restartPolicy: Never
  124. containers:
  125. container-name1:
  126. enabled: true
  127. primary: true
  128. imageSelector: image
  129. probes: *probes
  130. asserts:
  131. - documentIndex: *deploymentDoc
  132. isKind:
  133. of: Deployment
  134. - documentIndex: *deploymentDoc
  135. isAPIVersion:
  136. of: apps/v1
  137. - documentIndex: *deploymentDoc
  138. equal:
  139. path: metadata.name
  140. value: release-name-common-test
  141. - documentIndex: *deploymentDoc
  142. isSubset:
  143. path: spec.template.metadata.annotations
  144. content:
  145. k8s.v1.cni.cncf.io/networks: ix-release-name-0, ix-release-name-1
  146. - documentIndex: &jobDoc 3
  147. isKind:
  148. of: Job
  149. - documentIndex: *jobDoc
  150. isAPIVersion:
  151. of: batch/v1
  152. - documentIndex: *jobDoc
  153. equal:
  154. path: metadata.name
  155. value: release-name-common-test-workload-name2
  156. - documentIndex: *jobDoc
  157. isSubset:
  158. path: spec.template.metadata.annotations
  159. content:
  160. k8s.v1.cni.cncf.io/networks: ix-release-name-0, ix-release-name-1
  161. - it: should generate correct annotations with targetSelector
  162. set:
  163. # Simulate middleware injection
  164. ixExternalInterfacesConfiguration:
  165. - '{"cniVersion": "0.3.1", "name": "ix-release-name-0", "type": "macvlan", "master": "ens3s0", "ipam": {"type": "dhcp"}}'
  166. - '{"cniVersion": "0.3.1", "name": "ix-release-name-0", "type": "macvlan", "master": "ens4s0", "ipam": {"type": "dhcp"}}'
  167. ixExternalInterfacesConfigurationNames:
  168. - ix-release-name-0
  169. - ix-release-name-1
  170. scaleExternalInterface:
  171. - hostInterface: enp0s3
  172. ipam:
  173. type: dhcp
  174. targetSelector:
  175. - workload-name1
  176. - workload-name2
  177. - hostInterface: enp0s4
  178. ipam:
  179. type: dhcp
  180. targetSelector:
  181. - workload-name1
  182. image: *image
  183. workload:
  184. workload-name1:
  185. enabled: true
  186. primary: true
  187. type: Deployment
  188. podSpec:
  189. containers:
  190. container-name1:
  191. enabled: true
  192. primary: true
  193. imageSelector: image
  194. probes: *probes
  195. workload-name2:
  196. enabled: true
  197. primary: false
  198. type: CronJob
  199. schedule: "*/1 * * * *"
  200. podSpec:
  201. restartPolicy: Never
  202. containers:
  203. container-name1:
  204. enabled: true
  205. primary: true
  206. imageSelector: image
  207. probes: *probes
  208. asserts:
  209. - documentIndex: *deploymentDoc
  210. isKind:
  211. of: Deployment
  212. - documentIndex: *deploymentDoc
  213. isAPIVersion:
  214. of: apps/v1
  215. - documentIndex: *deploymentDoc
  216. equal:
  217. path: metadata.name
  218. value: release-name-common-test
  219. - documentIndex: *deploymentDoc
  220. isSubset:
  221. path: spec.template.metadata.annotations
  222. content:
  223. k8s.v1.cni.cncf.io/networks: ix-release-name-0, ix-release-name-1
  224. - documentIndex: &cronJobDoc 3
  225. isKind:
  226. of: CronJob
  227. - documentIndex: *cronJobDoc
  228. isAPIVersion:
  229. of: batch/v1
  230. - documentIndex: *cronJobDoc
  231. equal:
  232. path: metadata.name
  233. value: release-name-common-test-workload-name2
  234. - documentIndex: *cronJobDoc
  235. isSubset:
  236. path: spec.jobTemplate.spec.template.metadata.annotations
  237. content:
  238. k8s.v1.cni.cncf.io/networks: ix-release-name-0