Adding CustomResourceDefinition Job and StatefulSet.
[ric-plt/ric-dep.git] / depRicKubernetesOperator / internal / controller / getStatefulSet.go
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