kube-dsl 0.1.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (692) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/LICENSE +21 -0
  4. data/README.md +293 -0
  5. data/Rakefile +4 -0
  6. data/kube-dsl.gemspec +1 -1
  7. data/lib/kube-dsl.rb +6 -0
  8. data/lib/kube-dsl/array_field_res.rb +41 -0
  9. data/lib/kube-dsl/builder.rb +22 -11
  10. data/lib/kube-dsl/default_field_res.rb +28 -0
  11. data/lib/kube-dsl/dsl/admissionregistration/v1/mutating_webhook.rb +25 -8
  12. data/lib/kube-dsl/dsl/admissionregistration/v1/mutating_webhook_configuration.rb +5 -2
  13. data/lib/kube-dsl/dsl/admissionregistration/v1/mutating_webhook_configuration_list.rb +4 -1
  14. data/lib/kube-dsl/dsl/admissionregistration/v1/rule_with_operations.rb +12 -6
  15. data/lib/kube-dsl/dsl/admissionregistration/v1/service_reference.rb +9 -1
  16. data/lib/kube-dsl/dsl/admissionregistration/v1/validating_webhook.rb +23 -8
  17. data/lib/kube-dsl/dsl/admissionregistration/v1/validating_webhook_configuration.rb +5 -2
  18. data/lib/kube-dsl/dsl/admissionregistration/v1/validating_webhook_configuration_list.rb +4 -1
  19. data/lib/kube-dsl/dsl/admissionregistration/v1/webhook_client_config.rb +7 -2
  20. data/lib/kube-dsl/dsl/admissionregistration/v1beta1/mutating_webhook.rb +25 -8
  21. data/lib/kube-dsl/dsl/admissionregistration/v1beta1/mutating_webhook_configuration.rb +5 -2
  22. data/lib/kube-dsl/dsl/admissionregistration/v1beta1/mutating_webhook_configuration_list.rb +4 -1
  23. data/lib/kube-dsl/dsl/admissionregistration/v1beta1/rule_with_operations.rb +12 -6
  24. data/lib/kube-dsl/dsl/admissionregistration/v1beta1/service_reference.rb +9 -1
  25. data/lib/kube-dsl/dsl/admissionregistration/v1beta1/validating_webhook.rb +23 -8
  26. data/lib/kube-dsl/dsl/admissionregistration/v1beta1/validating_webhook_configuration.rb +5 -2
  27. data/lib/kube-dsl/dsl/admissionregistration/v1beta1/validating_webhook_configuration_list.rb +4 -1
  28. data/lib/kube-dsl/dsl/admissionregistration/v1beta1/webhook_client_config.rb +7 -2
  29. data/lib/kube-dsl/dsl/apiextensions/v1/custom_resource_column_definition.rb +13 -1
  30. data/lib/kube-dsl/dsl/apiextensions/v1/custom_resource_conversion.rb +4 -1
  31. data/lib/kube-dsl/dsl/apiextensions/v1/custom_resource_definition.rb +4 -0
  32. data/lib/kube-dsl/dsl/apiextensions/v1/custom_resource_definition_condition.rb +11 -1
  33. data/lib/kube-dsl/dsl/apiextensions/v1/custom_resource_definition_list.rb +4 -1
  34. data/lib/kube-dsl/dsl/apiextensions/v1/custom_resource_definition_names.rb +15 -5
  35. data/lib/kube-dsl/dsl/apiextensions/v1/custom_resource_definition_spec.rb +13 -4
  36. data/lib/kube-dsl/dsl/apiextensions/v1/custom_resource_definition_status.rb +7 -3
  37. data/lib/kube-dsl/dsl/apiextensions/v1/custom_resource_definition_version.rb +12 -3
  38. data/lib/kube-dsl/dsl/apiextensions/v1/custom_resource_subresource_scale.rb +7 -1
  39. data/lib/kube-dsl/dsl/apiextensions/v1/custom_resource_subresources.rb +5 -2
  40. data/lib/kube-dsl/dsl/apiextensions/v1/custom_resource_validation.rb +2 -0
  41. data/lib/kube-dsl/dsl/apiextensions/v1/external_documentation.rb +5 -1
  42. data/lib/kube-dsl/dsl/apiextensions/v1/json_schema_props.rb +91 -23
  43. data/lib/kube-dsl/dsl/apiextensions/v1/service_reference.rb +9 -1
  44. data/lib/kube-dsl/dsl/apiextensions/v1/webhook_client_config.rb +7 -2
  45. data/lib/kube-dsl/dsl/apiextensions/v1/webhook_conversion.rb +5 -2
  46. data/lib/kube-dsl/dsl/apiextensions/v1beta1/custom_resource_column_definition.rb +13 -1
  47. data/lib/kube-dsl/dsl/apiextensions/v1beta1/custom_resource_conversion.rb +7 -3
  48. data/lib/kube-dsl/dsl/apiextensions/v1beta1/custom_resource_definition.rb +4 -0
  49. data/lib/kube-dsl/dsl/apiextensions/v1beta1/custom_resource_definition_condition.rb +11 -1
  50. data/lib/kube-dsl/dsl/apiextensions/v1beta1/custom_resource_definition_list.rb +4 -1
  51. data/lib/kube-dsl/dsl/apiextensions/v1beta1/custom_resource_definition_names.rb +15 -5
  52. data/lib/kube-dsl/dsl/apiextensions/v1beta1/custom_resource_definition_spec.rb +21 -7
  53. data/lib/kube-dsl/dsl/apiextensions/v1beta1/custom_resource_definition_status.rb +7 -3
  54. data/lib/kube-dsl/dsl/apiextensions/v1beta1/custom_resource_definition_version.rb +12 -3
  55. data/lib/kube-dsl/dsl/apiextensions/v1beta1/custom_resource_subresource_scale.rb +7 -1
  56. data/lib/kube-dsl/dsl/apiextensions/v1beta1/custom_resource_subresources.rb +5 -2
  57. data/lib/kube-dsl/dsl/apiextensions/v1beta1/custom_resource_validation.rb +2 -0
  58. data/lib/kube-dsl/dsl/apiextensions/v1beta1/external_documentation.rb +5 -1
  59. data/lib/kube-dsl/dsl/apiextensions/v1beta1/json_schema_props.rb +91 -23
  60. data/lib/kube-dsl/dsl/apiextensions/v1beta1/service_reference.rb +9 -1
  61. data/lib/kube-dsl/dsl/apiextensions/v1beta1/webhook_client_config.rb +7 -2
  62. data/lib/kube-dsl/dsl/apiregistration/v1/api_service.rb +4 -0
  63. data/lib/kube-dsl/dsl/apiregistration/v1/api_service_condition.rb +11 -1
  64. data/lib/kube-dsl/dsl/apiregistration/v1/api_service_list.rb +4 -1
  65. data/lib/kube-dsl/dsl/apiregistration/v1/api_service_spec.rb +15 -2
  66. data/lib/kube-dsl/dsl/apiregistration/v1/api_service_status.rb +2 -0
  67. data/lib/kube-dsl/dsl/apiregistration/v1/service_reference.rb +7 -1
  68. data/lib/kube-dsl/dsl/apiregistration/v1beta1/api_service.rb +4 -0
  69. data/lib/kube-dsl/dsl/apiregistration/v1beta1/api_service_condition.rb +11 -1
  70. data/lib/kube-dsl/dsl/apiregistration/v1beta1/api_service_list.rb +4 -1
  71. data/lib/kube-dsl/dsl/apiregistration/v1beta1/api_service_spec.rb +15 -2
  72. data/lib/kube-dsl/dsl/apiregistration/v1beta1/api_service_status.rb +2 -0
  73. data/lib/kube-dsl/dsl/apiregistration/v1beta1/service_reference.rb +7 -1
  74. data/lib/kube-dsl/dsl/apps/v1/controller_revision.rb +8 -3
  75. data/lib/kube-dsl/dsl/apps/v1/controller_revision_list.rb +4 -1
  76. data/lib/kube-dsl/dsl/apps/v1/daemon_set.rb +4 -0
  77. data/lib/kube-dsl/dsl/apps/v1/daemon_set_condition.rb +11 -1
  78. data/lib/kube-dsl/dsl/apps/v1/daemon_set_list.rb +4 -1
  79. data/lib/kube-dsl/dsl/apps/v1/daemon_set_spec.rb +8 -1
  80. data/lib/kube-dsl/dsl/apps/v1/daemon_set_status.rb +21 -2
  81. data/lib/kube-dsl/dsl/apps/v1/daemon_set_update_strategy.rb +5 -2
  82. data/lib/kube-dsl/dsl/apps/v1/deployment.rb +4 -0
  83. data/lib/kube-dsl/dsl/apps/v1/deployment_condition.rb +13 -1
  84. data/lib/kube-dsl/dsl/apps/v1/deployment_list.rb +4 -1
  85. data/lib/kube-dsl/dsl/apps/v1/deployment_spec.rb +14 -1
  86. data/lib/kube-dsl/dsl/apps/v1/deployment_status.rb +17 -2
  87. data/lib/kube-dsl/dsl/apps/v1/deployment_strategy.rb +5 -2
  88. data/lib/kube-dsl/dsl/apps/v1/replica_set.rb +4 -0
  89. data/lib/kube-dsl/dsl/apps/v1/replica_set_condition.rb +11 -1
  90. data/lib/kube-dsl/dsl/apps/v1/replica_set_list.rb +4 -1
  91. data/lib/kube-dsl/dsl/apps/v1/replica_set_spec.rb +7 -1
  92. data/lib/kube-dsl/dsl/apps/v1/replica_set_status.rb +13 -2
  93. data/lib/kube-dsl/dsl/apps/v1/rolling_update_daemon_set.rb +3 -1
  94. data/lib/kube-dsl/dsl/apps/v1/rolling_update_deployment.rb +5 -1
  95. data/lib/kube-dsl/dsl/apps/v1/rolling_update_stateful_set_strategy.rb +3 -1
  96. data/lib/kube-dsl/dsl/apps/v1/stateful_set.rb +4 -0
  97. data/lib/kube-dsl/dsl/apps/v1/stateful_set_condition.rb +11 -1
  98. data/lib/kube-dsl/dsl/apps/v1/stateful_set_list.rb +4 -1
  99. data/lib/kube-dsl/dsl/apps/v1/stateful_set_spec.rb +16 -4
  100. data/lib/kube-dsl/dsl/apps/v1/stateful_set_status.rb +19 -2
  101. data/lib/kube-dsl/dsl/apps/v1/stateful_set_update_strategy.rb +5 -2
  102. data/lib/kube-dsl/dsl/apps/v1beta1/controller_revision.rb +8 -3
  103. data/lib/kube-dsl/dsl/apps/v1beta1/controller_revision_list.rb +4 -1
  104. data/lib/kube-dsl/dsl/apps/v1beta1/deployment.rb +4 -0
  105. data/lib/kube-dsl/dsl/apps/v1beta1/deployment_condition.rb +13 -1
  106. data/lib/kube-dsl/dsl/apps/v1beta1/deployment_list.rb +4 -1
  107. data/lib/kube-dsl/dsl/apps/v1beta1/deployment_rollback.rb +6 -2
  108. data/lib/kube-dsl/dsl/apps/v1beta1/deployment_spec.rb +15 -1
  109. data/lib/kube-dsl/dsl/apps/v1beta1/deployment_status.rb +17 -2
  110. data/lib/kube-dsl/dsl/apps/v1beta1/deployment_strategy.rb +5 -2
  111. data/lib/kube-dsl/dsl/apps/v1beta1/rollback_config.rb +3 -1
  112. data/lib/kube-dsl/dsl/apps/v1beta1/rolling_update_deployment.rb +5 -1
  113. data/lib/kube-dsl/dsl/apps/v1beta1/rolling_update_stateful_set_strategy.rb +3 -1
  114. data/lib/kube-dsl/dsl/apps/v1beta1/scale.rb +4 -0
  115. data/lib/kube-dsl/dsl/apps/v1beta1/scale_spec.rb +3 -1
  116. data/lib/kube-dsl/dsl/apps/v1beta1/scale_status.rb +8 -3
  117. data/lib/kube-dsl/dsl/apps/v1beta1/stateful_set.rb +4 -0
  118. data/lib/kube-dsl/dsl/apps/v1beta1/stateful_set_condition.rb +11 -1
  119. data/lib/kube-dsl/dsl/apps/v1beta1/stateful_set_list.rb +4 -1
  120. data/lib/kube-dsl/dsl/apps/v1beta1/stateful_set_spec.rb +16 -4
  121. data/lib/kube-dsl/dsl/apps/v1beta1/stateful_set_status.rb +19 -2
  122. data/lib/kube-dsl/dsl/apps/v1beta1/stateful_set_update_strategy.rb +5 -2
  123. data/lib/kube-dsl/dsl/apps/v1beta2/controller_revision.rb +8 -3
  124. data/lib/kube-dsl/dsl/apps/v1beta2/controller_revision_list.rb +4 -1
  125. data/lib/kube-dsl/dsl/apps/v1beta2/daemon_set.rb +4 -0
  126. data/lib/kube-dsl/dsl/apps/v1beta2/daemon_set_condition.rb +11 -1
  127. data/lib/kube-dsl/dsl/apps/v1beta2/daemon_set_list.rb +4 -1
  128. data/lib/kube-dsl/dsl/apps/v1beta2/daemon_set_spec.rb +8 -1
  129. data/lib/kube-dsl/dsl/apps/v1beta2/daemon_set_status.rb +21 -2
  130. data/lib/kube-dsl/dsl/apps/v1beta2/daemon_set_update_strategy.rb +5 -2
  131. data/lib/kube-dsl/dsl/apps/v1beta2/deployment.rb +4 -0
  132. data/lib/kube-dsl/dsl/apps/v1beta2/deployment_condition.rb +13 -1
  133. data/lib/kube-dsl/dsl/apps/v1beta2/deployment_list.rb +4 -1
  134. data/lib/kube-dsl/dsl/apps/v1beta2/deployment_spec.rb +14 -1
  135. data/lib/kube-dsl/dsl/apps/v1beta2/deployment_status.rb +17 -2
  136. data/lib/kube-dsl/dsl/apps/v1beta2/deployment_strategy.rb +5 -2
  137. data/lib/kube-dsl/dsl/apps/v1beta2/replica_set.rb +4 -0
  138. data/lib/kube-dsl/dsl/apps/v1beta2/replica_set_condition.rb +11 -1
  139. data/lib/kube-dsl/dsl/apps/v1beta2/replica_set_list.rb +4 -1
  140. data/lib/kube-dsl/dsl/apps/v1beta2/replica_set_spec.rb +7 -1
  141. data/lib/kube-dsl/dsl/apps/v1beta2/replica_set_status.rb +13 -2
  142. data/lib/kube-dsl/dsl/apps/v1beta2/rolling_update_daemon_set.rb +3 -1
  143. data/lib/kube-dsl/dsl/apps/v1beta2/rolling_update_deployment.rb +5 -1
  144. data/lib/kube-dsl/dsl/apps/v1beta2/rolling_update_stateful_set_strategy.rb +3 -1
  145. data/lib/kube-dsl/dsl/apps/v1beta2/scale.rb +4 -0
  146. data/lib/kube-dsl/dsl/apps/v1beta2/scale_spec.rb +3 -1
  147. data/lib/kube-dsl/dsl/apps/v1beta2/scale_status.rb +8 -3
  148. data/lib/kube-dsl/dsl/apps/v1beta2/stateful_set.rb +4 -0
  149. data/lib/kube-dsl/dsl/apps/v1beta2/stateful_set_condition.rb +11 -1
  150. data/lib/kube-dsl/dsl/apps/v1beta2/stateful_set_list.rb +4 -1
  151. data/lib/kube-dsl/dsl/apps/v1beta2/stateful_set_spec.rb +16 -4
  152. data/lib/kube-dsl/dsl/apps/v1beta2/stateful_set_status.rb +19 -2
  153. data/lib/kube-dsl/dsl/apps/v1beta2/stateful_set_update_strategy.rb +5 -2
  154. data/lib/kube-dsl/dsl/auditregistration/v1alpha1/audit_sink.rb +3 -0
  155. data/lib/kube-dsl/dsl/auditregistration/v1alpha1/audit_sink_list.rb +4 -1
  156. data/lib/kube-dsl/dsl/auditregistration/v1alpha1/audit_sink_spec.rb +3 -0
  157. data/lib/kube-dsl/dsl/auditregistration/v1alpha1/policy.rb +5 -2
  158. data/lib/kube-dsl/dsl/auditregistration/v1alpha1/service_reference.rb +9 -1
  159. data/lib/kube-dsl/dsl/auditregistration/v1alpha1/webhook.rb +3 -0
  160. data/lib/kube-dsl/dsl/auditregistration/v1alpha1/webhook_client_config.rb +7 -2
  161. data/lib/kube-dsl/dsl/auditregistration/v1alpha1/webhook_throttle_config.rb +5 -1
  162. data/lib/kube-dsl/dsl/authentication/v1/bound_object_reference.rb +9 -1
  163. data/lib/kube-dsl/dsl/authentication/v1/token_request.rb +4 -0
  164. data/lib/kube-dsl/dsl/authentication/v1/token_request_spec.rb +7 -3
  165. data/lib/kube-dsl/dsl/authentication/v1/token_request_status.rb +5 -1
  166. data/lib/kube-dsl/dsl/authentication/v1/token_review.rb +4 -0
  167. data/lib/kube-dsl/dsl/authentication/v1/token_review_spec.rb +6 -3
  168. data/lib/kube-dsl/dsl/authentication/v1/token_review_status.rb +9 -3
  169. data/lib/kube-dsl/dsl/authentication/v1/user_info.rb +11 -5
  170. data/lib/kube-dsl/dsl/authentication/v1beta1/token_review.rb +4 -0
  171. data/lib/kube-dsl/dsl/authentication/v1beta1/token_review_spec.rb +6 -3
  172. data/lib/kube-dsl/dsl/authentication/v1beta1/token_review_status.rb +9 -3
  173. data/lib/kube-dsl/dsl/authentication/v1beta1/user_info.rb +11 -5
  174. data/lib/kube-dsl/dsl/authorization/v1/local_subject_access_review.rb +4 -0
  175. data/lib/kube-dsl/dsl/authorization/v1/non_resource_attributes.rb +5 -1
  176. data/lib/kube-dsl/dsl/authorization/v1/non_resource_rule.rb +6 -3
  177. data/lib/kube-dsl/dsl/authorization/v1/resource_attributes.rb +15 -1
  178. data/lib/kube-dsl/dsl/authorization/v1/resource_rule.rb +9 -4
  179. data/lib/kube-dsl/dsl/authorization/v1/self_subject_access_review.rb +4 -0
  180. data/lib/kube-dsl/dsl/authorization/v1/self_subject_access_review_spec.rb +3 -0
  181. data/lib/kube-dsl/dsl/authorization/v1/self_subject_rules_review.rb +4 -0
  182. data/lib/kube-dsl/dsl/authorization/v1/self_subject_rules_review_spec.rb +3 -1
  183. data/lib/kube-dsl/dsl/authorization/v1/subject_access_review.rb +4 -0
  184. data/lib/kube-dsl/dsl/authorization/v1/subject_access_review_spec.rb +14 -6
  185. data/lib/kube-dsl/dsl/authorization/v1/subject_access_review_status.rb +9 -1
  186. data/lib/kube-dsl/dsl/authorization/v1/subject_rules_review_status.rb +7 -1
  187. data/lib/kube-dsl/dsl/authorization/v1beta1/local_subject_access_review.rb +4 -0
  188. data/lib/kube-dsl/dsl/authorization/v1beta1/non_resource_attributes.rb +5 -1
  189. data/lib/kube-dsl/dsl/authorization/v1beta1/non_resource_rule.rb +6 -3
  190. data/lib/kube-dsl/dsl/authorization/v1beta1/resource_attributes.rb +15 -1
  191. data/lib/kube-dsl/dsl/authorization/v1beta1/resource_rule.rb +9 -4
  192. data/lib/kube-dsl/dsl/authorization/v1beta1/self_subject_access_review.rb +4 -0
  193. data/lib/kube-dsl/dsl/authorization/v1beta1/self_subject_access_review_spec.rb +3 -0
  194. data/lib/kube-dsl/dsl/authorization/v1beta1/self_subject_rules_review.rb +4 -0
  195. data/lib/kube-dsl/dsl/authorization/v1beta1/self_subject_rules_review_spec.rb +3 -1
  196. data/lib/kube-dsl/dsl/authorization/v1beta1/subject_access_review.rb +4 -0
  197. data/lib/kube-dsl/dsl/authorization/v1beta1/subject_access_review_spec.rb +15 -7
  198. data/lib/kube-dsl/dsl/authorization/v1beta1/subject_access_review_status.rb +9 -1
  199. data/lib/kube-dsl/dsl/authorization/v1beta1/subject_rules_review_status.rb +7 -1
  200. data/lib/kube-dsl/dsl/autoscaling/v1/cross_version_object_reference.rb +7 -1
  201. data/lib/kube-dsl/dsl/autoscaling/v1/horizontal_pod_autoscaler.rb +4 -0
  202. data/lib/kube-dsl/dsl/autoscaling/v1/horizontal_pod_autoscaler_list.rb +4 -1
  203. data/lib/kube-dsl/dsl/autoscaling/v1/horizontal_pod_autoscaler_spec.rb +9 -2
  204. data/lib/kube-dsl/dsl/autoscaling/v1/horizontal_pod_autoscaler_status.rb +11 -1
  205. data/lib/kube-dsl/dsl/autoscaling/v1/scale.rb +4 -0
  206. data/lib/kube-dsl/dsl/autoscaling/v1/scale_spec.rb +3 -1
  207. data/lib/kube-dsl/dsl/autoscaling/v1/scale_status.rb +5 -1
  208. data/lib/kube-dsl/dsl/autoscaling/v2beta1/cross_version_object_reference.rb +7 -1
  209. data/lib/kube-dsl/dsl/autoscaling/v2beta1/external_metric_source.rb +9 -2
  210. data/lib/kube-dsl/dsl/autoscaling/v2beta1/external_metric_status.rb +8 -1
  211. data/lib/kube-dsl/dsl/autoscaling/v2beta1/horizontal_pod_autoscaler.rb +4 -0
  212. data/lib/kube-dsl/dsl/autoscaling/v2beta1/horizontal_pod_autoscaler_condition.rb +11 -1
  213. data/lib/kube-dsl/dsl/autoscaling/v2beta1/horizontal_pod_autoscaler_list.rb +4 -1
  214. data/lib/kube-dsl/dsl/autoscaling/v2beta1/horizontal_pod_autoscaler_spec.rb +8 -2
  215. data/lib/kube-dsl/dsl/autoscaling/v2beta1/horizontal_pod_autoscaler_status.rb +13 -3
  216. data/lib/kube-dsl/dsl/autoscaling/v2beta1/metric_spec.rb +8 -2
  217. data/lib/kube-dsl/dsl/autoscaling/v2beta1/metric_status.rb +8 -2
  218. data/lib/kube-dsl/dsl/autoscaling/v2beta1/object_metric_source.rb +10 -2
  219. data/lib/kube-dsl/dsl/autoscaling/v2beta1/object_metric_status.rb +9 -1
  220. data/lib/kube-dsl/dsl/autoscaling/v2beta1/pods_metric_source.rb +7 -2
  221. data/lib/kube-dsl/dsl/autoscaling/v2beta1/pods_metric_status.rb +6 -1
  222. data/lib/kube-dsl/dsl/autoscaling/v2beta1/resource_metric_source.rb +7 -1
  223. data/lib/kube-dsl/dsl/autoscaling/v2beta1/resource_metric_status.rb +7 -1
  224. data/lib/kube-dsl/dsl/autoscaling/v2beta2/cross_version_object_reference.rb +7 -1
  225. data/lib/kube-dsl/dsl/autoscaling/v2beta2/external_metric_source.rb +3 -0
  226. data/lib/kube-dsl/dsl/autoscaling/v2beta2/external_metric_status.rb +3 -0
  227. data/lib/kube-dsl/dsl/autoscaling/v2beta2/horizontal_pod_autoscaler.rb +4 -0
  228. data/lib/kube-dsl/dsl/autoscaling/v2beta2/horizontal_pod_autoscaler_condition.rb +11 -1
  229. data/lib/kube-dsl/dsl/autoscaling/v2beta2/horizontal_pod_autoscaler_list.rb +4 -1
  230. data/lib/kube-dsl/dsl/autoscaling/v2beta2/horizontal_pod_autoscaler_spec.rb +8 -2
  231. data/lib/kube-dsl/dsl/autoscaling/v2beta2/horizontal_pod_autoscaler_status.rb +13 -3
  232. data/lib/kube-dsl/dsl/autoscaling/v2beta2/metric_identifier.rb +4 -1
  233. data/lib/kube-dsl/dsl/autoscaling/v2beta2/metric_spec.rb +8 -2
  234. data/lib/kube-dsl/dsl/autoscaling/v2beta2/metric_status.rb +8 -2
  235. data/lib/kube-dsl/dsl/autoscaling/v2beta2/metric_target.rb +9 -1
  236. data/lib/kube-dsl/dsl/autoscaling/v2beta2/metric_value_status.rb +7 -1
  237. data/lib/kube-dsl/dsl/autoscaling/v2beta2/object_metric_source.rb +4 -0
  238. data/lib/kube-dsl/dsl/autoscaling/v2beta2/object_metric_status.rb +4 -0
  239. data/lib/kube-dsl/dsl/autoscaling/v2beta2/pods_metric_source.rb +3 -0
  240. data/lib/kube-dsl/dsl/autoscaling/v2beta2/pods_metric_status.rb +3 -0
  241. data/lib/kube-dsl/dsl/autoscaling/v2beta2/resource_metric_source.rb +4 -1
  242. data/lib/kube-dsl/dsl/autoscaling/v2beta2/resource_metric_status.rb +5 -2
  243. data/lib/kube-dsl/dsl/batch/v1/job.rb +4 -0
  244. data/lib/kube-dsl/dsl/batch/v1/job_condition.rb +13 -1
  245. data/lib/kube-dsl/dsl/batch/v1/job_list.rb +4 -1
  246. data/lib/kube-dsl/dsl/batch/v1/job_spec.rb +16 -2
  247. data/lib/kube-dsl/dsl/batch/v1/job_status.rb +13 -2
  248. data/lib/kube-dsl/dsl/batch/v1beta1/cron_job.rb +4 -0
  249. data/lib/kube-dsl/dsl/batch/v1beta1/cron_job_list.rb +4 -1
  250. data/lib/kube-dsl/dsl/batch/v1beta1/cron_job_spec.rb +15 -2
  251. data/lib/kube-dsl/dsl/batch/v1beta1/cron_job_status.rb +5 -2
  252. data/lib/kube-dsl/dsl/batch/v1beta1/job_template_spec.rb +3 -0
  253. data/lib/kube-dsl/dsl/batch/v2alpha1/cron_job.rb +4 -0
  254. data/lib/kube-dsl/dsl/batch/v2alpha1/cron_job_list.rb +4 -1
  255. data/lib/kube-dsl/dsl/batch/v2alpha1/cron_job_spec.rb +15 -2
  256. data/lib/kube-dsl/dsl/batch/v2alpha1/cron_job_status.rb +5 -2
  257. data/lib/kube-dsl/dsl/batch/v2alpha1/job_template_spec.rb +3 -0
  258. data/lib/kube-dsl/dsl/certificates/v1beta1/certificate_signing_request.rb +4 -0
  259. data/lib/kube-dsl/dsl/certificates/v1beta1/certificate_signing_request_condition.rb +9 -1
  260. data/lib/kube-dsl/dsl/certificates/v1beta1/certificate_signing_request_list.rb +4 -1
  261. data/lib/kube-dsl/dsl/certificates/v1beta1/certificate_signing_request_spec.rb +16 -7
  262. data/lib/kube-dsl/dsl/certificates/v1beta1/certificate_signing_request_status.rb +4 -1
  263. data/lib/kube-dsl/dsl/coordination/v1/lease.rb +3 -0
  264. data/lib/kube-dsl/dsl/coordination/v1/lease_list.rb +4 -1
  265. data/lib/kube-dsl/dsl/coordination/v1/lease_spec.rb +11 -1
  266. data/lib/kube-dsl/dsl/coordination/v1beta1/lease.rb +3 -0
  267. data/lib/kube-dsl/dsl/coordination/v1beta1/lease_list.rb +4 -1
  268. data/lib/kube-dsl/dsl/coordination/v1beta1/lease_spec.rb +11 -1
  269. data/lib/kube-dsl/dsl/discovery/v1beta1/endpoint.rb +10 -4
  270. data/lib/kube-dsl/dsl/discovery/v1beta1/endpoint_conditions.rb +3 -1
  271. data/lib/kube-dsl/dsl/discovery/v1beta1/endpoint_port.rb +9 -1
  272. data/lib/kube-dsl/dsl/discovery/v1beta1/endpoint_slice.rb +10 -5
  273. data/lib/kube-dsl/dsl/discovery/v1beta1/endpoint_slice_list.rb +4 -1
  274. data/lib/kube-dsl/dsl/events/v1beta1/event.rb +33 -8
  275. data/lib/kube-dsl/dsl/events/v1beta1/event_list.rb +4 -1
  276. data/lib/kube-dsl/dsl/events/v1beta1/event_series.rb +7 -1
  277. data/lib/kube-dsl/dsl/extensions/v1beta1/allowed_csi_driver.rb +3 -1
  278. data/lib/kube-dsl/dsl/extensions/v1beta1/allowed_flex_volume.rb +3 -1
  279. data/lib/kube-dsl/dsl/extensions/v1beta1/allowed_host_path.rb +5 -1
  280. data/lib/kube-dsl/dsl/extensions/v1beta1/daemon_set.rb +4 -0
  281. data/lib/kube-dsl/dsl/extensions/v1beta1/daemon_set_condition.rb +11 -1
  282. data/lib/kube-dsl/dsl/extensions/v1beta1/daemon_set_list.rb +4 -1
  283. data/lib/kube-dsl/dsl/extensions/v1beta1/daemon_set_spec.rb +11 -2
  284. data/lib/kube-dsl/dsl/extensions/v1beta1/daemon_set_status.rb +21 -2
  285. data/lib/kube-dsl/dsl/extensions/v1beta1/daemon_set_update_strategy.rb +5 -2
  286. data/lib/kube-dsl/dsl/extensions/v1beta1/deployment.rb +4 -0
  287. data/lib/kube-dsl/dsl/extensions/v1beta1/deployment_condition.rb +13 -1
  288. data/lib/kube-dsl/dsl/extensions/v1beta1/deployment_list.rb +4 -1
  289. data/lib/kube-dsl/dsl/extensions/v1beta1/deployment_rollback.rb +6 -2
  290. data/lib/kube-dsl/dsl/extensions/v1beta1/deployment_spec.rb +15 -1
  291. data/lib/kube-dsl/dsl/extensions/v1beta1/deployment_status.rb +17 -2
  292. data/lib/kube-dsl/dsl/extensions/v1beta1/deployment_strategy.rb +5 -2
  293. data/lib/kube-dsl/dsl/extensions/v1beta1/fs_group_strategy_options.rb +5 -2
  294. data/lib/kube-dsl/dsl/extensions/v1beta1/host_port_range.rb +5 -1
  295. data/lib/kube-dsl/dsl/extensions/v1beta1/http_ingress_path.rb +5 -2
  296. data/lib/kube-dsl/dsl/extensions/v1beta1/http_ingress_rule_value.rb +2 -0
  297. data/lib/kube-dsl/dsl/extensions/v1beta1/id_range.rb +5 -1
  298. data/lib/kube-dsl/dsl/extensions/v1beta1/ingress.rb +4 -0
  299. data/lib/kube-dsl/dsl/extensions/v1beta1/ingress_backend.rb +5 -1
  300. data/lib/kube-dsl/dsl/extensions/v1beta1/ingress_list.rb +4 -1
  301. data/lib/kube-dsl/dsl/extensions/v1beta1/ingress_rule.rb +4 -1
  302. data/lib/kube-dsl/dsl/extensions/v1beta1/ingress_spec.rb +6 -2
  303. data/lib/kube-dsl/dsl/extensions/v1beta1/ingress_status.rb +2 -0
  304. data/lib/kube-dsl/dsl/extensions/v1beta1/ingress_tls.rb +6 -3
  305. data/lib/kube-dsl/dsl/extensions/v1beta1/ip_block.rb +6 -3
  306. data/lib/kube-dsl/dsl/extensions/v1beta1/network_policy.rb +3 -0
  307. data/lib/kube-dsl/dsl/extensions/v1beta1/network_policy_egress_rule.rb +3 -0
  308. data/lib/kube-dsl/dsl/extensions/v1beta1/network_policy_ingress_rule.rb +3 -0
  309. data/lib/kube-dsl/dsl/extensions/v1beta1/network_policy_list.rb +4 -1
  310. data/lib/kube-dsl/dsl/extensions/v1beta1/network_policy_peer.rb +4 -0
  311. data/lib/kube-dsl/dsl/extensions/v1beta1/network_policy_port.rb +5 -1
  312. data/lib/kube-dsl/dsl/extensions/v1beta1/network_policy_spec.rb +7 -2
  313. data/lib/kube-dsl/dsl/extensions/v1beta1/pod_security_policy.rb +3 -0
  314. data/lib/kube-dsl/dsl/extensions/v1beta1/pod_security_policy_list.rb +4 -1
  315. data/lib/kube-dsl/dsl/extensions/v1beta1/pod_security_policy_spec.rb +50 -19
  316. data/lib/kube-dsl/dsl/extensions/v1beta1/replica_set.rb +4 -0
  317. data/lib/kube-dsl/dsl/extensions/v1beta1/replica_set_condition.rb +11 -1
  318. data/lib/kube-dsl/dsl/extensions/v1beta1/replica_set_list.rb +4 -1
  319. data/lib/kube-dsl/dsl/extensions/v1beta1/replica_set_spec.rb +7 -1
  320. data/lib/kube-dsl/dsl/extensions/v1beta1/replica_set_status.rb +13 -2
  321. data/lib/kube-dsl/dsl/extensions/v1beta1/rollback_config.rb +3 -1
  322. data/lib/kube-dsl/dsl/extensions/v1beta1/rolling_update_daemon_set.rb +3 -1
  323. data/lib/kube-dsl/dsl/extensions/v1beta1/rolling_update_deployment.rb +5 -1
  324. data/lib/kube-dsl/dsl/extensions/v1beta1/run_as_group_strategy_options.rb +5 -2
  325. data/lib/kube-dsl/dsl/extensions/v1beta1/run_as_user_strategy_options.rb +5 -2
  326. data/lib/kube-dsl/dsl/extensions/v1beta1/runtime_class_strategy_options.rb +6 -3
  327. data/lib/kube-dsl/dsl/extensions/v1beta1/scale.rb +4 -0
  328. data/lib/kube-dsl/dsl/extensions/v1beta1/scale_spec.rb +3 -1
  329. data/lib/kube-dsl/dsl/extensions/v1beta1/scale_status.rb +8 -3
  330. data/lib/kube-dsl/dsl/extensions/v1beta1/se_linux_strategy_options.rb +4 -1
  331. data/lib/kube-dsl/dsl/extensions/v1beta1/supplemental_groups_strategy_options.rb +5 -2
  332. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/flow_distinguisher_method.rb +3 -1
  333. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/flow_schema.rb +4 -0
  334. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/flow_schema_condition.rb +11 -1
  335. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/flow_schema_list.rb +4 -1
  336. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/flow_schema_spec.rb +9 -4
  337. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/flow_schema_status.rb +2 -0
  338. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/group_subject.rb +3 -1
  339. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/limit_response.rb +5 -2
  340. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/limited_priority_level_configuration.rb +4 -1
  341. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/non_resource_policy_rule.rb +6 -3
  342. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/policy_rules_with_subjects.rb +4 -0
  343. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/priority_level_configuration.rb +4 -0
  344. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/priority_level_configuration_condition.rb +11 -1
  345. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/priority_level_configuration_list.rb +4 -1
  346. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/priority_level_configuration_reference.rb +3 -1
  347. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/priority_level_configuration_spec.rb +5 -2
  348. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/priority_level_configuration_status.rb +2 -0
  349. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/queuing_configuration.rb +7 -1
  350. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/resource_policy_rule.rb +12 -6
  351. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/service_account_subject.rb +5 -1
  352. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/subject.rb +7 -2
  353. data/lib/kube-dsl/dsl/flowcontrol/v1alpha1/user_subject.rb +3 -1
  354. data/lib/kube-dsl/dsl/meta/v1/api_group.rb +8 -3
  355. data/lib/kube-dsl/dsl/meta/v1/api_group_list.rb +3 -1
  356. data/lib/kube-dsl/dsl/meta/v1/api_resource.rb +24 -7
  357. data/lib/kube-dsl/dsl/meta/v1/api_resource_list.rb +5 -2
  358. data/lib/kube-dsl/dsl/meta/v1/api_versions.rb +4 -1
  359. data/lib/kube-dsl/dsl/meta/v1/delete_options.rb +15 -5
  360. data/lib/kube-dsl/dsl/meta/v1/group_version_for_discovery.rb +5 -1
  361. data/lib/kube-dsl/dsl/meta/v1/label_selector.rb +4 -1
  362. data/lib/kube-dsl/dsl/meta/v1/label_selector_requirement.rb +7 -2
  363. data/lib/kube-dsl/dsl/meta/v1/list_meta.rb +9 -1
  364. data/lib/kube-dsl/dsl/meta/v1/managed_fields_entry.rb +13 -1
  365. data/lib/kube-dsl/dsl/meta/v1/object_meta.rb +36 -9
  366. data/lib/kube-dsl/dsl/meta/v1/owner_reference.rb +13 -1
  367. data/lib/kube-dsl/dsl/meta/v1/preconditions.rb +5 -1
  368. data/lib/kube-dsl/dsl/meta/v1/server_address_by_client_cidr.rb +5 -1
  369. data/lib/kube-dsl/dsl/meta/v1/status.rb +14 -4
  370. data/lib/kube-dsl/dsl/meta/v1/status_cause.rb +7 -1
  371. data/lib/kube-dsl/dsl/meta/v1/status_details.rb +13 -2
  372. data/lib/kube-dsl/dsl/meta/v1/watch_event.rb +5 -1
  373. data/lib/kube-dsl/dsl/networking/v1/ip_block.rb +6 -3
  374. data/lib/kube-dsl/dsl/networking/v1/network_policy.rb +3 -0
  375. data/lib/kube-dsl/dsl/networking/v1/network_policy_egress_rule.rb +3 -0
  376. data/lib/kube-dsl/dsl/networking/v1/network_policy_ingress_rule.rb +3 -0
  377. data/lib/kube-dsl/dsl/networking/v1/network_policy_list.rb +4 -1
  378. data/lib/kube-dsl/dsl/networking/v1/network_policy_peer.rb +4 -0
  379. data/lib/kube-dsl/dsl/networking/v1/network_policy_port.rb +5 -1
  380. data/lib/kube-dsl/dsl/networking/v1/network_policy_spec.rb +7 -2
  381. data/lib/kube-dsl/dsl/networking/v1beta1/http_ingress_path.rb +5 -2
  382. data/lib/kube-dsl/dsl/networking/v1beta1/http_ingress_rule_value.rb +2 -0
  383. data/lib/kube-dsl/dsl/networking/v1beta1/ingress.rb +4 -0
  384. data/lib/kube-dsl/dsl/networking/v1beta1/ingress_backend.rb +5 -1
  385. data/lib/kube-dsl/dsl/networking/v1beta1/ingress_list.rb +4 -1
  386. data/lib/kube-dsl/dsl/networking/v1beta1/ingress_rule.rb +4 -1
  387. data/lib/kube-dsl/dsl/networking/v1beta1/ingress_spec.rb +6 -2
  388. data/lib/kube-dsl/dsl/networking/v1beta1/ingress_status.rb +2 -0
  389. data/lib/kube-dsl/dsl/networking/v1beta1/ingress_tls.rb +6 -3
  390. data/lib/kube-dsl/dsl/node/v1alpha1/overhead.rb +3 -1
  391. data/lib/kube-dsl/dsl/node/v1alpha1/runtime_class.rb +3 -0
  392. data/lib/kube-dsl/dsl/node/v1alpha1/runtime_class_list.rb +4 -1
  393. data/lib/kube-dsl/dsl/node/v1alpha1/runtime_class_spec.rb +6 -2
  394. data/lib/kube-dsl/dsl/node/v1alpha1/scheduling.rb +5 -2
  395. data/lib/kube-dsl/dsl/node/v1beta1/overhead.rb +3 -1
  396. data/lib/kube-dsl/dsl/node/v1beta1/runtime_class.rb +7 -2
  397. data/lib/kube-dsl/dsl/node/v1beta1/runtime_class_list.rb +4 -1
  398. data/lib/kube-dsl/dsl/node/v1beta1/scheduling.rb +5 -2
  399. data/lib/kube-dsl/dsl/policy/v1beta1/allowed_csi_driver.rb +3 -1
  400. data/lib/kube-dsl/dsl/policy/v1beta1/allowed_flex_volume.rb +3 -1
  401. data/lib/kube-dsl/dsl/policy/v1beta1/allowed_host_path.rb +5 -1
  402. data/lib/kube-dsl/dsl/policy/v1beta1/eviction.rb +4 -1
  403. data/lib/kube-dsl/dsl/policy/v1beta1/fs_group_strategy_options.rb +5 -2
  404. data/lib/kube-dsl/dsl/policy/v1beta1/host_port_range.rb +5 -1
  405. data/lib/kube-dsl/dsl/policy/v1beta1/id_range.rb +5 -1
  406. data/lib/kube-dsl/dsl/policy/v1beta1/pod_disruption_budget.rb +4 -0
  407. data/lib/kube-dsl/dsl/policy/v1beta1/pod_disruption_budget_list.rb +4 -1
  408. data/lib/kube-dsl/dsl/policy/v1beta1/pod_disruption_budget_spec.rb +6 -1
  409. data/lib/kube-dsl/dsl/policy/v1beta1/pod_disruption_budget_status.rb +14 -3
  410. data/lib/kube-dsl/dsl/policy/v1beta1/pod_security_policy.rb +3 -0
  411. data/lib/kube-dsl/dsl/policy/v1beta1/pod_security_policy_list.rb +4 -1
  412. data/lib/kube-dsl/dsl/policy/v1beta1/pod_security_policy_spec.rb +50 -19
  413. data/lib/kube-dsl/dsl/policy/v1beta1/run_as_group_strategy_options.rb +5 -2
  414. data/lib/kube-dsl/dsl/policy/v1beta1/run_as_user_strategy_options.rb +5 -2
  415. data/lib/kube-dsl/dsl/policy/v1beta1/runtime_class_strategy_options.rb +6 -3
  416. data/lib/kube-dsl/dsl/policy/v1beta1/se_linux_strategy_options.rb +4 -1
  417. data/lib/kube-dsl/dsl/policy/v1beta1/supplemental_groups_strategy_options.rb +5 -2
  418. data/lib/kube-dsl/dsl/rbac/v1/aggregation_rule.rb +2 -0
  419. data/lib/kube-dsl/dsl/rbac/v1/cluster_role.rb +7 -3
  420. data/lib/kube-dsl/dsl/rbac/v1/cluster_role_binding.rb +6 -2
  421. data/lib/kube-dsl/dsl/rbac/v1/cluster_role_binding_list.rb +4 -1
  422. data/lib/kube-dsl/dsl/rbac/v1/cluster_role_list.rb +4 -1
  423. data/lib/kube-dsl/dsl/rbac/v1/policy_rule.rb +12 -6
  424. data/lib/kube-dsl/dsl/rbac/v1/role.rb +5 -2
  425. data/lib/kube-dsl/dsl/rbac/v1/role_binding.rb +6 -2
  426. data/lib/kube-dsl/dsl/rbac/v1/role_binding_list.rb +4 -1
  427. data/lib/kube-dsl/dsl/rbac/v1/role_list.rb +4 -1
  428. data/lib/kube-dsl/dsl/rbac/v1/role_ref.rb +7 -1
  429. data/lib/kube-dsl/dsl/rbac/v1/subject.rb +9 -1
  430. data/lib/kube-dsl/dsl/rbac/v1alpha1/aggregation_rule.rb +2 -0
  431. data/lib/kube-dsl/dsl/rbac/v1alpha1/cluster_role.rb +7 -3
  432. data/lib/kube-dsl/dsl/rbac/v1alpha1/cluster_role_binding.rb +6 -2
  433. data/lib/kube-dsl/dsl/rbac/v1alpha1/cluster_role_binding_list.rb +4 -1
  434. data/lib/kube-dsl/dsl/rbac/v1alpha1/cluster_role_list.rb +4 -1
  435. data/lib/kube-dsl/dsl/rbac/v1alpha1/policy_rule.rb +12 -6
  436. data/lib/kube-dsl/dsl/rbac/v1alpha1/role.rb +5 -2
  437. data/lib/kube-dsl/dsl/rbac/v1alpha1/role_binding.rb +6 -2
  438. data/lib/kube-dsl/dsl/rbac/v1alpha1/role_binding_list.rb +4 -1
  439. data/lib/kube-dsl/dsl/rbac/v1alpha1/role_list.rb +4 -1
  440. data/lib/kube-dsl/dsl/rbac/v1alpha1/role_ref.rb +7 -1
  441. data/lib/kube-dsl/dsl/rbac/v1alpha1/subject.rb +9 -1
  442. data/lib/kube-dsl/dsl/rbac/v1beta1/aggregation_rule.rb +2 -0
  443. data/lib/kube-dsl/dsl/rbac/v1beta1/cluster_role.rb +7 -3
  444. data/lib/kube-dsl/dsl/rbac/v1beta1/cluster_role_binding.rb +6 -2
  445. data/lib/kube-dsl/dsl/rbac/v1beta1/cluster_role_binding_list.rb +4 -1
  446. data/lib/kube-dsl/dsl/rbac/v1beta1/cluster_role_list.rb +4 -1
  447. data/lib/kube-dsl/dsl/rbac/v1beta1/policy_rule.rb +12 -6
  448. data/lib/kube-dsl/dsl/rbac/v1beta1/role.rb +5 -2
  449. data/lib/kube-dsl/dsl/rbac/v1beta1/role_binding.rb +6 -2
  450. data/lib/kube-dsl/dsl/rbac/v1beta1/role_binding_list.rb +4 -1
  451. data/lib/kube-dsl/dsl/rbac/v1beta1/role_list.rb +4 -1
  452. data/lib/kube-dsl/dsl/rbac/v1beta1/role_ref.rb +7 -1
  453. data/lib/kube-dsl/dsl/rbac/v1beta1/subject.rb +9 -1
  454. data/lib/kube-dsl/dsl/scheduling/v1/priority_class.rb +12 -3
  455. data/lib/kube-dsl/dsl/scheduling/v1/priority_class_list.rb +4 -1
  456. data/lib/kube-dsl/dsl/scheduling/v1alpha1/priority_class.rb +12 -3
  457. data/lib/kube-dsl/dsl/scheduling/v1alpha1/priority_class_list.rb +4 -1
  458. data/lib/kube-dsl/dsl/scheduling/v1beta1/priority_class.rb +12 -3
  459. data/lib/kube-dsl/dsl/scheduling/v1beta1/priority_class_list.rb +4 -1
  460. data/lib/kube-dsl/dsl/settings/v1alpha1/pod_preset.rb +3 -0
  461. data/lib/kube-dsl/dsl/settings/v1alpha1/pod_preset_list.rb +4 -1
  462. data/lib/kube-dsl/dsl/settings/v1alpha1/pod_preset_spec.rb +8 -2
  463. data/lib/kube-dsl/dsl/storage/v1/csi_node.rb +3 -0
  464. data/lib/kube-dsl/dsl/storage/v1/csi_node_driver.rb +9 -3
  465. data/lib/kube-dsl/dsl/storage/v1/csi_node_list.rb +4 -1
  466. data/lib/kube-dsl/dsl/storage/v1/csi_node_spec.rb +2 -0
  467. data/lib/kube-dsl/dsl/storage/v1/storage_class.rb +20 -8
  468. data/lib/kube-dsl/dsl/storage/v1/storage_class_list.rb +4 -1
  469. data/lib/kube-dsl/dsl/storage/v1/volume_attachment.rb +4 -0
  470. data/lib/kube-dsl/dsl/storage/v1/volume_attachment_list.rb +4 -1
  471. data/lib/kube-dsl/dsl/storage/v1/volume_attachment_source.rb +5 -2
  472. data/lib/kube-dsl/dsl/storage/v1/volume_attachment_spec.rb +6 -1
  473. data/lib/kube-dsl/dsl/storage/v1/volume_attachment_status.rb +9 -4
  474. data/lib/kube-dsl/dsl/storage/v1/volume_error.rb +5 -1
  475. data/lib/kube-dsl/dsl/storage/v1/volume_node_resources.rb +3 -1
  476. data/lib/kube-dsl/dsl/storage/v1alpha1/volume_attachment.rb +4 -0
  477. data/lib/kube-dsl/dsl/storage/v1alpha1/volume_attachment_list.rb +4 -1
  478. data/lib/kube-dsl/dsl/storage/v1alpha1/volume_attachment_source.rb +5 -2
  479. data/lib/kube-dsl/dsl/storage/v1alpha1/volume_attachment_spec.rb +6 -1
  480. data/lib/kube-dsl/dsl/storage/v1alpha1/volume_attachment_status.rb +9 -4
  481. data/lib/kube-dsl/dsl/storage/v1alpha1/volume_error.rb +5 -1
  482. data/lib/kube-dsl/dsl/storage/v1beta1/csi_driver.rb +3 -0
  483. data/lib/kube-dsl/dsl/storage/v1beta1/csi_driver_list.rb +4 -1
  484. data/lib/kube-dsl/dsl/storage/v1beta1/csi_driver_spec.rb +7 -2
  485. data/lib/kube-dsl/dsl/storage/v1beta1/csi_node.rb +3 -0
  486. data/lib/kube-dsl/dsl/storage/v1beta1/csi_node_driver.rb +9 -3
  487. data/lib/kube-dsl/dsl/storage/v1beta1/csi_node_list.rb +4 -1
  488. data/lib/kube-dsl/dsl/storage/v1beta1/csi_node_spec.rb +2 -0
  489. data/lib/kube-dsl/dsl/storage/v1beta1/storage_class.rb +20 -8
  490. data/lib/kube-dsl/dsl/storage/v1beta1/storage_class_list.rb +4 -1
  491. data/lib/kube-dsl/dsl/storage/v1beta1/volume_attachment.rb +4 -0
  492. data/lib/kube-dsl/dsl/storage/v1beta1/volume_attachment_list.rb +4 -1
  493. data/lib/kube-dsl/dsl/storage/v1beta1/volume_attachment_source.rb +5 -2
  494. data/lib/kube-dsl/dsl/storage/v1beta1/volume_attachment_spec.rb +6 -1
  495. data/lib/kube-dsl/dsl/storage/v1beta1/volume_attachment_status.rb +9 -4
  496. data/lib/kube-dsl/dsl/storage/v1beta1/volume_error.rb +5 -1
  497. data/lib/kube-dsl/dsl/storage/v1beta1/volume_node_resources.rb +3 -1
  498. data/lib/kube-dsl/dsl/v1/affinity.rb +4 -0
  499. data/lib/kube-dsl/dsl/v1/attached_volume.rb +5 -1
  500. data/lib/kube-dsl/dsl/v1/aws_elastic_block_store_volume_source.rb +9 -1
  501. data/lib/kube-dsl/dsl/v1/azure_disk_volume_source.rb +13 -1
  502. data/lib/kube-dsl/dsl/v1/azure_file_persistent_volume_source.rb +9 -1
  503. data/lib/kube-dsl/dsl/v1/azure_file_volume_source.rb +7 -1
  504. data/lib/kube-dsl/dsl/v1/binding.rb +3 -0
  505. data/lib/kube-dsl/dsl/v1/capabilities.rb +7 -4
  506. data/lib/kube-dsl/dsl/v1/ceph_fs_persistent_volume_source.rb +14 -4
  507. data/lib/kube-dsl/dsl/v1/ceph_fs_volume_source.rb +14 -4
  508. data/lib/kube-dsl/dsl/v1/cinder_persistent_volume_source.rb +9 -2
  509. data/lib/kube-dsl/dsl/v1/cinder_volume_source.rb +9 -2
  510. data/lib/kube-dsl/dsl/v1/client_ip_config.rb +3 -1
  511. data/lib/kube-dsl/dsl/v1/component_condition.rb +9 -1
  512. data/lib/kube-dsl/dsl/v1/component_status.rb +4 -1
  513. data/lib/kube-dsl/dsl/v1/component_status_list.rb +4 -1
  514. data/lib/kube-dsl/dsl/v1/config_map.rb +8 -4
  515. data/lib/kube-dsl/dsl/v1/config_map_env_source.rb +5 -1
  516. data/lib/kube-dsl/dsl/v1/config_map_key_selector.rb +7 -1
  517. data/lib/kube-dsl/dsl/v1/config_map_list.rb +4 -1
  518. data/lib/kube-dsl/dsl/v1/config_map_node_config_source.rb +11 -1
  519. data/lib/kube-dsl/dsl/v1/config_map_projection.rb +7 -2
  520. data/lib/kube-dsl/dsl/v1/config_map_volume_source.rb +9 -2
  521. data/lib/kube-dsl/dsl/v1/container.rb +49 -18
  522. data/lib/kube-dsl/dsl/v1/container_image.rb +6 -3
  523. data/lib/kube-dsl/dsl/v1/container_port.rb +11 -1
  524. data/lib/kube-dsl/dsl/v1/container_state.rb +4 -0
  525. data/lib/kube-dsl/dsl/v1/container_state_running.rb +3 -1
  526. data/lib/kube-dsl/dsl/v1/container_state_terminated.rb +15 -1
  527. data/lib/kube-dsl/dsl/v1/container_state_waiting.rb +5 -1
  528. data/lib/kube-dsl/dsl/v1/container_status.rb +18 -2
  529. data/lib/kube-dsl/dsl/v1/csi_persistent_volume_source.rb +19 -6
  530. data/lib/kube-dsl/dsl/v1/csi_volume_source.rb +11 -3
  531. data/lib/kube-dsl/dsl/v1/daemon_endpoint.rb +3 -1
  532. data/lib/kube-dsl/dsl/v1/downward_api_projection.rb +2 -0
  533. data/lib/kube-dsl/dsl/v1/downward_api_volume_file.rb +8 -2
  534. data/lib/kube-dsl/dsl/v1/downward_api_volume_source.rb +4 -1
  535. data/lib/kube-dsl/dsl/v1/empty_dir_volume_source.rb +5 -1
  536. data/lib/kube-dsl/dsl/v1/endpoint_address.rb +8 -1
  537. data/lib/kube-dsl/dsl/v1/endpoint_port.rb +7 -1
  538. data/lib/kube-dsl/dsl/v1/endpoint_subset.rb +4 -0
  539. data/lib/kube-dsl/dsl/v1/endpoints.rb +5 -2
  540. data/lib/kube-dsl/dsl/v1/endpoints_list.rb +4 -1
  541. data/lib/kube-dsl/dsl/v1/env_from_source.rb +6 -2
  542. data/lib/kube-dsl/dsl/v1/env_var.rb +6 -1
  543. data/lib/kube-dsl/dsl/v1/env_var_source.rb +5 -0
  544. data/lib/kube-dsl/dsl/v1/ephemeral_container.rb +51 -18
  545. data/lib/kube-dsl/dsl/v1/event.rb +32 -7
  546. data/lib/kube-dsl/dsl/v1/event_list.rb +4 -1
  547. data/lib/kube-dsl/dsl/v1/event_series.rb +7 -1
  548. data/lib/kube-dsl/dsl/v1/event_source.rb +5 -1
  549. data/lib/kube-dsl/dsl/v1/exec_action.rb +4 -2
  550. data/lib/kube-dsl/dsl/v1/fc_volume_source.rb +12 -4
  551. data/lib/kube-dsl/dsl/v1/flex_persistent_volume_source.rb +11 -3
  552. data/lib/kube-dsl/dsl/v1/flex_volume_source.rb +11 -3
  553. data/lib/kube-dsl/dsl/v1/flocker_volume_source.rb +5 -1
  554. data/lib/kube-dsl/dsl/v1/gce_persistent_disk_volume_source.rb +9 -1
  555. data/lib/kube-dsl/dsl/v1/git_repo_volume_source.rb +7 -1
  556. data/lib/kube-dsl/dsl/v1/glusterfs_persistent_volume_source.rb +9 -1
  557. data/lib/kube-dsl/dsl/v1/glusterfs_volume_source.rb +7 -1
  558. data/lib/kube-dsl/dsl/v1/handler.rb +4 -0
  559. data/lib/kube-dsl/dsl/v1/host_alias.rb +6 -3
  560. data/lib/kube-dsl/dsl/v1/host_path_volume_source.rb +5 -1
  561. data/lib/kube-dsl/dsl/v1/http_get_action.rb +11 -2
  562. data/lib/kube-dsl/dsl/v1/http_header.rb +5 -1
  563. data/lib/kube-dsl/dsl/v1/iscsi_persistent_volume_source.rb +24 -4
  564. data/lib/kube-dsl/dsl/v1/iscsi_volume_source.rb +24 -4
  565. data/lib/kube-dsl/dsl/v1/key_to_path.rb +7 -1
  566. data/lib/kube-dsl/dsl/v1/lifecycle.rb +3 -0
  567. data/lib/kube-dsl/dsl/v1/limit_range.rb +3 -0
  568. data/lib/kube-dsl/dsl/v1/limit_range_item.rb +14 -7
  569. data/lib/kube-dsl/dsl/v1/limit_range_list.rb +4 -1
  570. data/lib/kube-dsl/dsl/v1/limit_range_spec.rb +2 -0
  571. data/lib/kube-dsl/dsl/v1/load_balancer_ingress.rb +5 -1
  572. data/lib/kube-dsl/dsl/v1/load_balancer_status.rb +2 -0
  573. data/lib/kube-dsl/dsl/v1/local_object_reference.rb +3 -1
  574. data/lib/kube-dsl/dsl/v1/local_volume_source.rb +5 -1
  575. data/lib/kube-dsl/dsl/v1/namespace.rb +4 -0
  576. data/lib/kube-dsl/dsl/v1/namespace_condition.rb +11 -1
  577. data/lib/kube-dsl/dsl/v1/namespace_list.rb +4 -1
  578. data/lib/kube-dsl/dsl/v1/namespace_spec.rb +3 -1
  579. data/lib/kube-dsl/dsl/v1/namespace_status.rb +5 -2
  580. data/lib/kube-dsl/dsl/v1/nfs_volume_source.rb +7 -1
  581. data/lib/kube-dsl/dsl/v1/node.rb +4 -0
  582. data/lib/kube-dsl/dsl/v1/node_address.rb +5 -1
  583. data/lib/kube-dsl/dsl/v1/node_affinity.rb +3 -0
  584. data/lib/kube-dsl/dsl/v1/node_condition.rb +13 -1
  585. data/lib/kube-dsl/dsl/v1/node_config_source.rb +2 -0
  586. data/lib/kube-dsl/dsl/v1/node_config_status.rb +7 -2
  587. data/lib/kube-dsl/dsl/v1/node_daemon_endpoints.rb +2 -0
  588. data/lib/kube-dsl/dsl/v1/node_list.rb +4 -1
  589. data/lib/kube-dsl/dsl/v1/node_selector.rb +2 -0
  590. data/lib/kube-dsl/dsl/v1/node_selector_requirement.rb +7 -2
  591. data/lib/kube-dsl/dsl/v1/node_selector_term.rb +3 -0
  592. data/lib/kube-dsl/dsl/v1/node_spec.rb +17 -6
  593. data/lib/kube-dsl/dsl/v1/node_status.rb +24 -12
  594. data/lib/kube-dsl/dsl/v1/node_system_info.rb +21 -1
  595. data/lib/kube-dsl/dsl/v1/object_field_selector.rb +5 -1
  596. data/lib/kube-dsl/dsl/v1/object_reference.rb +15 -1
  597. data/lib/kube-dsl/dsl/v1/persistent_volume.rb +4 -0
  598. data/lib/kube-dsl/dsl/v1/persistent_volume_claim.rb +4 -0
  599. data/lib/kube-dsl/dsl/v1/persistent_volume_claim_condition.rb +13 -1
  600. data/lib/kube-dsl/dsl/v1/persistent_volume_claim_list.rb +4 -1
  601. data/lib/kube-dsl/dsl/v1/persistent_volume_claim_spec.rb +15 -5
  602. data/lib/kube-dsl/dsl/v1/persistent_volume_claim_status.rb +10 -5
  603. data/lib/kube-dsl/dsl/v1/persistent_volume_claim_volume_source.rb +5 -1
  604. data/lib/kube-dsl/dsl/v1/persistent_volume_list.rb +4 -1
  605. data/lib/kube-dsl/dsl/v1/persistent_volume_spec.rb +42 -9
  606. data/lib/kube-dsl/dsl/v1/persistent_volume_status.rb +7 -1
  607. data/lib/kube-dsl/dsl/v1/photon_persistent_disk_volume_source.rb +5 -1
  608. data/lib/kube-dsl/dsl/v1/pod.rb +4 -0
  609. data/lib/kube-dsl/dsl/v1/pod_affinity.rb +3 -0
  610. data/lib/kube-dsl/dsl/v1/pod_affinity_term.rb +8 -4
  611. data/lib/kube-dsl/dsl/v1/pod_anti_affinity.rb +3 -0
  612. data/lib/kube-dsl/dsl/v1/pod_condition.rb +13 -1
  613. data/lib/kube-dsl/dsl/v1/pod_dns_config.rb +6 -2
  614. data/lib/kube-dsl/dsl/v1/pod_dns_config_option.rb +5 -1
  615. data/lib/kube-dsl/dsl/v1/pod_ip.rb +3 -1
  616. data/lib/kube-dsl/dsl/v1/pod_list.rb +4 -1
  617. data/lib/kube-dsl/dsl/v1/pod_readiness_gate.rb +3 -1
  618. data/lib/kube-dsl/dsl/v1/pod_security_context.rb +16 -4
  619. data/lib/kube-dsl/dsl/v1/pod_spec.rb +71 -17
  620. data/lib/kube-dsl/dsl/v1/pod_status.rb +27 -6
  621. data/lib/kube-dsl/dsl/v1/pod_template.rb +3 -0
  622. data/lib/kube-dsl/dsl/v1/pod_template_list.rb +4 -1
  623. data/lib/kube-dsl/dsl/v1/pod_template_spec.rb +3 -0
  624. data/lib/kube-dsl/dsl/v1/portworx_volume_source.rb +7 -1
  625. data/lib/kube-dsl/dsl/v1/preferred_scheduling_term.rb +5 -2
  626. data/lib/kube-dsl/dsl/v1/probe.rb +17 -4
  627. data/lib/kube-dsl/dsl/v1/projected_volume_source.rb +4 -1
  628. data/lib/kube-dsl/dsl/v1/quobyte_volume_source.rb +13 -1
  629. data/lib/kube-dsl/dsl/v1/rbd_persistent_volume_source.rb +18 -4
  630. data/lib/kube-dsl/dsl/v1/rbd_volume_source.rb +18 -4
  631. data/lib/kube-dsl/dsl/v1/replication_controller.rb +4 -0
  632. data/lib/kube-dsl/dsl/v1/replication_controller_condition.rb +11 -1
  633. data/lib/kube-dsl/dsl/v1/replication_controller_list.rb +4 -1
  634. data/lib/kube-dsl/dsl/v1/replication_controller_spec.rb +9 -3
  635. data/lib/kube-dsl/dsl/v1/replication_controller_status.rb +13 -2
  636. data/lib/kube-dsl/dsl/v1/resource_field_selector.rb +7 -1
  637. data/lib/kube-dsl/dsl/v1/resource_quota.rb +4 -0
  638. data/lib/kube-dsl/dsl/v1/resource_quota_list.rb +4 -1
  639. data/lib/kube-dsl/dsl/v1/resource_quota_spec.rb +8 -4
  640. data/lib/kube-dsl/dsl/v1/resource_quota_status.rb +5 -2
  641. data/lib/kube-dsl/dsl/v1/resource_requirements.rb +5 -2
  642. data/lib/kube-dsl/dsl/v1/scale_io_persistent_volume_source.rb +21 -2
  643. data/lib/kube-dsl/dsl/v1/scale_io_volume_source.rb +21 -2
  644. data/lib/kube-dsl/dsl/v1/scope_selector.rb +2 -0
  645. data/lib/kube-dsl/dsl/v1/scoped_resource_selector_requirement.rb +7 -2
  646. data/lib/kube-dsl/dsl/v1/se_linux_options.rb +9 -1
  647. data/lib/kube-dsl/dsl/v1/secret.rb +10 -5
  648. data/lib/kube-dsl/dsl/v1/secret_env_source.rb +5 -1
  649. data/lib/kube-dsl/dsl/v1/secret_key_selector.rb +7 -1
  650. data/lib/kube-dsl/dsl/v1/secret_list.rb +4 -1
  651. data/lib/kube-dsl/dsl/v1/secret_projection.rb +7 -2
  652. data/lib/kube-dsl/dsl/v1/secret_reference.rb +5 -1
  653. data/lib/kube-dsl/dsl/v1/secret_volume_source.rb +9 -2
  654. data/lib/kube-dsl/dsl/v1/security_context.rb +19 -2
  655. data/lib/kube-dsl/dsl/v1/service.rb +4 -0
  656. data/lib/kube-dsl/dsl/v1/service_account.rb +9 -4
  657. data/lib/kube-dsl/dsl/v1/service_account_list.rb +4 -1
  658. data/lib/kube-dsl/dsl/v1/service_account_token_projection.rb +7 -1
  659. data/lib/kube-dsl/dsl/v1/service_list.rb +4 -1
  660. data/lib/kube-dsl/dsl/v1/service_port.rb +11 -1
  661. data/lib/kube-dsl/dsl/v1/service_spec.rb +35 -11
  662. data/lib/kube-dsl/dsl/v1/service_status.rb +2 -0
  663. data/lib/kube-dsl/dsl/v1/session_affinity_config.rb +2 -0
  664. data/lib/kube-dsl/dsl/v1/storage_os_persistent_volume_source.rb +11 -2
  665. data/lib/kube-dsl/dsl/v1/storage_os_volume_source.rb +11 -2
  666. data/lib/kube-dsl/dsl/v1/sysctl.rb +5 -1
  667. data/lib/kube-dsl/dsl/v1/taint.rb +9 -1
  668. data/lib/kube-dsl/dsl/v1/tcp_socket_action.rb +5 -1
  669. data/lib/kube-dsl/dsl/v1/toleration.rb +11 -1
  670. data/lib/kube-dsl/dsl/v1/topology_selector_label_requirement.rb +5 -2
  671. data/lib/kube-dsl/dsl/v1/topology_selector_term.rb +2 -0
  672. data/lib/kube-dsl/dsl/v1/topology_spread_constraint.rb +9 -2
  673. data/lib/kube-dsl/dsl/v1/typed_local_object_reference.rb +7 -1
  674. data/lib/kube-dsl/dsl/v1/volume.rb +32 -2
  675. data/lib/kube-dsl/dsl/v1/volume_device.rb +5 -1
  676. data/lib/kube-dsl/dsl/v1/volume_mount.rb +13 -1
  677. data/lib/kube-dsl/dsl/v1/volume_node_affinity.rb +2 -0
  678. data/lib/kube-dsl/dsl/v1/volume_projection.rb +5 -0
  679. data/lib/kube-dsl/dsl/v1/vsphere_virtual_disk_volume_source.rb +9 -1
  680. data/lib/kube-dsl/dsl/v1/weighted_pod_affinity_term.rb +5 -2
  681. data/lib/kube-dsl/dsl/v1/windows_security_context_options.rb +7 -1
  682. data/lib/kube-dsl/dsl_object.rb +1 -0
  683. data/lib/kube-dsl/field_res.rb +35 -0
  684. data/lib/kube-dsl/key_value_field_res.rb +32 -0
  685. data/lib/kube-dsl/key_value_fields.rb +5 -1
  686. data/lib/kube-dsl/object_field_res.rb +35 -0
  687. data/lib/kube-dsl/resource_meta.rb +27 -64
  688. data/lib/kube-dsl/string_helpers.rb +14 -0
  689. data/lib/kube-dsl/validations.rb +228 -0
  690. data/lib/kube-dsl/value_fields.rb +134 -48
  691. data/lib/kube-dsl/version.rb +1 -1
  692. metadata +14 -6
