Adding CustomResourceDefinition Job and StatefulSet. 63/12163/2
authornaman.gupta <naman.gupta@samsung.com>
Fri, 1 Dec 2023 18:27:53 +0000 (23:57 +0530)
committerThoralf Czichy <thoralf.czichy@nokia.com>
Thu, 7 Dec 2023 09:37:16 +0000 (09:37 +0000)
Adding CustomResourceDefinition, Job, EndPoints and StatefulSet.

Change-Id: I1ed0711e4684cea9ceceee372857deddfcae9dee
Signed-off-by: naman.gupta <naman.gupta@samsung.com>
depRicKubernetesOperator/internal/controller/getCustomResourceDefinition.go [new file with mode: 0644]
depRicKubernetesOperator/internal/controller/getEndPoints.go [new file with mode: 0644]
depRicKubernetesOperator/internal/controller/getJob.go [new file with mode: 0644]
depRicKubernetesOperator/internal/controller/getStatefulSet.go [new file with mode: 0644]

diff --git a/depRicKubernetesOperator/internal/controller/getCustomResourceDefinition.go b/depRicKubernetesOperator/internal/controller/getCustomResourceDefinition.go
new file mode 100644 (file)
index 0000000..cde8a44
--- /dev/null
@@ -0,0 +1,989 @@
+package controller\r
+\r
+import (\r
+       "context"\r
+       "fmt"\r
+)\r
+\r
+func GetCustomResourceDefinition() []*unstructured.Unstructured {\r
+\r
+       customResourceDefinition1 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "apiVersion": "apiextensions.k8s.io/v1beta1",\r
+                       "kind":       "CustomResourceDefinition",\r
+                       "metadata": map[string]interface{}{\r
+                               "labels": map[string]interface{}{\r
+                                       "app.kubernetes.io/instance":   "release-name",\r
+                                       "app.kubernetes.io/managed-by": "Helm",\r
+                                       "app.kubernetes.io/name":       "kong",\r
+                                       "app.kubernetes.io/version":    "1.4",\r
+                                       "helm.sh/chart":                "kong-0.36.6",\r
+                               },\r
+                               "name": "kongconsumers.configuration.konghq.com",\r
+                       },\r
+                       "spec": map[string]interface{}{\r
+                               "group": "configuration.konghq.com",\r
+                               "names": map[string]interface{}{\r
+                                       "kind":   "KongConsumer",\r
+                                       "plural": "kongconsumers",\r
+                                       "shortNames": []interface{}{\r
+                                               "kc",\r
+                                       },\r
+                               },\r
+                               "scope": "Namespaced",\r
+                               "validation": map[string]interface{}{\r
+                                       "openAPIV3Schema": map[string]interface{}{\r
+                                               "properties": map[string]interface{}{\r
+                                                       "credentials": map[string]interface{}{\r
+                                                               "items": map[string]interface{}{\r
+                                                                       "type": "string",\r
+                                                               },\r
+                                                               "type": "array",\r
+                                                       },\r
+                                                       "custom_id": map[string]interface{}{\r
+                                                               "type": "string",\r
+                                                       },\r
+                                                       "username": map[string]interface{}{\r
+                                                               "type": "string",\r
+                                                       },\r
+                                               },\r
+                                       },\r
+                               },\r
+                               "version": "v1",\r
+                               "additionalPrinterColumns": []interface{}{\r
+                                       map[string]interface{}{\r
+                                               "JSONPath":    ".username",\r
+                                               "description": "Username of a Kong Consumer",\r
+                                               "name":        "Username",\r
+                                               "type":        "string",\r
+                                       },\r
+                                       map[string]interface{}{\r
+                                               "type":        "date",\r
+                                               "JSONPath":    ".metadata.creationTimestamp",\r
+                                               "description": "Age",\r
+                                               "name":        "Age",\r
+                                       },\r
+                               },\r
+                       },\r
+               },\r
+       }\r
+\r
+       customResourceDefinition2 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "apiVersion": "apiextensions.k8s.io/v1beta1",\r
+                       "kind":       "CustomResourceDefinition",\r
+                       "metadata": map[string]interface{}{\r
+                               "labels": map[string]interface{}{\r
+                                       "app.kubernetes.io/instance":   "release-name",\r
+                                       "app.kubernetes.io/managed-by": "Helm",\r
+                                       "app.kubernetes.io/name":       "kong",\r
+                                       "app.kubernetes.io/version":    "1.4",\r
+                                       "helm.sh/chart":                "kong-0.36.6",\r
+                               },\r
+                               "name": "kongcredentials.configuration.konghq.com",\r
+                       },\r
+                       "spec": map[string]interface{}{\r
+                               "version": "v1",\r
+                               "additionalPrinterColumns": []interface{}{\r
+                                       map[string]interface{}{\r
+                                               "JSONPath":    ".type",\r
+                                               "description": "Type of credential",\r
+                                               "name":        "Credential-type",\r
+                                               "type":        "string",\r
+                                       },\r
+                                       map[string]interface{}{\r
+                                               "JSONPath":    ".metadata.creationTimestamp",\r
+                                               "description": "Age",\r
+                                               "name":        "Age",\r
+                                               "type":        "date",\r
+                                       },\r
+                                       map[string]interface{}{\r
+                                               "type":        "string",\r
+                                               "JSONPath":    ".consumerRef",\r
+                                               "description": "Owner of the credential",\r
+                                               "name":        "Consumer-Ref",\r
+                                       },\r
+                               },\r
+                               "group": "configuration.konghq.com",\r
+                               "names": map[string]interface{}{\r
+                                       "kind":   "KongCredential",\r
+                                       "plural": "kongcredentials",\r
+                               },\r
+                               "scope": "Namespaced",\r
+                               "validation": map[string]interface{}{\r
+                                       "openAPIV3Schema": map[string]interface{}{\r
+                                               "properties": map[string]interface{}{\r
+                                                       "consumerRef": map[string]interface{}{\r
+                                                               "type": "string",\r
+                                                       },\r
+                                                       "type": map[string]interface{}{\r
+                                                               "type": "string",\r
+                                                       },\r
+                                               },\r
+                                               "required": []interface{}{\r
+                                                       "consumerRef",\r
+                                                       "type",\r
+                                               },\r
+                                       },\r
+                               },\r
+                       },\r
+               },\r
+       }\r
+\r
+       customResourceDefinition3 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "spec": map[string]interface{}{\r
+                               "names": map[string]interface{}{\r
+                                       "kind":   "KongPlugin",\r
+                                       "plural": "kongplugins",\r
+                                       "shortNames": []interface{}{\r
+                                               "kp",\r
+                                       },\r
+                               },\r
+                               "scope": "Namespaced",\r
+                               "validation": map[string]interface{}{\r
+                                       "openAPIV3Schema": map[string]interface{}{\r
+                                               "properties": map[string]interface{}{\r
+                                                       "protocols": map[string]interface{}{\r
+                                                               "items": map[string]interface{}{\r
+                                                                       "type": "string",\r
+                                                                       "enum": []interface{}{\r
+                                                                               "http",\r
+                                                                               "https",\r
+                                                                               "tcp",\r
+                                                                               "tls",\r
+                                                                               "grpc",\r
+                                                                               "grpcs",\r
+                                                                       },\r
+                                                               },\r
+                                                               "type": "array",\r
+                                                       },\r
+                                                       "run_on": map[string]interface{}{\r
+                                                               "enum": []interface{}{\r
+                                                                       "first",\r
+                                                                       "second",\r
+                                                                       "all",\r
+                                                               },\r
+                                                               "type": "string",\r
+                                                       },\r
+                                                       "config": map[string]interface{}{\r
+                                                               "type": "object",\r
+                                                       },\r
+                                                       "disabled": map[string]interface{}{\r
+                                                               "type": "boolean",\r
+                                                       },\r
+                                                       "plugin": map[string]interface{}{\r
+                                                               "type": "string",\r
+                                                       },\r
+                                               },\r
+                                               "required": []interface{}{\r
+                                                       "plugin",\r
+                                               },\r
+                                       },\r
+                               },\r
+                               "version": "v1",\r
+                               "additionalPrinterColumns": []interface{}{\r
+                                       map[string]interface{}{\r
+                                               "JSONPath":    ".plugin",\r
+                                               "description": "Name of the plugin",\r
+                                               "name":        "Plugin-Type",\r
+                                               "type":        "string",\r
+                                       },\r
+                                       map[string]interface{}{\r
+                                               "description": "Age",\r
+                                               "name":        "Age",\r
+                                               "type":        "date",\r
+                                               "JSONPath":    ".metadata.creationTimestamp",\r
+                                       },\r
+                                       map[string]interface{}{\r
+                                               "JSONPath":    ".disabled",\r
+                                               "description": "Indicates if the plugin is disabled",\r
+                                               "name":        "Disabled",\r
+                                               "priority":    1,\r
+                                               "type":        "boolean",\r
+                                       },\r
+                                       map[string]interface{}{\r
+                                               "JSONPath":    ".config",\r
+                                               "description": "Configuration of the plugin",\r
+                                               "name":        "Config",\r
+                                               "priority":    1,\r
+                                               "type":        "string",\r
+                                       },\r
+                               },\r
+                               "group": "configuration.konghq.com",\r
+                       },\r
+                       "apiVersion": "apiextensions.k8s.io/v1beta1",\r
+                       "kind":       "CustomResourceDefinition",\r
+                       "metadata": map[string]interface{}{\r
+                               "labels": map[string]interface{}{\r
+                                       "app.kubernetes.io/instance":   "release-name",\r
+                                       "app.kubernetes.io/managed-by": "Helm",\r
+                                       "app.kubernetes.io/name":       "kong",\r
+                                       "app.kubernetes.io/version":    "1.4",\r
+                                       "helm.sh/chart":                "kong-0.36.6",\r
+                               },\r
+                               "name": "kongplugins.configuration.konghq.com",\r
+                       },\r
+               },\r
+       }\r
+\r
+       customResourceDefinition4 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "spec": map[string]interface{}{\r
+                               "version": "v1",\r
+                               "group":   "configuration.konghq.com",\r
+                               "names": map[string]interface{}{\r
+                                       "plural": "kongingresses",\r
+                                       "shortNames": []interface{}{\r
+                                               "ki",\r
+                                       },\r
+                                       "kind": "KongIngress",\r
+                               },\r
+                               "scope": "Namespaced",\r
+                               "validation": map[string]interface{}{\r
+                                       "openAPIV3Schema": map[string]interface{}{\r
+                                               "properties": map[string]interface{}{\r
+                                                       "upstream": map[string]interface{}{\r
+                                                               "properties": map[string]interface{}{\r
+                                                                       "hash_fallback_header": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "hash_on": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "hash_on_cookie": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "hash_on_cookie_path": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "healthchecks": map[string]interface{}{\r
+                                                                               "type": "object",\r
+                                                                               "properties": map[string]interface{}{\r
+                                                                                       "passive": map[string]interface{}{\r
+                                                                                               "properties": map[string]interface{}{\r
+                                                                                                       "healthy": map[string]interface{}{\r
+                                                                                                               "properties": map[string]interface{}{\r
+                                                                                                                       "http_statuses": map[string]interface{}{\r
+                                                                                                                               "items": map[string]interface{}{\r
+                                                                                                                                       "type": "integer",\r
+                                                                                                                               },\r
+                                                                                                                               "type": "array",\r
+                                                                                                                       },\r
+                                                                                                                       "interval": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "successes": map[string]interface{}{\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                       },\r
+                                                                                                               },\r
+                                                                                                               "type": "object",\r
+                                                                                                       },\r
+                                                                                                       "unhealthy": map[string]interface{}{\r
+                                                                                                               "type": "object",\r
+                                                                                                               "properties": map[string]interface{}{\r
+                                                                                                                       "timeout": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "http_failures": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "http_statuses": map[string]interface{}{\r
+                                                                                                                               "items": map[string]interface{}{\r
+                                                                                                                                       "type": "integer",\r
+                                                                                                                               },\r
+                                                                                                                               "type": "array",\r
+                                                                                                                       },\r
+                                                                                                                       "interval": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "tcp_failures": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                               },\r
+                                                                                                       },\r
+                                                                                               },\r
+                                                                                               "type": "object",\r
+                                                                                       },\r
+                                                                                       "active": map[string]interface{}{\r
+                                                                                               "properties": map[string]interface{}{\r
+                                                                                                       "concurrency": map[string]interface{}{\r
+                                                                                                               "minimum": 1,\r
+                                                                                                               "type":    "integer",\r
+                                                                                                       },\r
+                                                                                                       "healthy": map[string]interface{}{\r
+                                                                                                               "properties": map[string]interface{}{\r
+                                                                                                                       "http_statuses": map[string]interface{}{\r
+                                                                                                                               "items": map[string]interface{}{\r
+                                                                                                                                       "type": "integer",\r
+                                                                                                                               },\r
+                                                                                                                               "type": "array",\r
+                                                                                                                       },\r
+                                                                                                                       "interval": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "successes": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                               },\r
+                                                                                                               "type": "object",\r
+                                                                                                       },\r
+                                                                                                       "http_path": map[string]interface{}{\r
+                                                                                                               "pattern": "^/.*$",\r
+                                                                                                               "type":    "string",\r
+                                                                                                       },\r
+                                                                                                       "timeout": map[string]interface{}{\r
+                                                                                                               "minimum": 0,\r
+                                                                                                               "type":    "integer",\r
+                                                                                                       },\r
+                                                                                                       "unhealthy": map[string]interface{}{\r
+                                                                                                               "type": "object",\r
+                                                                                                               "properties": map[string]interface{}{\r
+                                                                                                                       "timeout": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "http_failures": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "http_statuses": map[string]interface{}{\r
+                                                                                                                               "items": map[string]interface{}{\r
+                                                                                                                                       "type": "integer",\r
+                                                                                                                               },\r
+                                                                                                                               "type": "array",\r
+                                                                                                                       },\r
+                                                                                                                       "interval": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "tcp_failures": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                               },\r
+                                                                                                       },\r
+                                                                                               },\r
+                                                                                               "type": "object",\r
+                                                                                       },\r
+                                                                               },\r
+                                                                       },\r
+                                                                       "slots": map[string]interface{}{\r
+                                                                               "minimum": 10,\r
+                                                                               "type":    "integer",\r
+                                                                       },\r
+                                                                       "algorithm": map[string]interface{}{\r
+                                                                               "enum": []interface{}{\r
+                                                                                       "round-robin",\r
+                                                                                       "consistent-hashing",\r
+                                                                                       "least-connections",\r
+                                                                               },\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "hash_fallback": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "hash_on_header": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "host_header": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                               },\r
+                                                               "type": "object",\r
+                                                       },\r
+                                                       "proxy": map[string]interface{}{\r
+                                                               "properties": map[string]interface{}{\r
+                                                                       "connect_timeout": map[string]interface{}{\r
+                                                                               "minimum": 0,\r
+                                                                               "type":    "integer",\r
+                                                                       },\r
+                                                                       "path": map[string]interface{}{\r
+                                                                               "pattern": "^/.*$",\r
+                                                                               "type":    "string",\r
+                                                                       },\r
+                                                                       "protocol": map[string]interface{}{\r
+                                                                               "enum": []interface{}{\r
+                                                                                       "http",\r
+                                                                                       "https",\r
+                                                                                       "grpc",\r
+                                                                                       "grpcs",\r
+                                                                               },\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "read_timeout": map[string]interface{}{\r
+                                                                               "minimum": 0,\r
+                                                                               "type":    "integer",\r
+                                                                       },\r
+                                                                       "retries": map[string]interface{}{\r
+                                                                               "minimum": 0,\r
+                                                                               "type":    "integer",\r
+                                                                       },\r
+                                                                       "write_timeout": map[string]interface{}{\r
+                                                                               "minimum": 0,\r
+                                                                               "type":    "integer",\r
+                                                                       },\r
+                                                               },\r
+                                                               "type": "object",\r
+                                                       },\r
+                                                       "route": map[string]interface{}{\r
+                                                               "properties": map[string]interface{}{\r
+                                                                       "protocols": map[string]interface{}{\r
+                                                                               "items": map[string]interface{}{\r
+                                                                                       "type": "string",\r
+                                                                                       "enum": []interface{}{\r
+                                                                                               "http",\r
+                                                                                               "https",\r
+                                                                                               "grpc",\r
+                                                                                               "grpcs",\r
+                                                                                       },\r
+                                                                               },\r
+                                                                               "type": "array",\r
+                                                                       },\r
+                                                                       "regex_priority": map[string]interface{}{\r
+                                                                               "type": "integer",\r
+                                                                       },\r
+                                                                       "strip_path": map[string]interface{}{\r
+                                                                               "type": "boolean",\r
+                                                                       },\r
+                                                                       "headers": map[string]interface{}{\r
+                                                                               "additionalProperties": map[string]interface{}{\r
+                                                                                       "items": map[string]interface{}{\r
+                                                                                               "type": "string",\r
+                                                                                       },\r
+                                                                                       "type": "array",\r
+                                                                               },\r
+                                                                               "type": "object",\r
+                                                                       },\r
+                                                                       "https_redirect_status_code": map[string]interface{}{\r
+                                                                               "type": "integer",\r
+                                                                       },\r
+                                                                       "methods": map[string]interface{}{\r
+                                                                               "items": map[string]interface{}{\r
+                                                                                       "type": "string",\r
+                                                                               },\r
+                                                                               "type": "array",\r
+                                                                       },\r
+                                                                       "preserve_host": map[string]interface{}{\r
+                                                                               "type": "boolean",\r
+                                                                       },\r
+                                                               },\r
+                                                       },\r
+                                               },\r
+                                       },\r
+                               },\r
+                       },\r
+                       "apiVersion": "apiextensions.k8s.io/v1beta1",\r
+                       "kind":       "CustomResourceDefinition",\r
+                       "metadata": map[string]interface{}{\r
+                               "labels": map[string]interface{}{\r
+                                       "helm.sh/chart":                "kong-0.36.6",\r
+                                       "app.kubernetes.io/instance":   "release-name",\r
+                                       "app.kubernetes.io/managed-by": "Helm",\r
+                                       "app.kubernetes.io/name":       "kong",\r
+                                       "app.kubernetes.io/version":    "1.4",\r
+                               },\r
+                               "name": "kongingresses.configuration.konghq.com",\r
+                       },\r
+               },\r
+       }\r
+\r
+       customResourceDefinition5 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "apiVersion": "apiextensions.k8s.io/v1beta1",\r
+                       "kind":       "CustomResourceDefinition",\r
+                       "metadata": map[string]interface{}{\r
+                               "labels": map[string]interface{}{\r
+                                       "app.kubernetes.io/instance":   "release-name",\r
+                                       "app.kubernetes.io/managed-by": "Helm",\r
+                                       "app.kubernetes.io/name":       "kong",\r
+                                       "app.kubernetes.io/version":    "1.4",\r
+                                       "helm.sh/chart":                "kong-0.36.6",\r
+                               },\r
+                               "name": "kongconsumers.configuration.konghq.com",\r
+                       },\r
+                       "spec": map[string]interface{}{\r
+                               "group": "configuration.konghq.com",\r
+                               "names": map[string]interface{}{\r
+                                       "kind":   "KongConsumer",\r
+                                       "plural": "kongconsumers",\r
+                                       "shortNames": []interface{}{\r
+                                               "kc",\r
+                                       },\r
+                               },\r
+                               "scope": "Namespaced",\r
+                               "validation": map[string]interface{}{\r
+                                       "openAPIV3Schema": map[string]interface{}{\r
+                                               "properties": map[string]interface{}{\r
+                                                       "credentials": map[string]interface{}{\r
+                                                               "type": "array",\r
+                                                               "items": map[string]interface{}{\r
+                                                                       "type": "string",\r
+                                                               },\r
+                                                       },\r
+                                                       "custom_id": map[string]interface{}{\r
+                                                               "type": "string",\r
+                                                       },\r
+                                                       "username": map[string]interface{}{\r
+                                                               "type": "string",\r
+                                                       },\r
+                                               },\r
+                                       },\r
+                               },\r
+                               "version": "v1",\r
+                               "additionalPrinterColumns": []interface{}{\r
+                                       map[string]interface{}{\r
+                                               "JSONPath":    ".username",\r
+                                               "description": "Username of a Kong Consumer",\r
+                                               "name":        "Username",\r
+                                               "type":        "string",\r
+                                       },\r
+                                       map[string]interface{}{\r
+                                               "JSONPath":    ".metadata.creationTimestamp",\r
+                                               "description": "Age",\r
+                                               "name":        "Age",\r
+                                               "type":        "date",\r
+                                       },\r
+                               },\r
+                       },\r
+               },\r
+       }\r
+\r
+       customResourceDefinition6 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "apiVersion": "apiextensions.k8s.io/v1beta1",\r
+                       "kind":       "CustomResourceDefinition",\r
+                       "metadata": map[string]interface{}{\r
+                               "labels": map[string]interface{}{\r
+                                       "app.kubernetes.io/managed-by": "Helm",\r
+                                       "app.kubernetes.io/name":       "kong",\r
+                                       "app.kubernetes.io/version":    "1.4",\r
+                                       "helm.sh/chart":                "kong-0.36.6",\r
+                                       "app.kubernetes.io/instance":   "release-name",\r
+                               },\r
+                               "name": "kongcredentials.configuration.konghq.com",\r
+                       },\r
+                       "spec": map[string]interface{}{\r
+                               "additionalPrinterColumns": []interface{}{\r
+                                       map[string]interface{}{\r
+                                               "JSONPath":    ".type",\r
+                                               "description": "Type of credential",\r
+                                               "name":        "Credential-type",\r
+                                               "type":        "string",\r
+                                       },\r
+                                       map[string]interface{}{\r
+                                               "description": "Age",\r
+                                               "name":        "Age",\r
+                                               "type":        "date",\r
+                                               "JSONPath":    ".metadata.creationTimestamp",\r
+                                       },\r
+                                       map[string]interface{}{\r
+                                               "JSONPath":    ".consumerRef",\r
+                                               "description": "Owner of the credential",\r
+                                               "name":        "Consumer-Ref",\r
+                                               "type":        "string",\r
+                                       },\r
+                               },\r
+                               "group": "configuration.konghq.com",\r
+                               "names": map[string]interface{}{\r
+                                       "kind":   "KongCredential",\r
+                                       "plural": "kongcredentials",\r
+                               },\r
+                               "scope": "Namespaced",\r
+                               "validation": map[string]interface{}{\r
+                                       "openAPIV3Schema": map[string]interface{}{\r
+                                               "properties": map[string]interface{}{\r
+                                                       "consumerRef": map[string]interface{}{\r
+                                                               "type": "string",\r
+                                                       },\r
+                                                       "type": map[string]interface{}{\r
+                                                               "type": "string",\r
+                                                       },\r
+                                               },\r
+                                               "required": []interface{}{\r
+                                                       "consumerRef",\r
+                                                       "type",\r
+                                               },\r
+                                       },\r
+                               },\r
+                               "version": "v1",\r
+                       },\r
+               },\r
+       }\r
+\r
+       customResourceDefinition7 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "apiVersion": "apiextensions.k8s.io/v1beta1",\r
+                       "kind":       "CustomResourceDefinition",\r
+                       "metadata": map[string]interface{}{\r
+                               "labels": map[string]interface{}{\r
+                                       "app.kubernetes.io/instance":   "release-name",\r
+                                       "app.kubernetes.io/managed-by": "Helm",\r
+                                       "app.kubernetes.io/name":       "kong",\r
+                                       "app.kubernetes.io/version":    "1.4",\r
+                                       "helm.sh/chart":                "kong-0.36.6",\r
+                               },\r
+                               "name": "kongplugins.configuration.konghq.com",\r
+                       },\r
+                       "spec": map[string]interface{}{\r
+                               "names": map[string]interface{}{\r
+                                       "kind":   "KongPlugin",\r
+                                       "plural": "kongplugins",\r
+                                       "shortNames": []interface{}{\r
+                                               "kp",\r
+                                       },\r
+                               },\r
+                               "scope": "Namespaced",\r
+                               "validation": map[string]interface{}{\r
+                                       "openAPIV3Schema": map[string]interface{}{\r
+                                               "properties": map[string]interface{}{\r
+                                                       "config": map[string]interface{}{\r
+                                                               "type": "object",\r
+                                                       },\r
+                                                       "disabled": map[string]interface{}{\r
+                                                               "type": "boolean",\r
+                                                       },\r
+                                                       "plugin": map[string]interface{}{\r
+                                                               "type": "string",\r
+                                                       },\r
+                                                       "protocols": map[string]interface{}{\r
+                                                               "items": map[string]interface{}{\r
+                                                                       "enum": []interface{}{\r
+                                                                               "http",\r
+                                                                               "https",\r
+                                                                               "tcp",\r
+                                                                               "tls",\r
+                                                                               "grpc",\r
+                                                                               "grpcs",\r
+                                                                       },\r
+                                                                       "type": "string",\r
+                                                               },\r
+                                                               "type": "array",\r
+                                                       },\r
+                                                       "run_on": map[string]interface{}{\r
+                                                               "type": "string",\r
+                                                               "enum": []interface{}{\r
+                                                                       "first",\r
+                                                                       "second",\r
+                                                                       "all",\r
+                                                               },\r
+                                                       },\r
+                                               },\r
+                                               "required": []interface{}{\r
+                                                       "plugin",\r
+                                               },\r
+                                       },\r
+                               },\r
+                               "version": "v1",\r
+                               "additionalPrinterColumns": []interface{}{\r
+                                       map[string]interface{}{\r
+                                               "description": "Name of the plugin",\r
+                                               "name":        "Plugin-Type",\r
+                                               "type":        "string",\r
+                                               "JSONPath":    ".plugin",\r
+                                       },\r
+                                       map[string]interface{}{\r
+                                               "description": "Age",\r
+                                               "name":        "Age",\r
+                                               "type":        "date",\r
+                                               "JSONPath":    ".metadata.creationTimestamp",\r
+                                       },\r
+                                       map[string]interface{}{\r
+                                               "priority":    1,\r
+                                               "type":        "boolean",\r
+                                               "JSONPath":    ".disabled",\r
+                                               "description": "Indicates if the plugin is disabled",\r
+                                               "name":        "Disabled",\r
+                                       },\r
+                                       map[string]interface{}{\r
+                                               "JSONPath":    ".config",\r
+                                               "description": "Configuration of the plugin",\r
+                                               "name":        "Config",\r
+                                               "priority":    1,\r
+                                               "type":        "string",\r
+                                       },\r
+                               },\r
+                               "group": "configuration.konghq.com",\r
+                       },\r
+               },\r
+       }\r
+\r
+       customResourceDefinition8 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "apiVersion": "apiextensions.k8s.io/v1beta1",\r
+                       "kind":       "CustomResourceDefinition",\r
+                       "metadata": map[string]interface{}{\r
+                               "labels": map[string]interface{}{\r
+                                       "helm.sh/chart":                "kong-0.36.6",\r
+                                       "app.kubernetes.io/instance":   "release-name",\r
+                                       "app.kubernetes.io/managed-by": "Helm",\r
+                                       "app.kubernetes.io/name":       "kong",\r
+                                       "app.kubernetes.io/version":    "1.4",\r
+                               },\r
+                               "name": "kongingresses.configuration.konghq.com",\r
+                       },\r
+                       "spec": map[string]interface{}{\r
+                               "group": "configuration.konghq.com",\r
+                               "names": map[string]interface{}{\r
+                                       "plural": "kongingresses",\r
+                                       "shortNames": []interface{}{\r
+                                               "ki",\r
+                                       },\r
+                                       "kind": "KongIngress",\r
+                               },\r
+                               "scope": "Namespaced",\r
+                               "validation": map[string]interface{}{\r
+                                       "openAPIV3Schema": map[string]interface{}{\r
+                                               "properties": map[string]interface{}{\r
+                                                       "proxy": map[string]interface{}{\r
+                                                               "properties": map[string]interface{}{\r
+                                                                       "path": map[string]interface{}{\r
+                                                                               "pattern": "^/.*$",\r
+                                                                               "type":    "string",\r
+                                                                       },\r
+                                                                       "protocol": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                               "enum": []interface{}{\r
+                                                                                       "http",\r
+                                                                                       "https",\r
+                                                                                       "grpc",\r
+                                                                                       "grpcs",\r
+                                                                               },\r
+                                                                       },\r
+                                                                       "read_timeout": map[string]interface{}{\r
+                                                                               "minimum": 0,\r
+                                                                               "type":    "integer",\r
+                                                                       },\r
+                                                                       "retries": map[string]interface{}{\r
+                                                                               "minimum": 0,\r
+                                                                               "type":    "integer",\r
+                                                                       },\r
+                                                                       "write_timeout": map[string]interface{}{\r
+                                                                               "minimum": 0,\r
+                                                                               "type":    "integer",\r
+                                                                       },\r
+                                                                       "connect_timeout": map[string]interface{}{\r
+                                                                               "minimum": 0,\r
+                                                                               "type":    "integer",\r
+                                                                       },\r
+                                                               },\r
+                                                               "type": "object",\r
+                                                       },\r
+                                                       "route": map[string]interface{}{\r
+                                                               "properties": map[string]interface{}{\r
+                                                                       "https_redirect_status_code": map[string]interface{}{\r
+                                                                               "type": "integer",\r
+                                                                       },\r
+                                                                       "methods": map[string]interface{}{\r
+                                                                               "items": map[string]interface{}{\r
+                                                                                       "type": "string",\r
+                                                                               },\r
+                                                                               "type": "array",\r
+                                                                       },\r
+                                                                       "preserve_host": map[string]interface{}{\r
+                                                                               "type": "boolean",\r
+                                                                       },\r
+                                                                       "protocols": map[string]interface{}{\r
+                                                                               "items": map[string]interface{}{\r
+                                                                                       "type": "string",\r
+                                                                                       "enum": []interface{}{\r
+                                                                                               "http",\r
+                                                                                               "https",\r
+                                                                                               "grpc",\r
+                                                                                               "grpcs",\r
+                                                                                       },\r
+                                                                               },\r
+                                                                               "type": "array",\r
+                                                                       },\r
+                                                                       "regex_priority": map[string]interface{}{\r
+                                                                               "type": "integer",\r
+                                                                       },\r
+                                                                       "strip_path": map[string]interface{}{\r
+                                                                               "type": "boolean",\r
+                                                                       },\r
+                                                                       "headers": map[string]interface{}{\r
+                                                                               "additionalProperties": map[string]interface{}{\r
+                                                                                       "items": map[string]interface{}{\r
+                                                                                               "type": "string",\r
+                                                                                       },\r
+                                                                                       "type": "array",\r
+                                                                               },\r
+                                                                               "type": "object",\r
+                                                                       },\r
+                                                               },\r
+                                                       },\r
+                                                       "upstream": map[string]interface{}{\r
+                                                               "properties": map[string]interface{}{\r
+                                                                       "algorithm": map[string]interface{}{\r
+                                                                               "enum": []interface{}{\r
+                                                                                       "round-robin",\r
+                                                                                       "consistent-hashing",\r
+                                                                                       "least-connections",\r
+                                                                               },\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "hash_fallback_header": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "hash_on_cookie": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "hash_on_cookie_path": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "host_header": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "hash_fallback": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "hash_on": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "hash_on_header": map[string]interface{}{\r
+                                                                               "type": "string",\r
+                                                                       },\r
+                                                                       "healthchecks": map[string]interface{}{\r
+                                                                               "type": "object",\r
+                                                                               "properties": map[string]interface{}{\r
+                                                                                       "active": map[string]interface{}{\r
+                                                                                               "properties": map[string]interface{}{\r
+                                                                                                       "timeout": map[string]interface{}{\r
+                                                                                                               "minimum": 0,\r
+                                                                                                               "type":    "integer",\r
+                                                                                                       },\r
+                                                                                                       "unhealthy": map[string]interface{}{\r
+                                                                                                               "properties": map[string]interface{}{\r
+                                                                                                                       "http_failures": map[string]interface{}{\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                       },\r
+                                                                                                                       "http_statuses": map[string]interface{}{\r
+                                                                                                                               "items": map[string]interface{}{\r
+                                                                                                                                       "type": "integer",\r
+                                                                                                                               },\r
+                                                                                                                               "type": "array",\r
+                                                                                                                       },\r
+                                                                                                                       "interval": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "tcp_failures": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "timeout": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                               },\r
+                                                                                                               "type": "object",\r
+                                                                                                       },\r
+                                                                                                       "concurrency": map[string]interface{}{\r
+                                                                                                               "minimum": 1,\r
+                                                                                                               "type":    "integer",\r
+                                                                                                       },\r
+                                                                                                       "healthy": map[string]interface{}{\r
+                                                                                                               "properties": map[string]interface{}{\r
+                                                                                                                       "http_statuses": map[string]interface{}{\r
+                                                                                                                               "items": map[string]interface{}{\r
+                                                                                                                                       "type": "integer",\r
+                                                                                                                               },\r
+                                                                                                                               "type": "array",\r
+                                                                                                                       },\r
+                                                                                                                       "interval": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "successes": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                               },\r
+                                                                                                               "type": "object",\r
+                                                                                                       },\r
+                                                                                                       "http_path": map[string]interface{}{\r
+                                                                                                               "pattern": "^/.*$",\r
+                                                                                                               "type":    "string",\r
+                                                                                                       },\r
+                                                                                               },\r
+                                                                                               "type": "object",\r
+                                                                                       },\r
+                                                                                       "passive": map[string]interface{}{\r
+                                                                                               "properties": map[string]interface{}{\r
+                                                                                                       "healthy": map[string]interface{}{\r
+                                                                                                               "type": "object",\r
+                                                                                                               "properties": map[string]interface{}{\r
+                                                                                                                       "http_statuses": map[string]interface{}{\r
+                                                                                                                               "items": map[string]interface{}{\r
+                                                                                                                                       "type": "integer",\r
+                                                                                                                               },\r
+                                                                                                                               "type": "array",\r
+                                                                                                                       },\r
+                                                                                                                       "interval": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "successes": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                               },\r
+                                                                                                       },\r
+                                                                                                       "unhealthy": map[string]interface{}{\r
+                                                                                                               "type": "object",\r
+                                                                                                               "properties": map[string]interface{}{\r
+                                                                                                                       "http_statuses": map[string]interface{}{\r
+                                                                                                                               "type": "array",\r
+                                                                                                                               "items": map[string]interface{}{\r
+                                                                                                                                       "type": "integer",\r
+                                                                                                                               },\r
+                                                                                                                       },\r
+                                                                                                                       "interval": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "tcp_failures": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "timeout": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                                       "http_failures": map[string]interface{}{\r
+                                                                                                                               "minimum": 0,\r
+                                                                                                                               "type":    "integer",\r
+                                                                                                                       },\r
+                                                                                                               },\r
+                                                                                                       },\r
+                                                                                               },\r
+                                                                                               "type": "object",\r
+                                                                                       },\r
+                                                                               },\r
+                                                                       },\r
+                                                                       "slots": map[string]interface{}{\r
+                                                                               "minimum": 10,\r
+                                                                               "type":    "integer",\r
+                                                                       },\r
+                                                               },\r
+                                                               "type": "object",\r
+                                                       },\r
+                                               },\r
+                                       },\r
+                               },\r
+                               "version": "v1",\r
+                       },\r
+               },\r
+       }\r
+\r
+       return []*unstructured.Unstructured{customResourceDefinition1, customResourceDefinition2, customResourceDefinition3, customResourceDefinition4, customResourceDefinition5, customResourceDefinition6, customResourceDefinition7, customResourceDefinition8}\r
+}
\ No newline at end of file
diff --git a/depRicKubernetesOperator/internal/controller/getEndPoints.go b/depRicKubernetesOperator/internal/controller/getEndPoints.go
new file mode 100644 (file)
index 0000000..b426a89
--- /dev/null
@@ -0,0 +1,133 @@
+package controller\r
+\r
+import (\r
+       corev1 "k8s.io/api/core/v1"\r
+       metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"\r
+       rbacv1 "k8s.io/api/rbac/v1"\r
+)\r
+\r
+\r
+func GetEndpoints() []*unstructured.Unstructured {\r
+\r
+       endpoints1 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "apiVersion": "v1",\r
+                       "kind":       "Endpoints",\r
+                       "metadata": map[string]interface{}{\r
+                               "name":      "aux-entry",\r
+                               "namespace": "ricplt",\r
+                       },\r
+                       "subsets": []interface{}{\r
+                               map[string]interface{}{\r
+                                       "ports": []interface{}{\r
+                                               map[string]interface{}{\r
+                                                       "name": "aux-entry-http-ingress-port",\r
+                                                       "port": 32080,\r
+                                               },\r
+                                               map[string]interface{}{\r
+                                                       "name": "aux-entry-https-ingress-port",\r
+                                                       "port": 32443,\r
+                                               },\r
+                                       },\r
+                                       "addresses": []interface{}{\r
+                                               map[string]interface{}{\r
+                                                       "ip": "10.0.0.1",\r
+                                               },\r
+                                       },\r
+                               },\r
+                       },\r
+               },\r
+       }\r
+\r
+       endpoints2 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "apiVersion": "v1",\r
+                       "kind":       "Endpoints",\r
+                       "metadata": map[string]interface{}{\r
+                               "name":      "aux-entry",\r
+                               "namespace": "ricxapp",\r
+                       },\r
+                       "subsets": []interface{}{\r
+                               map[string]interface{}{\r
+                                       "addresses": []interface{}{\r
+                                               map[string]interface{}{\r
+                                                       "ip": "10.0.0.1",\r
+                                               },\r
+                                       },\r
+                                       "ports": []interface{}{\r
+                                               map[string]interface{}{\r
+                                                       "name": "aux-entry-http-ingress-port",\r
+                                                       "port": 32080,\r
+                                               },\r
+                                               map[string]interface{}{\r
+                                                       "port": 32443,\r
+                                                       "name": "aux-entry-https-ingress-port",\r
+                                               },\r
+                                       },\r
+                               },\r
+                       },\r
+               },\r
+       }\r
+\r
+       endpoints3 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "apiVersion": "v1",\r
+                       "kind":       "Endpoints",\r
+                       "metadata": map[string]interface{}{\r
+                               "namespace": "ricplt",\r
+                               "name":      "aux-entry",\r
+                       },\r
+                       "subsets": []interface{}{\r
+                               map[string]interface{}{\r
+                                       "addresses": []interface{}{\r
+                                               map[string]interface{}{\r
+                                                       "ip": "10.0.0.1",\r
+                                               },\r
+                                       },\r
+                                       "ports": []interface{}{\r
+                                               map[string]interface{}{\r
+                                                       "name": "aux-entry-http-ingress-port",\r
+                                                       "port": 32080,\r
+                                               },\r
+                                               map[string]interface{}{\r
+                                                       "name": "aux-entry-https-ingress-port",\r
+                                                       "port": 32443,\r
+                                               },\r
+                                       },\r
+                               },\r
+                       },\r
+               },\r
+       }\r
+\r
+       endpoints4 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "apiVersion": "v1",\r
+                       "kind":       "Endpoints",\r
+                       "metadata": map[string]interface{}{\r
+                               "name":      "aux-entry",\r
+                               "namespace": "ricxapp",\r
+                       },\r
+                       "subsets": []interface{}{\r
+                               map[string]interface{}{\r
+                                       "addresses": []interface{}{\r
+                                               map[string]interface{}{\r
+                                                       "ip": "10.0.0.1",\r
+                                               },\r
+                                       },\r
+                                       "ports": []interface{}{\r
+                                               map[string]interface{}{\r
+                                                       "name": "aux-entry-http-ingress-port",\r
+                                                       "port": 32080,\r
+                                               },\r
+                                               map[string]interface{}{\r
+                                                       "name": "aux-entry-https-ingress-port",\r
+                                                       "port": 32443,\r
+                                               },\r
+                                       },\r
+                               },\r
+                       },\r
+               },\r
+       }\r
+\r
+       return []*unstructured.Unstructured{endpoints1, endpoints2, endpoints3, endpoints4}\r
+}
\ No newline at end of file
diff --git a/depRicKubernetesOperator/internal/controller/getJob.go b/depRicKubernetesOperator/internal/controller/getJob.go
new file mode 100644 (file)
index 0000000..402fe2e
--- /dev/null
@@ -0,0 +1,73 @@
+package controller\r
+\r
+import (\r
+       "context"\r
+       "fmt"\r
+)\r
+\r
+\r
+func GetJob() []*unstructured.Unstructured {\r
+\r
+       job1 := &unstructured.Unstructured{\r
+               Object: map[string]interface{}{\r
+                       "apiVersion": "batch/v1",\r
+                       "kind":       "Job",\r
+                       "metadata": map[string]interface{}{\r
+                               "name":      "tiller-secret-generator",\r
+                               "namespace": "ricinfra",\r
+                       },\r
+                       "spec": map[string]interface{}{\r
+                               "template": map[string]interface{}{\r
+                                       "spec": map[string]interface{}{\r
+                                               "containers": []interface{}{\r
+                                                       map[string]interface{}{\r
+                                                               "env": []interface{}{\r
+                                                                       map[string]interface{}{\r
+                                                                               "name":  "ENTITIES",\r
+                                                                               "value": "ricxapp-tiller-secret ricxapp-helm-secret",\r
+                                                                       },\r
+                                                                       map[string]interface{}{\r
+                                                                               "name":  "TILLER_KEY_NAME",\r
+                                                                               "value": "ricxapp-tiller-secret.key.pem",\r
+                                                                       },\r
+                                                                       map[string]interface{}{\r
+                                                                               "name":  "TILLER_CERT_NAME",\r
+                                                                               "value": "ricxapp-tiller-secret.cert.pem",\r
+                                                                       },\r
+                                                                       map[string]interface{}{\r
+                                                                               "name":  "HELM_KEY_NAME",\r
+                                                                               "value": "ricxapp-helm-secret.key.pem",\r
+                                                                       },\r
+                                                                       map[string]interface{}{\r
+                                                                               "name":  "HELM_CERT_NAME",\r
+                                                                               "value": "ricxapp-helm-secret.cert.pem",\r
+                                                                       },\r
+                                                                       map[string]interface{}{\r
+                                                                               "name":  "TILLER_CN",\r
+                                                                               "value": "service-tiller-ricxapp",\r
+                                                                       },\r
+                                                                       map[string]interface{}{\r
+                                                                               "name":  "CLUSTER_SERVER",\r
+                                                                               "value": "https://kubernetes.default.svc.cluster.local/",\r
+                                                                       },\r
+                                                               },\r
+                                                               "image":           "nexus3.o-ran-sc.org:10002/o-ran-sc/it-dep-secret:0.0.2",\r
+                                                               "imagePullPolicy": "IfNotPresent",\r
+                                                               "name":            "tiller-secret-generator",\r
+                                                       },\r
+                                               },\r
+                                               "imagePullSecrets": []interface{}{\r
+                                                       map[string]interface{}{\r
+                                                               "name": "secret-nexus3-o-ran-sc-org-10002-o-ran-sc",\r
+                                                       },\r
+                                               },\r
+                                               "restartPolicy":      "Never",\r
+                                               "serviceAccountName": "tiller-secret-creator-xzhjjg",\r
+                                       },\r
+                               },\r
+                       },\r
+               },\r
+       }\r
+\r
+       return []*unstructured.Unstructured{job1}\r
+}
\ No newline at end of file
diff --git a/depRicKubernetesOperator/internal/controller/getStatefulSet.go b/depRicKubernetesOperator/internal/controller/getStatefulSet.go
new file mode 100644 (file)
index 0000000..b18f627
--- /dev/null
@@ -0,0 +1,284 @@
+package controller\r
+\r
+import (\r
+       corev1 "k8s.io/api/core/v1"\r
+       metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"\r
+)\r
+\r
+\r
+\r
+func GetStatefulSet() []*appsv1.StatefulSet {\r
+\r
+       statefulSet1 := &appsv1.StatefulSet{\r
+               ObjectMeta: metav1.ObjectMeta{\r
+                       Namespace: "ricplt",\r
+                       Labels: map[string]string{\r
+                               "app":      "ricplt-dbaas",\r
+                               "chart":    "dbaas-2.0.0",\r
+                               "heritage": "Helm",\r
+                               "release":  "release-name",\r
+                       },\r
+                       Name: "statefulset-ricplt-dbaas-server",\r
+               },\r
+               Spec: appsv1.StatefulSetSpec{\r
+                       PodManagementPolicy: appsv1.PodManagementPolicyType("OrderedReady"),\r
+                       Replicas:            int32Ptr(1),\r
+                       Selector: &metav1.LabelSelector{\r
+                               MatchLabels: map[string]string{\r
+                                       "app":     "ricplt-dbaas",\r
+                                       "release": "release-name",\r
+                               },\r
+                       },\r
+                       ServiceName: "service-ricplt-dbaas-tcp",\r
+                       Template: corev1.PodTemplateSpec{\r
+                               ObjectMeta: metav1.ObjectMeta{\r
+                                       Labels: map[string]string{\r
+                                               "app":     "ricplt-dbaas",\r
+                                               "release": "release-name",\r
+                                       },\r
+                               },\r
+                               Spec: corev1.PodSpec{\r
+                                       ImagePullSecrets: []corev1.LocalObjectReference{\r
+\r
+                                               corev1.LocalObjectReference{\r
+                                                       Name: "secret-nexus3-o-ran-sc-org-10002-o-ran-sc",\r
+                                               },\r
+                                       },\r
+                                       ShareProcessNamespace:         boolPtr(true),\r
+                                       TerminationGracePeriodSeconds: int64Ptr(5),\r
+                                       Volumes: []corev1.Volume{\r
+\r
+                                               corev1.Volume{\r
+                                                       Name: "config",\r
+                                                       VolumeSource: corev1.VolumeSource{\r
+                                                               ConfigMap: &corev1.ConfigMapVolumeSource{\r
+                                                                       LocalObjectReference: corev1.LocalObjectReference{\r
+                                                                               Name: "configmap-ricplt-dbaas-config",\r
+                                                                       },\r
+                                                               },\r
+                                                       },\r
+                                               },\r
+                                       },\r
+                                       Containers: []corev1.Container{\r
+\r
+                                               corev1.Container{\r
+                                                       Command: []string{\r
+\r
+                                                               "redis-server",\r
+                                                       },\r
+                                                       EnvFrom: []corev1.EnvFromSource{\r
+\r
+                                                               corev1.EnvFromSource{\r
+                                                                       ConfigMapRef: &corev1.ConfigMapEnvSource{\r
+                                                                               LocalObjectReference: corev1.LocalObjectReference{\r
+                                                                                       Name: "configmap-ricplt-dbaas-appconfig",\r
+                                                                               },\r
+                                                                       },\r
+                                                               },\r
+                                                       },\r
+                                                       LivenessProbe: &corev1.Probe{\r
+                                                               PeriodSeconds: 5,\r
+                                                               ProbeHandler: corev1.ProbeHandler{\r
+                                                                       Exec: &corev1.ExecAction{\r
+                                                                               Command: []string{\r
+\r
+                                                                                       "/bin/sh",\r
+                                                                                       "-c",\r
+                                                                                       "timeout 10 redis-cli -p 6379 ping",\r
+                                                                               },\r
+                                                                       },\r
+                                                               },\r
+                                                               InitialDelaySeconds: 15,\r
+                                                       },\r
+                                                       Stdin: false,\r
+                                                       TTY:   false,\r
+                                                       VolumeMounts: []corev1.VolumeMount{\r
+\r
+                                                               corev1.VolumeMount{\r
+                                                                       MountPath: "/data",\r
+                                                                       Name:      "config",\r
+                                                                       ReadOnly:  false,\r
+                                                               },\r
+                                                       },\r
+                                                       Args: []string{\r
+\r
+                                                               "/data/redis.conf",\r
+                                                       },\r
+                                                       Image: "nexus3.o-ran-sc.org:10002/o-ran-sc/ric-plt-dbaas:0.6.1",\r
+                                                       Name:  "container-ricplt-dbaas-redis",\r
+                                                       Ports: []corev1.ContainerPort{\r
+\r
+                                                               corev1.ContainerPort{\r
+                                                                       ContainerPort: 6379,\r
+                                                                       Name:          "redis",\r
+                                                               },\r
+                                                       },\r
+                                                       ReadinessProbe: &corev1.Probe{\r
+                                                               InitialDelaySeconds: 15,\r
+                                                               PeriodSeconds:       5,\r
+                                                               ProbeHandler: corev1.ProbeHandler{\r
+                                                                       Exec: &corev1.ExecAction{\r
+                                                                               Command: []string{\r
+\r
+                                                                                       "/bin/sh",\r
+                                                                                       "-c",\r
+                                                                                       "timeout 10 redis-cli -p 6379 ping",\r
+                                                                               },\r
+                                                                       },\r
+                                                               },\r
+                                                       },\r
+                                                       StdinOnce: false,\r
+                                               },\r
+                                       },\r
+                                       HostIPC:     false,\r
+                                       HostNetwork: false,\r
+                                       HostPID:     false,\r
+                               },\r
+                       },\r
+                       UpdateStrategy: appsv1.StatefulSetUpdateStrategy{\r
+                               Type: appsv1.StatefulSetUpdateStrategyType("RollingUpdate"),\r
+                       },\r
+               },\r
+               TypeMeta: metav1.TypeMeta{\r
+                       APIVersion: "apps/v1",\r
+                       Kind:       "StatefulSet",\r
+               },\r
+       }\r
+\r
+       statefulSet2 := &appsv1.StatefulSet{\r
+               ObjectMeta: metav1.ObjectMeta{\r
+                       Name: "redis-cluster",\r
+               },\r
+               Spec: appsv1.StatefulSetSpec{\r
+                       Replicas: int32Ptr(9),\r
+                       Selector: &metav1.LabelSelector{\r
+                               MatchLabels: map[string]string{\r
+                                       "app.kubernetes.io/instance": "release-name",\r
+                                       "app.kubernetes.io/name":     "redis-cluster",\r
+                               },\r
+                       },\r
+                       Template: corev1.PodTemplateSpec{\r
+                               ObjectMeta: metav1.ObjectMeta{\r
+                                       Labels: map[string]string{\r
+                                               "app.kubernetes.io/instance": "release-name",\r
+                                               "app.kubernetes.io/name":     "redis-cluster",\r
+                                       },\r
+                               },\r
+                               Spec: corev1.PodSpec{\r
+                                       Volumes: []corev1.Volume{\r
+\r
+                                               corev1.Volume{\r
+                                                       Name: "conf",\r
+                                                       VolumeSource: corev1.VolumeSource{\r
+                                                               ConfigMap: &corev1.ConfigMapVolumeSource{\r
+                                                                       DefaultMode: int32Ptr(493),\r
+                                                                       LocalObjectReference: corev1.LocalObjectReference{\r
+                                                                               Name: "redis-cluster-cm",\r
+                                                                       },\r
+                                                               },\r
+                                                       },\r
+                                               },\r
+                                       },\r
+                                       Containers: []corev1.Container{\r
+\r
+                                               corev1.Container{\r
+                                                       Stdin:     false,\r
+                                                       StdinOnce: false,\r
+                                                       TTY:       false,\r
+                                                       Command: []string{\r
+\r
+                                                               "/conf/update-node.sh",\r
+                                                               "redis-server",\r
+                                                               "/conf/redis.conf",\r
+                                                       },\r
+                                                       Name: "redis",\r
+                                                       Ports: []corev1.ContainerPort{\r
+\r
+                                                               corev1.ContainerPort{\r
+                                                                       ContainerPort: 6379,\r
+                                                                       Name:          "client",\r
+                                                               },\r
+                                                               corev1.ContainerPort{\r
+                                                                       Name:          "gossip",\r
+                                                                       ContainerPort: 16379,\r
+                                                               },\r
+                                                       },\r
+                                                       VolumeMounts: []corev1.VolumeMount{\r
+\r
+                                                               corev1.VolumeMount{\r
+                                                                       Name:      "conf",\r
+                                                                       ReadOnly:  false,\r
+                                                                       MountPath: "/conf",\r
+                                                               },\r
+                                                               corev1.VolumeMount{\r
+                                                                       MountPath: "/data",\r
+                                                                       Name:      "data",\r
+                                                                       ReadOnly:  false,\r
+                                                               },\r
+                                                       },\r
+                                                       Env: []corev1.EnvVar{\r
+\r
+                                                               corev1.EnvVar{\r
+                                                                       Name: "POD_IP",\r
+                                                                       ValueFrom: &corev1.EnvVarSource{\r
+                                                                               FieldRef: &corev1.ObjectFieldSelector{\r
+                                                                                       FieldPath: "status.podIP",\r
+                                                                               },\r
+                                                                       },\r
+                                                               },\r
+                                                       },\r
+                                                       Image:           "redis:5.0.1-alpine",\r
+                                                       ImagePullPolicy: corev1.PullPolicy("IfNotPresent"),\r
+                                               },\r
+                                       },\r
+                                       HostIPC:     false,\r
+                                       HostNetwork: false,\r
+                                       HostPID:     false,\r
+                                       TopologySpreadConstraints: []corev1.TopologySpreadConstraint{\r
+\r
+                                               corev1.TopologySpreadConstraint{\r
+                                                       TopologyKey:       "kubernetes.io/hostname",\r
+                                                       WhenUnsatisfiable: corev1.UnsatisfiableConstraintAction("DoNotSchedule"),\r
+                                                       LabelSelector: &metav1.LabelSelector{\r
+                                                               MatchLabels: map[string]string{\r
+                                                                       "app.kubernetes.io/instance": "release-name",\r
+                                                                       "app.kubernetes.io/name":     "redis-cluster",\r
+                                                               },\r
+                                                       },\r
+                                                       MaxSkew: 1,\r
+                                               },\r
+                                       },\r
+                               },\r
+                       },\r
+                       VolumeClaimTemplates: []corev1.PersistentVolumeClaim{\r
+\r
+                               corev1.PersistentVolumeClaim{\r
+                                       ObjectMeta: metav1.ObjectMeta{\r
+                                               Labels: map[string]string{\r
+                                                       "app.kubernetes.io/name":     "redis-cluster",\r
+                                                       "app.kubernetes.io/instance": "release-name",\r
+                                               },\r
+                                               Name: "data",\r
+                                       },\r
+                                       Spec: corev1.PersistentVolumeClaimSpec{\r
+                                               AccessModes: []corev1.PersistentVolumeAccessMode{\r
+\r
+                                                       corev1.PersistentVolumeAccessMode("ReadWriteOnce"),\r
+                                               },\r
+                                               Resources: corev1.ResourceRequirements{\r
+                                                       Requests: corev1.ResourceList{\r
+                                                               "storage": resource.MustParse("1Gi"),\r
+                                                       },\r
+                                               },\r
+                                       },\r
+                               },\r
+                       },\r
+               },\r
+               TypeMeta: metav1.TypeMeta{\r
+                       APIVersion: "apps/v1",\r
+                       Kind:       "StatefulSet",\r
+               },\r
+       }\r
+\r
+       return []*appsv1.StatefulSet{statefulSet1, statefulSet2}\r
+}
\ No newline at end of file