metadata_test.yaml 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  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. containers:
  124. container-name1:
  125. enabled: true
  126. primary: true
  127. imageSelector: image
  128. probes: *probes
  129. asserts:
  130. - documentIndex: *deploymentDoc
  131. isKind:
  132. of: Deployment
  133. - documentIndex: *deploymentDoc
  134. isAPIVersion:
  135. of: apps/v1
  136. - documentIndex: *deploymentDoc
  137. equal:
  138. path: metadata.name
  139. value: release-name-common-test
  140. - documentIndex: *deploymentDoc
  141. isSubset:
  142. path: spec.template.metadata.annotations
  143. content:
  144. k8s.v1.cni.cncf.io/networks: ix-release-name-0, ix-release-name-1
  145. - documentIndex: &jobDoc 3
  146. isKind:
  147. of: Job
  148. - documentIndex: *jobDoc
  149. isAPIVersion:
  150. of: batch/v1
  151. - documentIndex: *jobDoc
  152. equal:
  153. path: metadata.name
  154. value: release-name-common-test-workload-name2
  155. - documentIndex: *jobDoc
  156. isSubset:
  157. path: spec.template.metadata.annotations
  158. content:
  159. k8s.v1.cni.cncf.io/networks: ix-release-name-0, ix-release-name-1
  160. - it: should generate correct annotations with targetSelector
  161. set:
  162. # Simulate middleware injection
  163. ixExternalInterfacesConfiguration:
  164. - '{"cniVersion": "0.3.1", "name": "ix-release-name-0", "type": "macvlan", "master": "ens3s0", "ipam": {"type": "dhcp"}}'
  165. - '{"cniVersion": "0.3.1", "name": "ix-release-name-0", "type": "macvlan", "master": "ens4s0", "ipam": {"type": "dhcp"}}'
  166. ixExternalInterfacesConfigurationNames:
  167. - ix-release-name-0
  168. - ix-release-name-1
  169. scaleExternalInterface:
  170. - hostInterface: enp0s3
  171. ipam:
  172. type: dhcp
  173. targetSelector:
  174. - workload-name1
  175. - workload-name2
  176. - hostInterface: enp0s4
  177. ipam:
  178. type: dhcp
  179. targetSelector:
  180. - workload-name1
  181. image: *image
  182. workload:
  183. workload-name1:
  184. enabled: true
  185. primary: true
  186. type: Deployment
  187. podSpec:
  188. containers:
  189. container-name1:
  190. enabled: true
  191. primary: true
  192. imageSelector: image
  193. probes: *probes
  194. workload-name2:
  195. enabled: true
  196. primary: false
  197. type: CronJob
  198. schedule: "*/1 * * * *"
  199. podSpec:
  200. containers:
  201. container-name1:
  202. enabled: true
  203. primary: true
  204. imageSelector: image
  205. probes: *probes
  206. asserts:
  207. - documentIndex: *deploymentDoc
  208. isKind:
  209. of: Deployment
  210. - documentIndex: *deploymentDoc
  211. isAPIVersion:
  212. of: apps/v1
  213. - documentIndex: *deploymentDoc
  214. equal:
  215. path: metadata.name
  216. value: release-name-common-test
  217. - documentIndex: *deploymentDoc
  218. isSubset:
  219. path: spec.template.metadata.annotations
  220. content:
  221. k8s.v1.cni.cncf.io/networks: ix-release-name-0, ix-release-name-1
  222. - documentIndex: &cronJobDoc 3
  223. isKind:
  224. of: CronJob
  225. - documentIndex: *cronJobDoc
  226. isAPIVersion:
  227. of: batch/v1
  228. - documentIndex: *cronJobDoc
  229. equal:
  230. path: metadata.name
  231. value: release-name-common-test-workload-name2
  232. - documentIndex: *cronJobDoc
  233. isSubset:
  234. path: spec.jobTemplate.spec.template.metadata.annotations
  235. content:
  236. k8s.v1.cni.cncf.io/networks: ix-release-name-0