@@ -2,7 +2,7 @@ require 'base64'
2
2
 
3
3
  module KubeDSL
4
4
  class KeyValueFields
5
- attr_reader :format
5
+ attr_reader :format, :kv_pairs
6
6
 
7
7
  def initialize(format: :string)
8
8
  @format = format
@@ -31,6 +31,10 @@ module KubeDSL
31
31
  end
32
32
  end
33
33
 
34
+ def merge!(other)
35
+ @kv_pairs.merge!(other.instance_variable_get(:@kv_pairs))
36
+ end
37
+
34
38
  private
35
39
 
36
40
  def serialize_value(data)
@@ -0,0 +1,35 @@
1
+ module KubeDSL
2
+ class ObjectFieldRes
3
+ include StringHelpers
4
+
5
+ attr_reader :name, :res
6
+
7
+ def initialize(name, res)
8
+ @name = name
9
+ @res = res
10
+ end
11
+
12
+ def fields_to_ruby(_inflector)
13
+ [
14
+ "object_field(:#{ruby_safe_name}) { #{res.ref.ruby_namespace.join('::')}::#{res.ref.kind}.new }"
15
+ ]
16
+ end
17
+
18
+ def validations(_inflector)
19
+ [].tap do |result|
20
+ ruby_type = [*res.ref.ruby_namespace, res.ref.kind].join('::')
21
+ result << "validates :#{ruby_safe_name}, object: { kind_of: #{ruby_type} }"
22
+ end
23
+ end
24
+
25
+ def serialize_call(_inflector)
26
+ "#{ruby_safe_name}.serialize"
27
+ end
28
+
29
+ private
30
+
31
+ def ruby_safe_name
32
+ @ruby_safe_name ||= unkeywordify(underscore(name))
33
+ end
34
+ end
35
+ end
@@ -2,19 +2,12 @@ module KubeDSL
2
2
  class ResourceMeta
