From b73efa54f2d4f8fb3e9955c3c621f74b764ee898 Mon Sep 17 00:00:00 2001 From: Shubham Minglani Date: Fri, 13 Jan 2017 05:21:52 +0530 Subject: [PATCH] set strategy to Recreate if vols, add tests,docs When volumes are specified in the Docker Compose files, then in case of Kubernetes, Deployment's Spec.Strategy.Type and in case of OpenShift, DeploymentConfig's Spec.Strategy.Type are set to "Recreate". This is a safer deployment strategy when Volumes are getting used. This commit also adds unit tests for Kubernetes as well as OpenShift, and fixes the failing functional tests (tests.sh) due to the change. No functional tests have been added since the functionality is already covered when the volume mounts are being tested earlier in the file. This fixes #264 --- docs/user-guide.md | 3 + pkg/transformer/kubernetes/k8sutils.go | 9 + pkg/transformer/kubernetes/k8sutils_test.go | 26 + pkg/transformer/openshift/openshift_test.go | 26 + .../envvars-separators/output-k8s.json | 1652 +++++++++-------- script/test/fixtures/etherpad/output-k8s.json | 4 +- script/test/fixtures/etherpad/output-os.json | 3 +- .../multiple-compose-files/output-k8s.json | 4 +- .../output-openshift.json | 1 + .../simple-vol-mounts/output-k8s.json | 4 +- .../simple-vol-mounts/output-os.json | 3 +- .../volumes-from/output-k8s.json | 8 +- .../volume-mounts/volumes-from/output-os.json | 6 +- 13 files changed, 926 insertions(+), 823 deletions(-) diff --git a/docs/user-guide.md b/docs/user-guide.md index 7d67f109..46a158bb 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -394,3 +394,6 @@ services: command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restart: "on-failure" ``` + +#### Notes: +- If the Docker Compose file has a volume specified for a service, the Deployment (Kubernetes) or DeploymentConfig (OpenShift) strategy is changed to "Recreate" instead of "RollingUpdate" (default). This is done to avoid multiple instances of a service from accessing a volume at the same time. \ No newline at end of file diff --git a/pkg/transformer/kubernetes/k8sutils.go b/pkg/transformer/kubernetes/k8sutils.go index ba6b6d97..efd11530 100644 --- a/pkg/transformer/kubernetes/k8sutils.go +++ b/pkg/transformer/kubernetes/k8sutils.go @@ -384,6 +384,15 @@ func (k *Kubernetes) UpdateKubernetesObjects(name string, service kobject.Servic // update supported controller for _, obj := range *objects { k.UpdateController(obj, fillTemplate, fillObjectMeta) + + if len(service.Volumes) > 0 { + switch objType := obj.(type) { + case *extensions.Deployment: + objType.Spec.Strategy.Type = extensions.RecreateDeploymentStrategyType + case *deployapi.DeploymentConfig: + objType.Spec.Strategy.Type = deployapi.DeploymentStrategyTypeRecreate + } + } } } diff --git a/pkg/transformer/kubernetes/k8sutils_test.go b/pkg/transformer/kubernetes/k8sutils_test.go index 9da4dde6..2a10cd84 100644 --- a/pkg/transformer/kubernetes/k8sutils_test.go +++ b/pkg/transformer/kubernetes/k8sutils_test.go @@ -182,3 +182,29 @@ func TestServiceWithoutPort(t *testing.T) { } } + +// Tests if deployment strategy is being set to Recreate when volumes are +// present +func TestRecreateStrategyWithVolumesPresent(t *testing.T) { + service := kobject.ServiceConfig{ + ContainerName: "name", + Image: "image", + Volumes: []string{"/tmp/volume"}, + } + + komposeObject := kobject.KomposeObject{ + ServiceConfigs: map[string]kobject.ServiceConfig{"app": service}, + } + k := Kubernetes{} + + objects := k.Transform(komposeObject, kobject.ConvertOptions{CreateD: true, Replicas: 1}) + for _, obj := range objects { + if deployment, ok := obj.(*extensions.Deployment); ok { + if deployment.Spec.Strategy.Type != extensions.RecreateDeploymentStrategyType { + t.Errorf("Expected %v as Strategy Type, got %v", + extensions.RecreateDeploymentStrategyType, + deployment.Spec.Strategy.Type) + } + } + } +} diff --git a/pkg/transformer/openshift/openshift_test.go b/pkg/transformer/openshift/openshift_test.go index 4716ab3b..4df78dac 100644 --- a/pkg/transformer/openshift/openshift_test.go +++ b/pkg/transformer/openshift/openshift_test.go @@ -380,3 +380,29 @@ func TestRestartOnFailure(t *testing.T) { } t.Fatalf("Process ran with err %v, want exit status 1", err) } + +// Tests if deployment strategy is being set to Recreate when volumes are +// present +func TestRecreateStrategyWithVolumesPresent(t *testing.T) { + service := kobject.ServiceConfig{ + ContainerName: "name", + Image: "image", + Volumes: []string{"/tmp/volume"}, + } + komposeObject := kobject.KomposeObject{ + ServiceConfigs: map[string]kobject.ServiceConfig{"app": service}, + } + + o := OpenShift{Kubernetes: kubernetes.Kubernetes{}} + + objects := o.Transform(komposeObject, kobject.ConvertOptions{CreateDeploymentConfig: true, Replicas: 1}) + for _, obj := range objects { + if deploymentConfig, ok := obj.(*deployapi.DeploymentConfig); ok { + if deploymentConfig.Spec.Strategy.Type != deployapi.DeploymentStrategyTypeRecreate { + t.Errorf("Expected %v as Strategy Type, got %v", + deployapi.DeploymentStrategyTypeRecreate, + deploymentConfig.Spec.Strategy.Type) + } + } + } +} diff --git a/script/test/fixtures/envvars-separators/output-k8s.json b/script/test/fixtures/envvars-separators/output-k8s.json index ca326624..42d691a9 100644 --- a/script/test/fixtures/envvars-separators/output-k8s.json +++ b/script/test/fixtures/envvars-separators/output-k8s.json @@ -7,22 +7,22 @@ "kind": "Service", "apiVersion": "v1", "metadata": { - "name": "mongodb", + "name": "hygieia-api", "creationTimestamp": null, "labels": { - "service": "mongodb" + "service": "hygieia-api" } }, "spec": { "ports": [ { - "name": "27017", - "port": 27017, - "targetPort": 27017 + "name": "8080", + "port": 8080, + "targetPort": 8080 } ], "selector": { - "service": "mongodb" + "service": "hygieia-api" } }, "status": { @@ -33,10 +33,10 @@ "kind": "Service", "apiVersion": "v1", "metadata": { - "name": "hygieia-udeploy-collector", + "name": "hygieia-bitbucket-scm-collector", "creationTimestamp": null, "labels": { - "service": "hygieia-udeploy-collector" + "service": "hygieia-bitbucket-scm-collector" } }, "spec": { @@ -48,7 +48,7 @@ } ], "selector": { - "service": "hygieia-udeploy-collector" + "service": "hygieia-bitbucket-scm-collector" }, "clusterIP": "None" }, @@ -83,60 +83,6 @@ "loadBalancer": {} } }, - { - "kind": "Service", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-subversion-scm-collector", - "creationTimestamp": null, - "labels": { - "service": "hygieia-subversion-scm-collector" - } - }, - "spec": { - "ports": [ - { - "name": "headless", - "port": 55555, - "targetPort": 0 - } - ], - "selector": { - "service": "hygieia-subversion-scm-collector" - }, - "clusterIP": "None" - }, - "status": { - "loadBalancer": {} - } - }, - { - "kind": "Service", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-versionone-collector", - "creationTimestamp": null, - "labels": { - "service": "hygieia-versionone-collector" - } - }, - "spec": { - "ports": [ - { - "name": "headless", - "port": 55555, - "targetPort": 0 - } - ], - "selector": { - "service": "hygieia-versionone-collector" - }, - "clusterIP": "None" - }, - "status": { - "loadBalancer": {} - } - }, { "kind": "Service", "apiVersion": "v1", @@ -191,33 +137,6 @@ "loadBalancer": {} } }, - { - "kind": "Service", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-sonar-codequality-collector", - "creationTimestamp": null, - "labels": { - "service": "hygieia-sonar-codequality-collector" - } - }, - "spec": { - "ports": [ - { - "name": "headless", - "port": 55555, - "targetPort": 0 - } - ], - "selector": { - "service": "hygieia-sonar-codequality-collector" - }, - "clusterIP": "None" - }, - "status": { - "loadBalancer": {} - } - }, { "kind": "Service", "apiVersion": "v1", @@ -245,59 +164,6 @@ "loadBalancer": {} } }, - { - "kind": "Service", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-api", - "creationTimestamp": null, - "labels": { - "service": "hygieia-api" - } - }, - "spec": { - "ports": [ - { - "name": "8080", - "port": 8080, - "targetPort": 8080 - } - ], - "selector": { - "service": "hygieia-api" - } - }, - "status": { - "loadBalancer": {} - } - }, - { - "kind": "Service", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-bitbucket-scm-collector", - "creationTimestamp": null, - "labels": { - "service": "hygieia-bitbucket-scm-collector" - } - }, - "spec": { - "ports": [ - { - "name": "headless", - "port": 55555, - "targetPort": 0 - } - ], - "selector": { - "service": "hygieia-bitbucket-scm-collector" - }, - "clusterIP": "None" - }, - "status": { - "loadBalancer": {} - } - }, { "kind": "Service", "apiVersion": "v1", @@ -325,6 +191,87 @@ "loadBalancer": {} } }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-sonar-codequality-collector", + "creationTimestamp": null, + "labels": { + "service": "hygieia-sonar-codequality-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "service": "hygieia-sonar-codequality-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-subversion-scm-collector", + "creationTimestamp": null, + "labels": { + "service": "hygieia-subversion-scm-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "service": "hygieia-subversion-scm-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-udeploy-collector", + "creationTimestamp": null, + "labels": { + "service": "hygieia-udeploy-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "service": "hygieia-udeploy-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, { "kind": "Service", "apiVersion": "v1", @@ -351,11 +298,64 @@ "loadBalancer": {} } }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-versionone-collector", + "creationTimestamp": null, + "labels": { + "service": "hygieia-versionone-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "service": "hygieia-versionone-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "mongodb", + "creationTimestamp": null, + "labels": { + "service": "mongodb" + } + }, + "spec": { + "ports": [ + { + "name": "27017", + "port": 27017, + "targetPort": 27017 + } + ], + "selector": { + "service": "mongodb" + } + }, + "status": { + "loadBalancer": {} + } + }, { "kind": "Deployment", "apiVersion": "extensions/v1beta1", "metadata": { - "name": "mongodb", + "name": "hygieia-api", "creationTimestamp": null }, "spec": { @@ -364,36 +364,32 @@ "metadata": { "creationTimestamp": null, "labels": { - "service": "mongodb" + "service": "hygieia-api" } }, "spec": { "volumes": [ { - "name": "mongodb-claim0", + "name": "hygieia-api-claim0", "persistentVolumeClaim": { - "claimName": "mongodb-claim0" + "claimName": "hygieia-api-claim0" } } ], "containers": [ { - "name": "mongodb", - "image": "mongo:latest", - "args": [ - "mongod", - "--smallfiles" - ], + "name": "hygieia-api", + "image": "hygieia-api:latest", "ports": [ { - "containerPort": 27017 + "containerPort": 8080 } ], "resources": {}, "volumeMounts": [ { - "name": "mongodb-claim0", - "mountPath": "/data/db" + "name": "hygieia-api-claim0", + "mountPath": "/hygieia/logs" } ] } @@ -401,7 +397,9 @@ "restartPolicy": "Always" } }, - "strategy": {} + "strategy": { + "type": "Recreate" + } }, "status": {} }, @@ -409,7 +407,545 @@ "kind": "PersistentVolumeClaim", "apiVersion": "v1", "metadata": { - "name": "mongodb-claim0", + "name": "hygieia-api-claim0", + "creationTimestamp": null + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-bitbucket-scm-collector", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "hygieia-bitbucket-scm-collector" + } + }, + "spec": { + "volumes": [ + { + "name": "hygieia-bitbucket-scm-collector-claim0", + "persistentVolumeClaim": { + "claimName": "hygieia-bitbucket-scm-collector-claim0" + } + } + ], + "containers": [ + { + "name": "hygieia-bitbucket", + "image": "hygieia-bitbucket-scm-collector:latest", + "resources": {}, + "volumeMounts": [ + { + "name": "hygieia-bitbucket-scm-collector-claim0", + "mountPath": "/hygieia/logs" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-bitbucket-scm-collector-claim0", + "creationTimestamp": null + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-chat-ops-collector", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "hygieia-chat-ops-collector" + } + }, + "spec": { + "volumes": [ + { + "name": "hygieia-chat-ops-collector-claim0", + "persistentVolumeClaim": { + "claimName": "hygieia-chat-ops-collector-claim0" + } + } + ], + "containers": [ + { + "name": "hygieia-chat-ops", + "image": "hygieia-chat-ops-collector:latest", + "resources": {}, + "volumeMounts": [ + { + "name": "hygieia-chat-ops-collector-claim0", + "mountPath": "/hygieia/logs" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-chat-ops-collector-claim0", + "creationTimestamp": null + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-github-scm-collector", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "hygieia-github-scm-collector" + } + }, + "spec": { + "volumes": [ + { + "name": "hygieia-github-scm-collector-claim0", + "persistentVolumeClaim": { + "claimName": "hygieia-github-scm-collector-claim0" + } + } + ], + "containers": [ + { + "name": "hygieia-github", + "image": "hygieia-github-scm-collector:latest", + "resources": {}, + "volumeMounts": [ + { + "name": "hygieia-github-scm-collector-claim0", + "mountPath": "/hygieia/logs" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-github-scm-collector-claim0", + "creationTimestamp": null + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-jenkins-build-collector", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "hygieia-jenkins-build-collector" + } + }, + "spec": { + "volumes": [ + { + "name": "hygieia-jenkins-build-collector-claim0", + "persistentVolumeClaim": { + "claimName": "hygieia-jenkins-build-collector-claim0" + } + } + ], + "containers": [ + { + "name": "hygieia-jenkins-build", + "image": "hygieia-jenkins-build-collector:latest", + "resources": {}, + "volumeMounts": [ + { + "name": "hygieia-jenkins-build-collector-claim0", + "mountPath": "/hygieia/logs" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-jenkins-build-collector-claim0", + "creationTimestamp": null + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-jenkins-cucumber-test-collector", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "hygieia-jenkins-cucumber-test-collector" + } + }, + "spec": { + "volumes": [ + { + "name": "hygieia-jenkins-cucumber-test-collector-claim0", + "persistentVolumeClaim": { + "claimName": "hygieia-jenkins-cucumber-test-collector-claim0" + } + } + ], + "containers": [ + { + "name": "hygieia-jenkins-cucumber", + "image": "hygieia-jenkins-cucumber-test-collector:latest", + "resources": {}, + "volumeMounts": [ + { + "name": "hygieia-jenkins-cucumber-test-collector-claim0", + "mountPath": "/hygieia/logs" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-jenkins-cucumber-test-collector-claim0", + "creationTimestamp": null + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-jira-feature-collector", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "hygieia-jira-feature-collector" + } + }, + "spec": { + "volumes": [ + { + "name": "hygieia-jira-feature-collector-claim0", + "persistentVolumeClaim": { + "claimName": "hygieia-jira-feature-collector-claim0" + } + } + ], + "containers": [ + { + "name": "hygieia-jira", + "image": "hygieia-jira-feature-collector:latest", + "env": [ + { + "name": "JIRA_BASE_URL", + "value": "https://jira.atlassian.com" + }, + { + "name": "JIRA_CREDENTIALS", + "value": "username:password" + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "hygieia-jira-feature-collector-claim0", + "mountPath": "/hygieia/logs" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-jira-feature-collector-claim0", + "creationTimestamp": null + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-sonar-codequality-collector", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "hygieia-sonar-codequality-collector" + } + }, + "spec": { + "volumes": [ + { + "name": "hygieia-sonar-codequality-collector-claim0", + "persistentVolumeClaim": { + "claimName": "hygieia-sonar-codequality-collector-claim0" + } + } + ], + "containers": [ + { + "name": "hygieia-sonar-codequality", + "image": "hygieia-sonar-codequality-collector:latest", + "resources": {}, + "volumeMounts": [ + { + "name": "hygieia-sonar-codequality-collector-claim0", + "mountPath": "/hygieia/logs" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-sonar-codequality-collector-claim0", + "creationTimestamp": null + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-subversion-scm-collector", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "hygieia-subversion-scm-collector" + } + }, + "spec": { + "volumes": [ + { + "name": "hygieia-subversion-scm-collector-claim0", + "persistentVolumeClaim": { + "claimName": "hygieia-subversion-scm-collector-claim0" + } + } + ], + "containers": [ + { + "name": "hygieia-subversion", + "image": "hygieia-subversion-scm-collector:latest", + "resources": {}, + "volumeMounts": [ + { + "name": "hygieia-subversion-scm-collector-claim0", + "mountPath": "/hygieia/logs" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-subversion-scm-collector-claim0", "creationTimestamp": null }, "spec": { @@ -479,7 +1015,9 @@ "restartPolicy": "Always" } }, - "strategy": {} + "strategy": { + "type": "Recreate" + } }, "status": {} }, @@ -502,661 +1040,6 @@ }, "status": {} }, - { - "kind": "Deployment", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "hygieia-chat-ops-collector", - "creationTimestamp": null - }, - "spec": { - "replicas": 1, - "template": { - "metadata": { - "creationTimestamp": null, - "labels": { - "service": "hygieia-chat-ops-collector" - } - }, - "spec": { - "volumes": [ - { - "name": "hygieia-chat-ops-collector-claim0", - "persistentVolumeClaim": { - "claimName": "hygieia-chat-ops-collector-claim0" - } - } - ], - "containers": [ - { - "name": "hygieia-chat-ops", - "image": "hygieia-chat-ops-collector:latest", - "resources": {}, - "volumeMounts": [ - { - "name": "hygieia-chat-ops-collector-claim0", - "mountPath": "/hygieia/logs" - } - ] - } - ], - "restartPolicy": "Always" - } - }, - "strategy": {} - }, - "status": {} - }, - { - "kind": "PersistentVolumeClaim", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-chat-ops-collector-claim0", - "creationTimestamp": null - }, - "spec": { - "accessModes": [ - "ReadWriteOnce" - ], - "resources": { - "requests": { - "storage": "100Mi" - } - } - }, - "status": {} - }, - { - "kind": "Deployment", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "hygieia-subversion-scm-collector", - "creationTimestamp": null - }, - "spec": { - "replicas": 1, - "template": { - "metadata": { - "creationTimestamp": null, - "labels": { - "service": "hygieia-subversion-scm-collector" - } - }, - "spec": { - "volumes": [ - { - "name": "hygieia-subversion-scm-collector-claim0", - "persistentVolumeClaim": { - "claimName": "hygieia-subversion-scm-collector-claim0" - } - } - ], - "containers": [ - { - "name": "hygieia-subversion", - "image": "hygieia-subversion-scm-collector:latest", - "resources": {}, - "volumeMounts": [ - { - "name": "hygieia-subversion-scm-collector-claim0", - "mountPath": "/hygieia/logs" - } - ] - } - ], - "restartPolicy": "Always" - } - }, - "strategy": {} - }, - "status": {} - }, - { - "kind": "PersistentVolumeClaim", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-subversion-scm-collector-claim0", - "creationTimestamp": null - }, - "spec": { - "accessModes": [ - "ReadWriteOnce" - ], - "resources": { - "requests": { - "storage": "100Mi" - } - } - }, - "status": {} - }, - { - "kind": "Deployment", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "hygieia-versionone-collector", - "creationTimestamp": null - }, - "spec": { - "replicas": 1, - "template": { - "metadata": { - "creationTimestamp": null, - "labels": { - "service": "hygieia-versionone-collector" - } - }, - "spec": { - "volumes": [ - { - "name": "hygieia-versionone-collector-claim0", - "persistentVolumeClaim": { - "claimName": "hygieia-versionone-collector-claim0" - } - } - ], - "containers": [ - { - "name": "hygieia-versionone", - "image": "hygieia-versionone-collector:latest", - "resources": {}, - "volumeMounts": [ - { - "name": "hygieia-versionone-collector-claim0", - "mountPath": "/hygieia/logs" - } - ] - } - ], - "restartPolicy": "Always" - } - }, - "strategy": {} - }, - "status": {} - }, - { - "kind": "PersistentVolumeClaim", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-versionone-collector-claim0", - "creationTimestamp": null - }, - "spec": { - "accessModes": [ - "ReadWriteOnce" - ], - "resources": { - "requests": { - "storage": "100Mi" - } - } - }, - "status": {} - }, - { - "kind": "Deployment", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "hygieia-github-scm-collector", - "creationTimestamp": null - }, - "spec": { - "replicas": 1, - "template": { - "metadata": { - "creationTimestamp": null, - "labels": { - "service": "hygieia-github-scm-collector" - } - }, - "spec": { - "volumes": [ - { - "name": "hygieia-github-scm-collector-claim0", - "persistentVolumeClaim": { - "claimName": "hygieia-github-scm-collector-claim0" - } - } - ], - "containers": [ - { - "name": "hygieia-github", - "image": "hygieia-github-scm-collector:latest", - "resources": {}, - "volumeMounts": [ - { - "name": "hygieia-github-scm-collector-claim0", - "mountPath": "/hygieia/logs" - } - ] - } - ], - "restartPolicy": "Always" - } - }, - "strategy": {} - }, - "status": {} - }, - { - "kind": "PersistentVolumeClaim", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-github-scm-collector-claim0", - "creationTimestamp": null - }, - "spec": { - "accessModes": [ - "ReadWriteOnce" - ], - "resources": { - "requests": { - "storage": "100Mi" - } - } - }, - "status": {} - }, - { - "kind": "Deployment", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "hygieia-jenkins-build-collector", - "creationTimestamp": null - }, - "spec": { - "replicas": 1, - "template": { - "metadata": { - "creationTimestamp": null, - "labels": { - "service": "hygieia-jenkins-build-collector" - } - }, - "spec": { - "volumes": [ - { - "name": "hygieia-jenkins-build-collector-claim0", - "persistentVolumeClaim": { - "claimName": "hygieia-jenkins-build-collector-claim0" - } - } - ], - "containers": [ - { - "name": "hygieia-jenkins-build", - "image": "hygieia-jenkins-build-collector:latest", - "resources": {}, - "volumeMounts": [ - { - "name": "hygieia-jenkins-build-collector-claim0", - "mountPath": "/hygieia/logs" - } - ] - } - ], - "restartPolicy": "Always" - } - }, - "strategy": {} - }, - "status": {} - }, - { - "kind": "PersistentVolumeClaim", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-jenkins-build-collector-claim0", - "creationTimestamp": null - }, - "spec": { - "accessModes": [ - "ReadWriteOnce" - ], - "resources": { - "requests": { - "storage": "100Mi" - } - } - }, - "status": {} - }, - { - "kind": "Deployment", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "hygieia-sonar-codequality-collector", - "creationTimestamp": null - }, - "spec": { - "replicas": 1, - "template": { - "metadata": { - "creationTimestamp": null, - "labels": { - "service": "hygieia-sonar-codequality-collector" - } - }, - "spec": { - "volumes": [ - { - "name": "hygieia-sonar-codequality-collector-claim0", - "persistentVolumeClaim": { - "claimName": "hygieia-sonar-codequality-collector-claim0" - } - } - ], - "containers": [ - { - "name": "hygieia-sonar-codequality", - "image": "hygieia-sonar-codequality-collector:latest", - "resources": {}, - "volumeMounts": [ - { - "name": "hygieia-sonar-codequality-collector-claim0", - "mountPath": "/hygieia/logs" - } - ] - } - ], - "restartPolicy": "Always" - } - }, - "strategy": {} - }, - "status": {} - }, - { - "kind": "PersistentVolumeClaim", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-sonar-codequality-collector-claim0", - "creationTimestamp": null - }, - "spec": { - "accessModes": [ - "ReadWriteOnce" - ], - "resources": { - "requests": { - "storage": "100Mi" - } - } - }, - "status": {} - }, - { - "kind": "Deployment", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "hygieia-jenkins-cucumber-test-collector", - "creationTimestamp": null - }, - "spec": { - "replicas": 1, - "template": { - "metadata": { - "creationTimestamp": null, - "labels": { - "service": "hygieia-jenkins-cucumber-test-collector" - } - }, - "spec": { - "volumes": [ - { - "name": "hygieia-jenkins-cucumber-test-collector-claim0", - "persistentVolumeClaim": { - "claimName": "hygieia-jenkins-cucumber-test-collector-claim0" - } - } - ], - "containers": [ - { - "name": "hygieia-jenkins-cucumber", - "image": "hygieia-jenkins-cucumber-test-collector:latest", - "resources": {}, - "volumeMounts": [ - { - "name": "hygieia-jenkins-cucumber-test-collector-claim0", - "mountPath": "/hygieia/logs" - } - ] - } - ], - "restartPolicy": "Always" - } - }, - "strategy": {} - }, - "status": {} - }, - { - "kind": "PersistentVolumeClaim", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-jenkins-cucumber-test-collector-claim0", - "creationTimestamp": null - }, - "spec": { - "accessModes": [ - "ReadWriteOnce" - ], - "resources": { - "requests": { - "storage": "100Mi" - } - } - }, - "status": {} - }, - { - "kind": "Deployment", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "hygieia-api", - "creationTimestamp": null - }, - "spec": { - "replicas": 1, - "template": { - "metadata": { - "creationTimestamp": null, - "labels": { - "service": "hygieia-api" - } - }, - "spec": { - "volumes": [ - { - "name": "hygieia-api-claim0", - "persistentVolumeClaim": { - "claimName": "hygieia-api-claim0" - } - } - ], - "containers": [ - { - "name": "hygieia-api", - "image": "hygieia-api:latest", - "ports": [ - { - "containerPort": 8080 - } - ], - "resources": {}, - "volumeMounts": [ - { - "name": "hygieia-api-claim0", - "mountPath": "/hygieia/logs" - } - ] - } - ], - "restartPolicy": "Always" - } - }, - "strategy": {} - }, - "status": {} - }, - { - "kind": "PersistentVolumeClaim", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-api-claim0", - "creationTimestamp": null - }, - "spec": { - "accessModes": [ - "ReadWriteOnce" - ], - "resources": { - "requests": { - "storage": "100Mi" - } - } - }, - "status": {} - }, - { - "kind": "Deployment", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "hygieia-bitbucket-scm-collector", - "creationTimestamp": null - }, - "spec": { - "replicas": 1, - "template": { - "metadata": { - "creationTimestamp": null, - "labels": { - "service": "hygieia-bitbucket-scm-collector" - } - }, - "spec": { - "volumes": [ - { - "name": "hygieia-bitbucket-scm-collector-claim0", - "persistentVolumeClaim": { - "claimName": "hygieia-bitbucket-scm-collector-claim0" - } - } - ], - "containers": [ - { - "name": "hygieia-bitbucket", - "image": "hygieia-bitbucket-scm-collector:latest", - "resources": {}, - "volumeMounts": [ - { - "name": "hygieia-bitbucket-scm-collector-claim0", - "mountPath": "/hygieia/logs" - } - ] - } - ], - "restartPolicy": "Always" - } - }, - "strategy": {} - }, - "status": {} - }, - { - "kind": "PersistentVolumeClaim", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-bitbucket-scm-collector-claim0", - "creationTimestamp": null - }, - "spec": { - "accessModes": [ - "ReadWriteOnce" - ], - "resources": { - "requests": { - "storage": "100Mi" - } - } - }, - "status": {} - }, - { - "kind": "Deployment", - "apiVersion": "extensions/v1beta1", - "metadata": { - "name": "hygieia-jira-feature-collector", - "creationTimestamp": null - }, - "spec": { - "replicas": 1, - "template": { - "metadata": { - "creationTimestamp": null, - "labels": { - "service": "hygieia-jira-feature-collector" - } - }, - "spec": { - "volumes": [ - { - "name": "hygieia-jira-feature-collector-claim0", - "persistentVolumeClaim": { - "claimName": "hygieia-jira-feature-collector-claim0" - } - } - ], - "containers": [ - { - "name": "hygieia-jira", - "image": "hygieia-jira-feature-collector:latest", - "env": [ - { - "name": "JIRA_BASE_URL", - "value": "https://jira.atlassian.com" - }, - { - "name": "JIRA_CREDENTIALS", - "value": "username:password" - } - ], - "resources": {}, - "volumeMounts": [ - { - "name": "hygieia-jira-feature-collector-claim0", - "mountPath": "/hygieia/logs" - } - ] - } - ], - "restartPolicy": "Always" - } - }, - "strategy": {} - }, - "status": {} - }, - { - "kind": "PersistentVolumeClaim", - "apiVersion": "v1", - "metadata": { - "name": "hygieia-jira-feature-collector-claim0", - "creationTimestamp": null - }, - "spec": { - "accessModes": [ - "ReadWriteOnce" - ], - "resources": { - "requests": { - "storage": "100Mi" - } - } - }, - "status": {} - }, { "kind": "Deployment", "apiVersion": "extensions/v1beta1", @@ -1192,6 +1075,147 @@ "strategy": {} }, "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-versionone-collector", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "hygieia-versionone-collector" + } + }, + "spec": { + "volumes": [ + { + "name": "hygieia-versionone-collector-claim0", + "persistentVolumeClaim": { + "claimName": "hygieia-versionone-collector-claim0" + } + } + ], + "containers": [ + { + "name": "hygieia-versionone", + "image": "hygieia-versionone-collector:latest", + "resources": {}, + "volumeMounts": [ + { + "name": "hygieia-versionone-collector-claim0", + "mountPath": "/hygieia/logs" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-versionone-collector-claim0", + "creationTimestamp": null + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "mongodb", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "mongodb" + } + }, + "spec": { + "volumes": [ + { + "name": "mongodb-claim0", + "persistentVolumeClaim": { + "claimName": "mongodb-claim0" + } + } + ], + "containers": [ + { + "name": "mongodb", + "image": "mongo:latest", + "args": [ + "mongod", + "--smallfiles" + ], + "ports": [ + { + "containerPort": 27017 + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "mongodb-claim0", + "mountPath": "/data/db" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "mongodb-claim0", + "creationTimestamp": null + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} } ] } diff --git a/script/test/fixtures/etherpad/output-k8s.json b/script/test/fixtures/etherpad/output-k8s.json index 4f0e5fd7..df482315 100644 --- a/script/test/fixtures/etherpad/output-k8s.json +++ b/script/test/fixtures/etherpad/output-k8s.json @@ -177,7 +177,9 @@ "restartPolicy": "Always" } }, - "strategy": {} + "strategy": { + "type": "Recreate" + } }, "status": {} }, diff --git a/script/test/fixtures/etherpad/output-os.json b/script/test/fixtures/etherpad/output-os.json index a86aed74..10c28be7 100644 --- a/script/test/fixtures/etherpad/output-os.json +++ b/script/test/fixtures/etherpad/output-os.json @@ -177,7 +177,8 @@ }, "spec": { "strategy": { - "resources": {} + "resources": {}, + "type": "Recreate" }, "triggers": [ { diff --git a/script/test/fixtures/multiple-compose-files/output-k8s.json b/script/test/fixtures/multiple-compose-files/output-k8s.json index 82f1a9d6..ca544dd7 100644 --- a/script/test/fixtures/multiple-compose-files/output-k8s.json +++ b/script/test/fixtures/multiple-compose-files/output-k8s.json @@ -203,7 +203,9 @@ "restartPolicy": "Always" } }, - "strategy": {} + "strategy": { + "type": "Recreate" + } }, "status": {} }, diff --git a/script/test/fixtures/multiple-compose-files/output-openshift.json b/script/test/fixtures/multiple-compose-files/output-openshift.json index 02108485..4c10ee22 100644 --- a/script/test/fixtures/multiple-compose-files/output-openshift.json +++ b/script/test/fixtures/multiple-compose-files/output-openshift.json @@ -190,6 +190,7 @@ }, "spec": { "strategy": { + "type": "Recreate", "resources": {} }, "triggers": [ diff --git a/script/test/fixtures/volume-mounts/simple-vol-mounts/output-k8s.json b/script/test/fixtures/volume-mounts/simple-vol-mounts/output-k8s.json index ec72b077..75f8f641 100644 --- a/script/test/fixtures/volume-mounts/simple-vol-mounts/output-k8s.json +++ b/script/test/fixtures/volume-mounts/simple-vol-mounts/output-k8s.json @@ -75,7 +75,9 @@ "restartPolicy": "Always" } }, - "strategy": {} + "strategy": { + "type": "Recreate" + } }, "status": {} }, diff --git a/script/test/fixtures/volume-mounts/simple-vol-mounts/output-os.json b/script/test/fixtures/volume-mounts/simple-vol-mounts/output-os.json index fd8e3a9b..2d877ca9 100644 --- a/script/test/fixtures/volume-mounts/simple-vol-mounts/output-os.json +++ b/script/test/fixtures/volume-mounts/simple-vol-mounts/output-os.json @@ -41,7 +41,8 @@ }, "spec": { "strategy": { - "resources": {} + "resources": {}, + "type": "Recreate" }, "triggers": [ { diff --git a/script/test/fixtures/volume-mounts/volumes-from/output-k8s.json b/script/test/fixtures/volume-mounts/volumes-from/output-k8s.json index 59253162..58d7c84a 100644 --- a/script/test/fixtures/volume-mounts/volumes-from/output-k8s.json +++ b/script/test/fixtures/volume-mounts/volumes-from/output-k8s.json @@ -106,7 +106,9 @@ "restartPolicy": "Always" } }, - "strategy": {} + "strategy": { + "type": "Recreate" + } }, "status": {} }, @@ -185,7 +187,9 @@ "restartPolicy": "Always" } }, - "strategy": {} + "strategy": { + "type": "Recreate" + } }, "status": {} }, diff --git a/script/test/fixtures/volume-mounts/volumes-from/output-os.json b/script/test/fixtures/volume-mounts/volumes-from/output-os.json index 41b0bf6f..49a4d489 100644 --- a/script/test/fixtures/volume-mounts/volumes-from/output-os.json +++ b/script/test/fixtures/volume-mounts/volumes-from/output-os.json @@ -67,7 +67,8 @@ }, "spec": { "strategy": { - "resources": {} + "resources": {}, + "type": "Recreate" }, "triggers": [ { @@ -198,7 +199,8 @@ }, "spec": { "strategy": { - "resources": {} + "resources": {}, + "type": "Recreate" }, "triggers": [ {