3
3
  include StringHelpers
4
4
 
5
- attr_reader :ref ,:inflector
6
- attr_reader :fields, :key_value_fields, :array_fields, :object_fields
7
- attr_reader :default_fields
5
+ attr_reader :ref ,:inflector, :fields
8
6
 
9
7
  def initialize(ref, inflector)
10
8
  @ref = ref
11
9
  @inflector = inflector
12
-
13
- @fields = []
14
- @key_value_fields = {}
15
- @array_fields = {}
16
- @object_fields = {}
17
- @default_fields = {}
10
+ @fields = {}
18
11
  end
19
12
 
20
13
  def external?
@@ -22,13 +15,7 @@ module KubeDSL
22
15
  end
23
16
 
24
17
  def empty?
25
- field_count = fields.size +
26
- key_value_fields.size +
27
- array_fields.size +
28
- object_fields.size +
29
- default_fields.size
30
-
31
- field_count.zero?
18
+ fields.size.zero?
32
19
  end
33
20
 
34
21
  def to_ruby
@@ -37,6 +24,8 @@ module KubeDSL
37
24
  str << " class #{ref.kind} < ::KubeDSL::DSLObject\n"
38
25
  str << fields_to_ruby
39
26
  str << "\n"
27
+ str << validations
28
+ str << "\n"
40
29
  str << serialize_method
41
30
  str << "\n"
42
31
  str << " def kind_sym\n"
@@ -49,32 +38,30 @@ module KubeDSL
49
38
 
50
39
  private
51
40
 
52
- def fields_to_ruby
53
- ''.tap do |str|
54
- unless fields.empty?
55
- str << ' value_fields '
56
- str << fields.map { |f| ":#{underscore(f)}" }.join(', ')
57
- str << "\n"
58
- end
41
+ def indent(lines, level)
42
+ lines.map do |line|
43
+ "#{' ' * level}#{line}"
44
+ end
45
+ end
59
46
 
60
- array_fields.each do |name, field|
61
- if field
62
- str << " array_field(:#{underscore(inflector.singularize(name))})"
63
- str << " { #{field.ref.ruby_namespace.join('::')}::#{field.ref.kind}.new }"
64
- str << "\n"
65
- else
66
- str << " array_field :#{underscore(inflector.singularize(name))}\n"
67
- end
68
- end
47
+ def fields_to_ruby
48
+ lines = fields.flat_map do |name, field|
49
+ indent(field.fields_to_ruby(inflector), 2)
50
+ end
69
51
 
70
- object_fields.each do |name, field|
71
- str << " object_field(:#{underscore(name)}) { #{field.ref.ruby_namespace.join('::')}::#{field.ref.kind}.new }\n"
72
- end
52
+ result = lines.join("\n")
53
+ result << "\n" unless result.empty?
54
+ result
55
+ end
73
56
 
74
- key_value_fields.each do |name, fmt|
75
- str << " object_field(:#{underscore(name)}) { ::KubeDSL::KeyValueFields.new(format: :#{fmt}) }\n"
76
- end
57
+ def validations
58
+ lines = fields.flat_map do |name, field|
59
+ indent(field.validations(inflector), 2)
77
60
  end
61
+
62
+ result = lines.join("\n")
63
+ result << "\n" unless result.empty?
64
+ result
78
65
  end
79
66
 
80
67
  def serialize_method
@@ -82,32 +69,8 @@ module KubeDSL
82
69
  str << " def serialize\n"
83
70
  str << " {}.tap do |result|\n"
84
71
 
85
- default_fields.each do |name, value|
86
- str << " result[:#{quote_sym(name)}] = #{value}\n"
87
- end
88
-
89
- fields.each do |f|
90
- str << " result[:#{quote_sym(f)}] = #{underscore(f)}\n"
91
- end
92
-
93
- array_fields.each do |name, field|
94
- plural_name = inflector.pluralize(
95
- underscore(inflector.singularize(name))
96
- )
97
-
98
- if field
99
- str << " result[:#{quote_sym(name)}] = #{plural_name}.map(&:serialize)\n"
100
- else
101
- str << " result[:#{quote_sym(name)}] = #{plural_name}\n"
102
- end
103
- end
104
-
105
- object_fields.each do |name, field|
106
- str << " result[:#{quote_sym(name)}] = #{underscore(name)}.serialize\n"
107
- end
108
-
109
- key_value_fields.each do |name, _|
110
- str << " result[:#{quote_sym(name)}] = #{underscore(name)}.serialize\n"
72
+ fields.each do |name, field|
73
+ str << " result[:#{quote_sym(name)}] = #{field.serialize_call(inflector)}\n"
111
74
  end
112
75
 
113
76
  str << " end\n"
@@ -1,5 +1,11 @@
1
1
  module KubeDSL
2
2
  module StringHelpers
3
+ RUBY_KEYWORDS = %w(
4
+ BEGIN END alias and begin break case class def defined? do else elsif
5
+ end ensure false for if in module next nil not or redo rescue retry
6
+ return self super then true undef unless until when while yield
7
+ )
8
+
3
9
  def capitalize(str)
4
10
  str.sub(/\A(.)/) { $1.upcase }
5
11
  end
@@ -11,6 +17,14 @@ module KubeDSL
11
17
  .gsub('-', '_')
12
18
  .downcase
13
19
  end
20
+
21
+ def unkeywordify(str)
22
+ if RUBY_KEYWORDS.include?(str)
23
+ "#{str}_field"
24
+ else
25
+ str
26
+ end
27
+ end
14
28
  end
15
29
 
16
30
  StringHelpers.extend(StringHelpers)
@@ -0,0 +1,228 @@
1
+ module KubeDSL
2
+ class ValidationError < StandardError; end
3
+
4
+ module Validations
5
+ class ValidationErrors
6
+ attr_reader :messages
7
+
8
+ def initialize
9
+ @messages = {}
10
+ end
11
+
12
+ def add(field_name, msg)
13
+ messages[field_name] ||= []
14
+ messages[field_name] << msg
15
+ end
16
+
17
+ def empty?
18
+ messages.empty?
19
+ end
20
+ end
21
+
22
+ class PresenceValidator
23
+ attr_reader :field_name, :presence
24
+
25
+ def initialize(field_name, presence)
26
+ @field_name = field_name
27
+ @presence = presence
28
+ end
29
+
30
+ def validate(obj, errors, nesting)
31
+ if presence && obj_empty?(obj)
32
+ errors.add([*nesting, field_name].join('.'), 'is required')
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def obj_empty?(obj)
39
+ if obj.respond_to?(:empty)
40
+ obj.empty?
41
+ else
42
+ !!obj
43
+ end
44
+ end
45
+ end
46
+
47
+ class ArrayValidator
48
+ attr_reader :field_name, :kind_of
49
+
50
+ def initialize(field_name, opts)
51
+ @field_name = field_name
52
+ @kind_of = opts.fetch(:kind_of)
53
+ end
54
+
55
+ def validate(obj, errors, nesting)
56
+ unless obj.is_a?(Array)
57
+ errors.add([*nesting, field_name].join('.'), 'is not an array')
58
+ return
59
+ end
60
+
61
+ obj.each_with_index do |elem, idx|
62
+ unless elem.nil? || elem.is_a?(kind_of)
63
+ errors.add(
64
+ [*nesting, field_name].join('.'), "contains an object at index #{idx} "\
65
+ "of type '#{elem.class.name}', expected '#{kind_of.name}'"
66
+ )
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ class FormatValidator
73
+ attr_reader :format
74
+
75
+ def initialize(format)
76
+ @format = format
77
+ end
78
+
79
+ def valid?(obj)
80
+ klasses.any? { |k| obj.nil? || obj.is_a?(k) }
81
+ end
82
+
83
+ def klasses
84
+ @klasses ||= case format
85
+ when :string, :byte
86
+ [String]
87
+ when :integer
88
+ [Integer]
89
+ when :boolean
90
+ [TrueClass, FalseClass]
91
+ else
92
+ raise "format '#{format}' not recognized"
93
+ end
94
+ end
95
+ end
96
+
97
+ class FieldValidator
98
+ attr_reader :field_name, :format_validator
99
+
100
+ def initialize(field_name, options = {})
101
+ @field_name = field_name
102
+ @format_validator ||= FormatValidator.new(options[:format])
103
+ end
104
+
105
+ def validate(obj, errors, nesting)
106
+ unless format_validator.valid?(obj)
107
+ errors.add([*nesting, field_name].join('.'), "is not a #{format_validator.klasses.map(&:to_s).join(', ')}")
108
+ end
109
+ end
110
+ end
111
+
112
+ class ObjectValidator
113
+ attr_reader :field_name, :kind_of
114
+
115
+ def initialize(field_name, opts)
116
+ @field_name = field_name
117
+ @kind_of = opts.fetch(:kind_of)
118
+ end
119
+
120
+ def validate(obj, errors, nesting)
121
+ unless obj.nil? || obj.is_a?(kind_of)
122
+ errors.add([*nesting, field_name].join('.'), "'#{obj.class.name}', expected '#{kind_of.name}'")
123
+ end
124
+ end
125
+ end
126
+
127
+ class KeyValueValidator
128
+ attr_reader :field_name, :format_validator
129
+
130
+ def initialize(field_name, options = {})
131
+ @field_name = field_name
132
+ @format_validator ||= FormatValidator.new(options[:value_format])
133
+ end
134
+
135
+ def validate(obj, errors, nesting)
136
+ obj.kv_pairs.each_pair do |k, v|
137
+ unless format_validator.valid?(v)
138
+ errors.add(
139
+ [*nesting, field_name].join('.'),
140
+ "expected element '#{k}' to be a #{format_validator.klasses.map(&:to_s).join(', ')}, got #{v.class.name}")
141
+ end
142
+ end
143
+ end
144
+ end
145
+
146
+ class InclusionValidator
147
+ attr_reader :field_name, :list
148
+
149
+ def initialize(field_name, opts)
150
+ @field_name = field_name
151
+ @list = opts[:in]
152
+ end
153
+
154
+ def validate(obj, errors, nesting)
155
+ unless list.include?(obj)
156
+ errors.add([*nesting, field_name].join('.'), "is not in #{list.join(', ')}")
157
+ end
158
+ end
159
+ end
160
+
161
+ module ClassMethods
162
+ def validates(field_name, options)
163
+ validators[field_name] = options.map do |val, *val_args|
164
+ validator_class = case val
165
+ when :array
166
+ ArrayValidator
167
+ when :presence
168
+ PresenceValidator
169
+ when :field
170
+ FieldValidator
171
+ when :object
172
+ ObjectValidator
173
+ when :kv
174
+ KeyValueValidator
175
+ when :inclusion
176
+ InclusionValidator
177
+ else
178
+ raise "couldn't find a(n) #{val} validator"
179
+ end
180
+
181
+ validator_class.new(field_name, *val_args)
182
+ end
183
+ end
184
+
185
+ def validators
186
+ @validators ||= {}
187
+ end
188
+ end
189
+
190
+ module InstanceMethods
191
+ def validate(errors = nil, nesting = [])
192
+ errors ||= ValidationErrors.new
193
+
194
+ self.class.validators.each do |field_name, validators|
195
+ field = send(field_name)
196
+ validators.each { |val| val.validate(field, errors, nesting) }
197
+
198
+ if field.respond_to?(:validate)
199
+ field.validate(errors, nesting + [field_name.to_s])
200
+ end
201
+ end
202
+
203
+ errors
204
+ end
205
+
206
+ def validate!
207
+ errors = validate
208
+
209
+ unless errors.empty?
210
+ field = errors.messages.keys.first
211
+ message = errors.messages[field].first
212
+ raise ValidationError, "#{field} #{message}"
213
+ end
214
+ end
215
+
216
+ def valid?
217
+ errors = validate
218
+ errors.empty?
219
+ end
220
+ end
221
+
222
+
223
+ def self.extended(base)
224
+ base.include(InstanceMethods)
225
+ base.extend(ClassMethods)
226
+ end
227
+ end
228
+ end
@@ -2,77 +2,163 @@ require 'securerandom'
2
2
 
3
3
  module KubeDSL
4
4
  module ValueFields
5
- def value_fields(*fields)
6
- fields.each { |field| value_field(field) }
7
- end
5
+ class ClassMismatchError < StandardError; end
8
6
 
9
- def value_field(field, default: nil)
10
- define_method(field) do |*args|
11
- if args.empty?
12
- instance_variable_get(:"@#{field}") || (
13
- default.respond_to?(:call) ? default.call : default
14
- )
15
- else
16
- instance_variable_set(:"@#{field}", args.first)
17
- end
7
+ module ClassMethods
8
+ def value_fields(*fields)
9
+ fields.each { |field| value_field(field) }
18
10
  end
19
- end
20
11
 
21
- def object_field(field, &field_block)
22
- define_method(field) do |*args, &block|
23
- ivar = :"@#{field}"
24
- val = instance_variable_get(ivar)
12
+ def value_field(field, default: nil)
13
+ __fields__[:value] << field
25
14
 
26
- unless val
27
- val = field_block.call(*args)
28
- instance_variable_set(ivar, val)
15
+ define_method(field) do |*args|
16
+ if args.empty?
17
+ instance_variable_get(:"@#{field}") || (
18
+ default.respond_to?(:call) ? default.call(self) : default
19
+ )
20
+ else
21
+ instance_variable_set(:"@#{field}", args.first)
22
+ end
29
23
  end
24
+ end
25
+
26
+ def object_field(field, &field_block)
27
+ __fields__[:object] << field
28
+
29
+ define_method(field) do |*args, &block|
30
+ ivar = :"@#{field}"
31
+ val = instance_variable_get(ivar)
30
32
 
31
- val.instance_exec(&block) if block
32
- val
33
+ unless val
34
+ val = field_block.call(*args)
35
+ instance_variable_set(ivar, val)
36
+ end
37
+
38
+ val.instance_exec(&block) if block
39
+ val
40
+ end
33
41
  end
34
- end
35
42
 
36
- def array_field(field, accessor = nil, &field_block)
37
- accessor ||= Inflector.pluralize(field.to_s).to_sym
43
+ def key_value_field(field, format:)
44
+ __fields__[:key_value] << field
45
+
46
+ define_method(field) do |*args, &block|
47
+ ivar = :"@#{field}"
48
+ val = instance_variable_get(ivar)
38
49
 
39
- define_method(field) do |elem_name = nil, &block|
40
- ivar = :"@#{accessor}"
41
- arr = instance_variable_get(ivar)
50
+ unless val
51
+ val = ::KubeDSL::KeyValueFields.new(format: format)
52
+ instance_variable_set(ivar, val)
53
+ end
42
54
 
43
- # use a hash so elements can be named and modified later
44
- unless arr
45
- arr = {}
46
- instance_variable_set(ivar, arr)
55
+ val.instance_exec(&block) if block
56
+ val
47
57
  end
58
+ end
59
+
60
+ def array_field(field, accessor = nil, &field_block)
61
+ accessor ||= Inflector.pluralize(field.to_s).to_sym
62
+
63
+ __fields__[:array] << { field: field, accessor: accessor }
48
64
 
49
- if elem_name && elem = arr[elem_name]
50
- elem.instance_eval(&block) if block
51
- else
52
- if field_block
53
- new_val = field_block.call
54
- new_val.instance_eval(&block) if block
65
+ define_method(field) do |elem_name = nil, &block|
66
+ ivar = :"@#{accessor}"
67
+ arr = instance_variable_get(ivar)
68
+
69
+ # use a hash so elements can be named and modified later
70
+ unless arr
71
+ arr = {}
72
+ instance_variable_set(ivar, arr)
73
+ end
74
+
75
+ if elem_name && elem = arr[elem_name]
76
+ elem.instance_eval(&block) if block
77
+ elem
55
78
  else
56
- new_val = block.call if block
79
+ if field_block
80
+ new_val = field_block.call
81
+ new_val.instance_eval(&block) if block
82
+ else
83
+ new_val = block.call if block
84
+ end
85
+
86
+ arr[elem_name || SecureRandom.hex] = new_val
87
+ new_val
57
88
  end
89
+ end
58
90
 
59
- arr[elem_name || SecureRandom.hex] = new_val
91
+ define_method(accessor) do
92
+ ivar = :"@#{accessor}"
93
+ arr = instance_variable_get(ivar)
94
+
95
+ unless arr
96
+ arr = {}
97
+ instance_variable_set(ivar, arr)
98
+ end
99
+
100
+ arr.values
60
101
  end
102
+ end
61
103
 
62
- nil
104
+ def __fields__
105
+ @__fields__ ||= {
106
+ value: [],
107
+ object: [],
108
+ key_value: [],
109
+ array: []
110
+ }
63
111
  end
112
+ end
113
+
114
+
115
+ module InstanceMethods
116
+ def merge!(other, fields: nil)
117
+ unless other.is_a?(self.class)
118
+ raise ClassMismatchError, 'cannot merge two objects of '\
119
+ "different types, namely '#{self.class}' and '#{other.class}'"
120
+ end
121
+
122
+ (self.class.__fields__[:value] + self.class.__fields__[:object]).each do |field|
123
+ next if fields && !fields.include?(field)
124
+ ivar = :"@#{field}"
125
+
126
+ if other_val = other.instance_variable_get(ivar)
127
+ instance_variable_set(ivar, other_val)
128
+ end
129
+ end
130
+
131
+ self.class.__fields__[:key_value].each do |field|
132
+ next if fields && !fields.include?(field)
133
+ send(field).merge!(other.send(field))
134
+ end
64
135
 
65
- define_method(accessor) do
66
- ivar = :"@#{accessor}"
67
- arr = instance_variable_get(ivar)
136
+ self.class.__fields__[:array].each do |af|
137
+ next if fields && !fields.include?(af[:field])
138
+ ivar = :"@#{af[:accessor]}"
139
+
140
+ arrs = instance_variable_get(ivar) || {}
141
+
142
+ arrs.merge!(
143
+ other.instance_variable_get(ivar) || {}
144
+ )
68
145
 
69
- unless arr
70
- arr = {}
71
- instance_variable_set(ivar, arr)
146
+ instance_variable_set(ivar, arrs)
72
147
  end
148
+ end
73
149
 
74
- arr.values
150
+ def merge(other, fields)
151
+ self.class.new.tap do |result|
152
+ result.merge!(self)
153
+ result.merge!(other, fields: fields)
154
+ end
75
155
  end
76
156
  end
157
+
158
+
159
+ def self.extended(base)
160
+ base.include(InstanceMethods)
161
+ base.extend(ClassMethods)
162
+ end
77
163
  end
78
164
  end