diff --git a/script/test/cmd/fixtures/bundles/dab/docker-compose-bundle.dab b/script/test/cmd/fixtures/bundles/dab/docker-compose-bundle.dab new file mode 100644 index 0000000000..3a7e4e3098 --- /dev/null +++ b/script/test/cmd/fixtures/bundles/dab/docker-compose-bundle.dab @@ -0,0 +1,25 @@ +{ + "services": { + "redis": { + "Image": "redis@sha256:561a224089a0c9a59de16bd596403010b42f417ef7c17142e9b64d7524e97beb", + "Networks": [], + "Ports": [ + { + "Port": 6379, + "Protocol": "tcp" + } + ] + }, + "web": { + "Image": "tuna/docker-counter23@sha256:c6755a375f5eda203c35940cbd05625517207efca4015e6a4a2c6fdef08cf5ed", + "Networks": [], + "Ports": [ + { + "Port": 5000, + "Protocol": "tcp" + } + ] + } + }, + "version": "0.1" +} \ No newline at end of file diff --git a/script/test/cmd/fixtures/bundles/dab/output-k8s.json b/script/test/cmd/fixtures/bundles/dab/output-k8s.json new file mode 100644 index 0000000000..bccaf809a0 --- /dev/null +++ b/script/test/cmd/fixtures/bundles/dab/output-k8s.json @@ -0,0 +1,131 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": "tuna/docker-counter23", + "ports": [ + { + "containerPort": 5000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/bundles/dsb/docker-voting-bundle.dsb b/script/test/cmd/fixtures/bundles/dsb/docker-voting-bundle.dsb new file mode 100644 index 0000000000..b9bff0430a --- /dev/null +++ b/script/test/cmd/fixtures/bundles/dsb/docker-voting-bundle.dsb @@ -0,0 +1,65 @@ +{ + "Services": { + "db": { + "Image": "postgres@sha256:33632bbd3222fa738d80a267b7c706a15d76eb3a59facab94bbd52a69cd1e30c", + "Labels": { + "com.example.description": "Postgres Database" + }, + "Networks": [ + "default" + ], + "Ports": [ + { + "Port": 5432, + "Protocol": "tcp" + } + ] + }, + "redis": { + "Image": "redis@sha256:afa4e7f6dc4d4f4294f54835bcfe610201057f5424b36310cba799e625849ebd", + "Networks": [ + "default" + ], + "Ports": [ + { + "Port": 6379, + "Protocol": "tcp" + } + ] + }, + "result": { + "Image": "tmadams333/example-voting-app-result@sha256:97d6ba26e5ffa35a89a3d97627fa3c8a3b0b3df8e708129eabcf9f2755e06d13", + "Networks": [ + "default" + ], + "Ports": [ + { + "Port": 80, + "Protocol": "tcp" + } + ] + }, + "vote": { + "Image": "docker/example-voting-app-vote@sha256:33f7924f9aaabd2aacf3f59a9c98e372360213ec94cb35f60842502632ec2f74", + "Labels": { + "com.example.description": "Vote" + }, + "Networks": [ + "default" + ], + "Ports": [ + { + "Port": 80, + "Protocol": "tcp" + } + ] + }, + "worker": { + "Image": "docker/example-voting-app-worker@sha256:62cbf0976fc66192d19412135fc422bfaaed5987a8ae405ff4d1968f1b714f24", + "Networks": [ + "default" + ] + } + }, + "Version": "0.1" +} diff --git a/script/test/cmd/fixtures/bundles/dsb/output-k8s.json b/script/test/cmd/fixtures/bundles/dsb/output-k8s.json new file mode 100644 index 0000000000..32a20ce859 --- /dev/null +++ b/script/test/cmd/fixtures/bundles/dsb/output-k8s.json @@ -0,0 +1,325 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "db", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "db" + }, + "annotations": { + "com.example.description": "Postgres Database" + } + }, + "spec": { + "ports": [ + { + "name": "5432", + "port": 5432, + "targetPort": 5432 + } + ], + "selector": { + "io.kompose.service": "db" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "result", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "result" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "io.kompose.service": "result" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "vote", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "vote" + }, + "annotations": { + "com.example.description": "Vote" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "io.kompose.service": "vote" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "worker", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "worker" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "worker" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "db", + "creationTimestamp": null, + "annotations": { + "com.example.description": "Postgres Database" + } + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "db" + } + }, + "spec": { + "containers": [ + { + "name": "db", + "image": "postgres", + "ports": [ + { + "containerPort": 5432 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "result", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "result" + } + }, + "spec": { + "containers": [ + { + "name": "result", + "image": "tmadams333/example-voting-app-result", + "ports": [ + { + "containerPort": 80 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "vote", + "creationTimestamp": null, + "annotations": { + "com.example.description": "Vote" + } + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "vote" + } + }, + "spec": { + "containers": [ + { + "name": "vote", + "image": "docker/example-voting-app-vote", + "ports": [ + { + "containerPort": 80 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "worker", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "worker" + } + }, + "spec": { + "containers": [ + { + "name": "worker", + "image": "docker/example-voting-app-worker", + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/entrypoint-command/docker-compose.yml b/script/test/cmd/fixtures/entrypoint-command/docker-compose.yml new file mode 100644 index 0000000000..7a6c336638 --- /dev/null +++ b/script/test/cmd/fixtures/entrypoint-command/docker-compose.yml @@ -0,0 +1,7 @@ +version: '2' + +services: + base: + image: busybox + entrypoint: echo + command: foo diff --git a/script/test/cmd/fixtures/entrypoint-command/output-k8s.json b/script/test/cmd/fixtures/entrypoint-command/output-k8s.json new file mode 100644 index 0000000000..0faa005d5f --- /dev/null +++ b/script/test/cmd/fixtures/entrypoint-command/output-k8s.json @@ -0,0 +1,71 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "base", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "base" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "base" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "base", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "base" + } + }, + "spec": { + "containers": [ + { + "name": "base", + "image": "busybox", + "command": [ + "echo" + ], + "args": [ + "foo" + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/entrypoint-command/output-os.json b/script/test/cmd/fixtures/entrypoint-command/output-os.json new file mode 100644 index 0000000000..fdc03ad0e7 --- /dev/null +++ b/script/test/cmd/fixtures/entrypoint-command/output-os.json @@ -0,0 +1,126 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "base", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "base" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "base" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "base", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "base" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "base" + ], + "from": { + "kind": "ImageStreamTag", + "name": "base:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "base" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "base" + } + }, + "spec": { + "containers": [ + { + "name": "base", + "image": " ", + "command": [ + "echo" + ], + "args": [ + "foo" + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "base", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "base" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "busybox" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + } + ] +} diff --git a/script/test/cmd/fixtures/envvars-separators/docker-compose.yml b/script/test/cmd/fixtures/envvars-separators/docker-compose.yml new file mode 100644 index 0000000000..81650cd12a --- /dev/null +++ b/script/test/cmd/fixtures/envvars-separators/docker-compose.yml @@ -0,0 +1,286 @@ +mongodb: + image: mongo:latest + container_name: mongodb + command: mongod --smallfiles + ports: + - "27017:27017" + volumes: + - ./mongo:/data/db:rw + volume_driver: local +hygieia-api: + image: hygieia-api:latest + container_name: hygieia-api + ports: + - "8080:8080" + volumes: + - ./logs:/hygieia/logs + links: + - mongodb:mongo +hygieia-ui: + image: hygieia-ui:latest + container_name: hygieia-ui + ports: + - "8088:80" + links: + - hygieia-api + + +hygieia-github-scm-collector: + image: hygieia-github-scm-collector:latest + container_name: hygieia-github + volumes: + - ./logs:/hygieia/logs + links: + - mongodb:mongo + - hygieia-api +# place any values you want to change in docker-compose.override.yml +# environment: +# - GITHUB_HOST=github.com +# - GITHUB_CRON='0 0/5 * * * *' +# - GITHUB_COMMIT_THREASHOLD_DAYS=15 + + + +hygieia-jira-feature-collector: + image: hygieia-jira-feature-collector:latest + container_name: hygieia-jira + volumes: + - ./logs:/hygieia/logs + links: + - mongodb:mongo + - hygieia-api + environment: + # you can override these by creating a docker-compose.overider.yml and put in entries like this: + #REQUIRED Entries + - JIRA_BASE_URL=https://jira.atlassian.com + #64-bit encoded credentials with the pattern username:password + #on a mac you con create them with : echo "username:password" | base64 + #reference: https://www.base64decode.org/ + - JIRA_CREDENTIALS=username:password + + #OPTIONAL - you may want ot tweek these +# - JIRA_CRON="0 * * * * *" + #Start dates from which to begin collector data, if no other data is present - usually, a month back is appropriate (required) +# - JIRA_DELTA_START_DATE=2015-03-01T00:00:00.000000 +# - JIRA_MASTER_START_DATE=2008-01-01T00:00:00.000000 + + #OPTIONAL Overrides if you need them + #Page size for data calls (Jira maxes at 1000) +# - JIRA_PAGE_SIZE=1000 + #Jira Connection Details +# - JIRA_PROXY_URL= +# - JIRA_PROXY_PORT= + # Trending Query: Number of days in a sprint (not-required) +# - JIRA_SPRINT_DAYS=60 + # Trending Query: Length of sprint week (not-required) +# - JIRA_SPRINT_END_PRIOR=7 + #Scheduled Job prior minutes to recover data created during execution time (usually, 2 minutes is enough) +# - JIRA_SCHEDULED_PRIOR_MIN=2 + #Delta change date that modulates the collector item task - should be about as far back as possible, in ISO format (required) +# - JIRA_DELTA_COLLECTOR_ITEM_START_DATE=2008-01-01T00:00:00.000000 + #Jira Connection Details +# - JIRA_QUERY_ENDPOINT=rest/api/2/ + #OAuth2.0 token credentials (currently not supported in this version) +# - JIRA_OAUTH_AUTH_TOKEN=sdfghjkl== +# - JIRA_OAUTH_REFRESH_TOKEN=sdfagheh== +# - JIRA_OAUTH_REDIRECT_URL=uri.this.is.test:uri +# - JIRA_OAUTH_EXPIRE_TIME=234567890987 + +# In Jira, general IssueType IDs are associated to various "issue" +# attributes. However, there is one attribute which this collector's +# queries rely on that change between different instantiations of Jira. +# Please provide a numerical ID reference to your instance's IssueType for +# the lowest level of Issues (e.g., "user story") specific to your Jira +# instance. Note: You can retrieve your instance's IssueType ID +# listings via the following URI: https://[your-jira-domain-name]/rest/api/2/issuetype/ +# - JIRA_ISSUE_TYPE_ID=Story + +# In Jira, your instance will have its own custom field created for "sprint" or "timebox" details, +# which includes a list of information. This field allows you to specify that data field for your +# instance of Jira. Note: You can retrieve your instance's sprint data field name +# via the following URI, and look for a package name com.atlassian.greenhopper.service.sprint.Sprint; +# your custom field name describes the values in this field: +# https://[your-jira-domain-name]/rest/api/2/issue/[some-issue-name] +# - JIRA_SPRINT_DATA_FIELD_NAME=customfield_10007 + +# In Jira, your instance will have its own custom field created for "super story" or "epic" back-end ID, +# which includes a list of information. This field allows you to specify that data field for your instance +# of Jira. Note: You can retrieve your instance's epic ID field name via the following URI where your +# queried user story issue has a super issue (e.g., epic) tied to it; your custom field name describes the +# epic value you expect to see, and is the only field that does this for a given issue: +# https://[your-jira-domain-name]/rest/api/2/issue/[some-issue-name] +# - JIRA_EPIC_FIELD_NAME=customfield_10400 + +# In Jira, your instance will have its own custom field created for "story points" +# This field allows you to specify that data field for your instance +# of Jira. Note: You can retrieve your instance's storypoints ID field name via the following URI where your +# queried user story issue has story points set on it; your custom field name describes the +# story points value you expect to see: +# https://[your-jira-domain-name]/rest/api/2/issue/[some-issue-name] +# - JIRA_STORY_POINTS_FIELD_NAME=customfield_10002 + +hygieia-jenkins-build-collector: + image: hygieia-jenkins-build-collector:latest + container_name: hygieia-jenkins-build + volumes: + - ./logs:/hygieia/logs + links: + - mongodb:mongo + - hygieia-api +# environment: +#Jenkins server (required) - Can provide multiple +# - JENKINS_MASTER=ttp://jenkins.company.com +#If using username/token for api authentication (required for Cloudbees Jenkins Ops Center) see sample +# - JENKINS_OP_CENTER=http://username:token@jenkins.company.com +#Another option: If using same username/password Jenkins auth - set username/apiKey to use HTTP Basic Auth (blank=no auth) +# - JENKINS_USERNAME +# - JENKINS_API_KEY +# - JENKINS_CRON=0 0/5 * * * * +#Determines if build console log is collected - defaults to false +# - JENKINS_SAVE_LOG=true + +hygieia-jenkins-cucumber-test-collector: + image: hygieia-jenkins-cucumber-test-collector:latest + container_name: hygieia-jenkins-cucumber + volumes: + - ./logs:/hygieia/logs + links: + - mongodb:mongo + - hygieia-api +# environment: +#Jenkins server (required) - Can provide multiple +# - JENKINS_MASTER=ttp://jenkins.company.com +#If using username/token for api authentication (required for Cloudbees Jenkins Ops Center) see sample +# - JENKINS_OP_CENTER=http://username:token@jenkins.company.com +#Another option: If using same username/password Jenkins auth - set username/apiKey to use HTTP Basic Auth (blank=no auth) +# - JENKINS_USERNAME +# - JENKINS_API_KEY +# - JENKINS_CRON=0 0/5 * * * * +#Determines if build console log is collected - defaults to false +# - JENKINS_SAVE_LOG=true + +hygieia-sonar-codequality-collector: + image: hygieia-sonar-codequality-collector:latest + container_name: hygieia-sonar-codequality + volumes: + - ./logs:/hygieia/logs + links: + - mongodb:mongo + - hygieia-api +# environment: +# - SONAR_CRON=0 0/5 * * * * +# - SONAR_URL=http://localhost:9000 + +hygieia-chat-ops-collector: + image: hygieia-chat-ops-collector:latest + container_name: hygieia-chat-ops + volumes: + - ./logs:/hygieia/logs + links: + - mongodb:mongo + - hygieia-api +# environment: +# - CHATOPS_CRON=0 0/5 * * * * + +hygieia-subversion-scm-collector: + image: hygieia-subversion-scm-collector:latest + container_name: hygieia-subversion + volumes: + - ./logs:/hygieia/logs + links: + - mongodb:mongo + - hygieia-api +# environment: +# - SUBVERSION_CRON:-0 0/5 * * * * + +#Shared subversion username and password +# - SUBVERSION_USERNAME= +# - SUBVERSION_PASSWORD= + +#Maximum number of days to go back in time when fetching commits +# - SUBVERSION_COMMIT_THRESHOLD_DAYS=15 + +hygieia-bitbucket-scm-collector: + image: hygieia-bitbucket-scm-collector:latest + container_name: hygieia-bitbucket + volumes: + - ./logs:/hygieia/logs + links: + - mongodb:mongo + - hygieia-api +# environment: + #mandatory +# - BITBUCKET_HOST=mybitbucketrepo.com/ +# - BITBUCKET_API=/rest/api/1.0/ +# - BITBUCKET_CRON=0 0/5 * * * * +# - BITBUCKET_PRODUCT=cloud + +#Maximum number of days to go back in time when fetching commits. Only applicable to Bitbucket Cloud. +# - BITBUCKET_COMMIT_THRESHOLD_DAYS=15 + +#Page size for rest calls. Only applicable to Bitbucket Server. +# - BITBUCKET_PAGE_SIZE=25 + +hygieia-versionone-collector: + image: hygieia-versionone-collector:latest + container_name: hygieia-versionone + volumes: + - ./logs:/hygieia/logs + links: + - mongodb:mongo + - hygieia-api +# environment: +#Page size for data calls (VersionOne recommended 2000) +# - VERSIONONE_PAGE_SIZE=2000 + +#In-built folder housing prepared REST queries (required) +# - VERSIONONE_QUERY_FOLDER=v1api-queries + +#Jira API Query file names (String template requires the files to have .st extension) (required) +# - VERSIONONE_STORY_QUERY=story +# - VERSIONONE_EPIC_QUERY=epicinfo +# - VERSIONONE_PROJECT_QUERY=projectinfo +# - VERSIONONE_MEMBBER_QUERY=memberinfo +# - VERSIONONE_SPRINT_QUERY=sprintinfo +# - VERSIONONE_TEAM_QUERY=teaminfo +# - VERSIONONE_TRENDING_QUERY=trendinginfo + +# Trending Query: Number of days in a sprint (not-required) +# - VERSIONONE_SPRINT_DAYS=60 +# Trending Query: Length of sprint week (not-required) +# - VERSIONONE_SPRINT_END_PRIOR=7 + +#Scheduled Job prior minutes to recover data created during execution time (usually, 2 minutes is enough) +# - VERSIONONE_SCHEDULED_PRIOR_MIN=2 + +#Delta change date that modulates the collector item task - should be about as far back as possible, in ISO format (required) +# - VERSIONONE_DELTA_COLLECTORITEM_START_DATE=2008-01-01T00:00:00.000000 + +#VersionOne Connection Details +#Proxy assumes a host:port syntax +# - VERSIONONE_PROXY_URL="" +# - VERSIONONE_URL=https://www.versionone.com/our-company-instance/ +#Access token provided by VersionOne +# - VERSIONONE_ACCESS_TOKEN=accessToken + +#Start dates from which to begin collector data, if no other data is present - usually, a month back is appropriate (required) +# - VERSIONONE_DELTA_START_DATE=2015-03-01T00:00:00.000000 +# - VERSIONONE_MASTER_START_DATE=2008-01-01T00:00:00.000000 + +hygieia-udeploy-collector: + image: hygieia-udeploy-collector:latest + container_name: hygieia-udeploy + volumes: + - ./logs:/hygieia/logs + links: + - mongodb:mongo + - hygieia-api + environment: +#UDeploy server (required) - Can provide multiple + - UDEPLOY_URL:-http://udeploy.company.com +#UDeploy user name (required) + - UDEPLOY_USERNAME:-bobama +#UDeploy password (required) + - UDEPLOY_PASSWORD:-s3cr3t +#Collector schedule (required) +# - UDEPLOY_CRON:-0 0/5 * * * * diff --git a/script/test/cmd/fixtures/envvars-separators/output-k8s.json b/script/test/cmd/fixtures/envvars-separators/output-k8s.json new file mode 100644 index 0000000000..1b02cbaafa --- /dev/null +++ b/script/test/cmd/fixtures/envvars-separators/output-k8s.json @@ -0,0 +1,1257 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-api", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-api" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "hygieia-api" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-bitbucket-scm-collector", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-bitbucket-scm-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "hygieia-bitbucket-scm-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-chat-ops-collector", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-chat-ops-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "hygieia-chat-ops-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-github-scm-collector", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-github-scm-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "hygieia-github-scm-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-jenkins-build-collector", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-jenkins-build-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "hygieia-jenkins-build-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-jenkins-cucumber-test-collector", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-jenkins-cucumber-test-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "hygieia-jenkins-cucumber-test-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-jira-feature-collector", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-jira-feature-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "hygieia-jira-feature-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-sonar-codequality-collector", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-sonar-codequality-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "hygieia-sonar-codequality-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-subversion-scm-collector", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-subversion-scm-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "hygieia-subversion-scm-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-udeploy-collector", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-udeploy-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "hygieia-udeploy-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-ui", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-ui" + } + }, + "spec": { + "ports": [ + { + "name": "8088", + "port": 8088, + "targetPort": 80 + } + ], + "selector": { + "io.kompose.service": "hygieia-ui" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-versionone-collector", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-versionone-collector" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "hygieia-versionone-collector" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "mongodb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mongodb" + } + }, + "spec": { + "ports": [ + { + "name": "27017", + "port": 27017, + "targetPort": 27017 + } + ], + "selector": { + "io.kompose.service": "mongodb" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-api", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.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": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-api-claim0", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-api-claim0" + } + }, + "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": { + "io.kompose.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, + "labels": { + "io.kompose.service": "hygieia-bitbucket-scm-collector-claim0" + } + }, + "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": { + "io.kompose.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, + "labels": { + "io.kompose.service": "hygieia-chat-ops-collector-claim0" + } + }, + "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": { + "io.kompose.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, + "labels": { + "io.kompose.service": "hygieia-github-scm-collector-claim0" + } + }, + "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": { + "io.kompose.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, + "labels": { + "io.kompose.service": "hygieia-jenkins-build-collector-claim0" + } + }, + "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": { + "io.kompose.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, + "labels": { + "io.kompose.service": "hygieia-jenkins-cucumber-test-collector-claim0" + } + }, + "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": { + "io.kompose.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, + "labels": { + "io.kompose.service": "hygieia-jira-feature-collector-claim0" + } + }, + "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": { + "io.kompose.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, + "labels": { + "io.kompose.service": "hygieia-sonar-codequality-collector-claim0" + } + }, + "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": { + "io.kompose.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, + "labels": { + "io.kompose.service": "hygieia-subversion-scm-collector-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-udeploy-collector", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-udeploy-collector" + } + }, + "spec": { + "volumes": [ + { + "name": "hygieia-udeploy-collector-claim0", + "persistentVolumeClaim": { + "claimName": "hygieia-udeploy-collector-claim0" + } + } + ], + "containers": [ + { + "name": "hygieia-udeploy", + "image": "hygieia-udeploy-collector:latest", + "env": [ + { + "name": "UDEPLOY_URL", + "value": "-http://udeploy.company.com" + }, + { + "name": "UDEPLOY_USERNAME", + "value": "-bobama" + }, + { + "name": "UDEPLOY_PASSWORD", + "value": "-s3cr3t" + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "hygieia-udeploy-collector-claim0", + "mountPath": "/hygieia/logs" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "hygieia-udeploy-collector-claim0", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-udeploy-collector-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-ui", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "hygieia-ui" + } + }, + "spec": { + "containers": [ + { + "name": "hygieia-ui", + "image": "hygieia-ui:latest", + "ports": [ + { + "containerPort": 80 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "hygieia-versionone-collector", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.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, + "labels": { + "io.kompose.service": "hygieia-versionone-collector-claim0" + } + }, + "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": { + "io.kompose.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, + "labels": { + "io.kompose.service": "mongodb-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/etherpad/README.md b/script/test/cmd/fixtures/etherpad/README.md new file mode 100644 index 0000000000..61887d7537 --- /dev/null +++ b/script/test/cmd/fixtures/etherpad/README.md @@ -0,0 +1,14 @@ +## Docker Compose Etherpad + +Etherpad and Mariadb + +### Usage + +The simplest thing to do: + +```bash +export $(cat envs) +docker-compose up +``` + +To customize the values edit `envs` file. diff --git a/script/test/cmd/fixtures/etherpad/docker-compose-no-image.yml b/script/test/cmd/fixtures/etherpad/docker-compose-no-image.yml new file mode 100644 index 0000000000..513936a46b --- /dev/null +++ b/script/test/cmd/fixtures/etherpad/docker-compose-no-image.yml @@ -0,0 +1,11 @@ +version: "2" + +services: + mariadb: + ports: + - 3306 + + etherpad: + ports: + - "80:9001" + diff --git a/script/test/cmd/fixtures/etherpad/docker-compose-no-ports.yml b/script/test/cmd/fixtures/etherpad/docker-compose-no-ports.yml new file mode 100644 index 0000000000..efc1a53d99 --- /dev/null +++ b/script/test/cmd/fixtures/etherpad/docker-compose-no-ports.yml @@ -0,0 +1,5 @@ +version: "2" + +services: + mariadb: + image: centos/mariadb diff --git a/script/test/cmd/fixtures/etherpad/docker-compose.yml b/script/test/cmd/fixtures/etherpad/docker-compose.yml new file mode 100644 index 0000000000..63478033ad --- /dev/null +++ b/script/test/cmd/fixtures/etherpad/docker-compose.yml @@ -0,0 +1,27 @@ +version: "2" + +services: + mariadb: + image: centos/mariadb + ports: + - "$DB_PORT" + environment: + - "MYSQL_ROOT_PASSWORD=${ROOT_PASS}" + - "MYSQL_DATABASE=${DB_NAME}" + - "MYSQL_PASSWORD=${DB_PASS}" + - "MYSQL_USER=${DB_USER}" + volumes: + - /var/lib/mysql + + etherpad: + image: centos/etherpad + ports: + - "80:9001" + depends_on: + - mariadb + environment: + - "DB_HOST=${DB_HOST}" + - "DB_DBID=${DB_NAME}" + - "DB_PASS=${DB_PASS}" + - "DB_PORT=${DB_PORT}" + - "DB_USER=${DB_USER}" diff --git a/script/test/cmd/fixtures/etherpad/envs b/script/test/cmd/fixtures/etherpad/envs new file mode 100644 index 0000000000..d02528d6d5 --- /dev/null +++ b/script/test/cmd/fixtures/etherpad/envs @@ -0,0 +1,6 @@ +DB_HOST=mariadb +ROOT_PASS=etherpad +DB_NAME=etherpad +DB_PASS=etherpad +DB_USER=etherpad +DB_PORT=3306 diff --git a/script/test/cmd/fixtures/etherpad/output-k8s.json b/script/test/cmd/fixtures/etherpad/output-k8s.json new file mode 100644 index 0000000000..4111acf4b7 --- /dev/null +++ b/script/test/cmd/fixtures/etherpad/output-k8s.json @@ -0,0 +1,209 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "etherpad", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "etherpad" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 9001 + } + ], + "selector": { + "io.kompose.service": "etherpad" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "ports": [ + { + "name": "3306", + "port": 3306, + "targetPort": 3306 + } + ], + "selector": { + "io.kompose.service": "mariadb" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "etherpad", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "etherpad" + } + }, + "spec": { + "containers": [ + { + "name": "etherpad", + "image": "centos/etherpad", + "ports": [ + { + "containerPort": 9001 + } + ], + "env": [ + { + "name": "DB_HOST", + "value": "mariadb" + }, + { + "name": "DB_DBID", + "value": "etherpad" + }, + { + "name": "DB_PASS", + "value": "etherpad" + }, + { + "name": "DB_PORT", + "value": "3306" + }, + { + "name": "DB_USER", + "value": "etherpad" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "volumes": [ + { + "name": "mariadb-claim0", + "persistentVolumeClaim": { + "claimName": "mariadb-claim0" + } + } + ], + "containers": [ + { + "name": "mariadb", + "image": "centos/mariadb", + "ports": [ + { + "containerPort": 3306 + } + ], + "env": [ + { + "name": "MYSQL_ROOT_PASSWORD", + "value": "etherpad" + }, + { + "name": "MYSQL_DATABASE", + "value": "etherpad" + }, + { + "name": "MYSQL_PASSWORD", + "value": "etherpad" + }, + { + "name": "MYSQL_USER", + "value": "etherpad" + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "mariadb-claim0", + "mountPath": "/var/lib/mysql" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "mariadb-claim0", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/etherpad/output-os.json b/script/test/cmd/fixtures/etherpad/output-os.json new file mode 100644 index 0000000000..56376aae89 --- /dev/null +++ b/script/test/cmd/fixtures/etherpad/output-os.json @@ -0,0 +1,318 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "etherpad", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "etherpad" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 9001 + } + ], + "selector": { + "io.kompose.service": "etherpad" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "ports": [ + { + "name": "3306", + "port": 3306, + "targetPort": 3306 + } + ], + "selector": { + "io.kompose.service": "mariadb" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "etherpad", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "etherpad" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "etherpad" + ], + "from": { + "kind": "ImageStreamTag", + "name": "etherpad:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "etherpad" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "etherpad" + } + }, + "spec": { + "containers": [ + { + "name": "etherpad", + "image": " ", + "ports": [ + { + "containerPort": 9001 + } + ], + "env": [ + { + "name": "DB_HOST", + "value": "mariadb" + }, + { + "name": "DB_DBID", + "value": "etherpad" + }, + { + "name": "DB_PASS", + "value": "etherpad" + }, + { + "name": "DB_PORT", + "value": "3306" + }, + { + "name": "DB_USER", + "value": "etherpad" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "etherpad", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "etherpad" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "centos/etherpad" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "strategy": { + "type": "Recreate", + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "mariadb" + ], + "from": { + "kind": "ImageStreamTag", + "name": "mariadb:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "mariadb" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "volumes": [ + { + "name": "mariadb-claim0", + "persistentVolumeClaim": { + "claimName": "mariadb-claim0" + } + } + ], + "containers": [ + { + "name": "mariadb", + "image": " ", + "ports": [ + { + "containerPort": 3306 + } + ], + "env": [ + { + "name": "MYSQL_ROOT_PASSWORD", + "value": "etherpad" + }, + { + "name": "MYSQL_DATABASE", + "value": "etherpad" + }, + { + "name": "MYSQL_PASSWORD", + "value": "etherpad" + }, + { + "name": "MYSQL_USER", + "value": "etherpad" + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "mariadb-claim0", + "mountPath": "/var/lib/mysql" + } + ] + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "centos/mariadb" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "mariadb-claim0", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/expose-service/compose-files/docker-compose-expose-hostname-multiple-ports.yml b/script/test/cmd/fixtures/expose-service/compose-files/docker-compose-expose-hostname-multiple-ports.yml new file mode 100644 index 0000000000..79053afacb --- /dev/null +++ b/script/test/cmd/fixtures/expose-service/compose-files/docker-compose-expose-hostname-multiple-ports.yml @@ -0,0 +1,13 @@ +web: + image: tuna/docker-counter23 + ports: + - "5000:5000" + - "4000:4000" + links: + - redis + labels: + kompose.service.expose: "batman.example.com" +redis: + image: redis:3.0 + ports: + - "6379" diff --git a/script/test/cmd/fixtures/expose-service/compose-files/docker-compose-expose-hostname.yml b/script/test/cmd/fixtures/expose-service/compose-files/docker-compose-expose-hostname.yml new file mode 100644 index 0000000000..63a9e54d3f --- /dev/null +++ b/script/test/cmd/fixtures/expose-service/compose-files/docker-compose-expose-hostname.yml @@ -0,0 +1,12 @@ +web: + image: tuna/docker-counter23 + ports: + - "5000:5000" + links: + - redis + labels: + kompose.service.expose: "batman.example.com" +redis: + image: redis:3.0 + ports: + - "6379" diff --git a/script/test/cmd/fixtures/expose-service/compose-files/docker-compose-expose-true-multiple-ports.yml b/script/test/cmd/fixtures/expose-service/compose-files/docker-compose-expose-true-multiple-ports.yml new file mode 100644 index 0000000000..5764a6cf3f --- /dev/null +++ b/script/test/cmd/fixtures/expose-service/compose-files/docker-compose-expose-true-multiple-ports.yml @@ -0,0 +1,13 @@ +web: + image: tuna/docker-counter23 + ports: + - "5000:5000" + - "4000:4000" + links: + - redis + labels: + kompose.service.expose: "True" +redis: + image: redis:3.0 + ports: + - "6379" diff --git a/script/test/cmd/fixtures/expose-service/compose-files/docker-compose-expose-true.yml b/script/test/cmd/fixtures/expose-service/compose-files/docker-compose-expose-true.yml new file mode 100644 index 0000000000..36249d15e8 --- /dev/null +++ b/script/test/cmd/fixtures/expose-service/compose-files/docker-compose-expose-true.yml @@ -0,0 +1,12 @@ +web: + image: tuna/docker-counter23 + ports: + - "5000:5000" + links: + - redis + labels: + kompose.service.expose: "True" +redis: + image: redis:3.0 + ports: + - "6379" diff --git a/script/test/cmd/fixtures/expose-service/provider-files/kubernetes-expose-hostname-multiple-ports.json b/script/test/cmd/fixtures/expose-service/provider-files/kubernetes-expose-hostname-multiple-ports.json new file mode 100644 index 0000000000..d2dc9ce485 --- /dev/null +++ b/script/test/cmd/fixtures/expose-service/provider-files/kubernetes-expose-hostname-multiple-ports.json @@ -0,0 +1,176 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + }, + "annotations": { + "kompose.service.expose": "batman.example.com" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + }, + { + "name": "4000", + "port": 4000, + "targetPort": 4000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis:3.0", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "annotations": { + "kompose.service.expose": "batman.example.com" + } + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": "tuna/docker-counter23", + "ports": [ + { + "containerPort": 5000 + }, + { + "containerPort": 4000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Ingress", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "rules": [ + { + "host": "batman.example.com", + "http": { + "paths": [ + { + "backend": { + "serviceName": "web", + "servicePort": 5000 + } + } + ] + } + } + ] + }, + "status": { + "loadBalancer": {} + } + } + ] +} diff --git a/script/test/cmd/fixtures/expose-service/provider-files/kubernetes-expose-hostname.json b/script/test/cmd/fixtures/expose-service/provider-files/kubernetes-expose-hostname.json new file mode 100644 index 0000000000..902be11a45 --- /dev/null +++ b/script/test/cmd/fixtures/expose-service/provider-files/kubernetes-expose-hostname.json @@ -0,0 +1,168 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + }, + "annotations": { + "kompose.service.expose": "batman.example.com" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis:3.0", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "annotations": { + "kompose.service.expose": "batman.example.com" + } + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": "tuna/docker-counter23", + "ports": [ + { + "containerPort": 5000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Ingress", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "rules": [ + { + "host": "batman.example.com", + "http": { + "paths": [ + { + "backend": { + "serviceName": "web", + "servicePort": 5000 + } + } + ] + } + } + ] + }, + "status": { + "loadBalancer": {} + } + } + ] +} diff --git a/script/test/cmd/fixtures/expose-service/provider-files/kubernetes-expose-true-multiple-ports.json b/script/test/cmd/fixtures/expose-service/provider-files/kubernetes-expose-true-multiple-ports.json new file mode 100644 index 0000000000..b6842d7bb9 --- /dev/null +++ b/script/test/cmd/fixtures/expose-service/provider-files/kubernetes-expose-true-multiple-ports.json @@ -0,0 +1,175 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + }, + "annotations": { + "kompose.service.expose": "True" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + }, + { + "name": "4000", + "port": 4000, + "targetPort": 4000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis:3.0", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "annotations": { + "kompose.service.expose": "True" + } + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": "tuna/docker-counter23", + "ports": [ + { + "containerPort": 5000 + }, + { + "containerPort": 4000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Ingress", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "rules": [ + { + "http": { + "paths": [ + { + "backend": { + "serviceName": "web", + "servicePort": 5000 + } + } + ] + } + } + ] + }, + "status": { + "loadBalancer": {} + } + } + ] +} diff --git a/script/test/cmd/fixtures/expose-service/provider-files/kubernetes-expose-true.json b/script/test/cmd/fixtures/expose-service/provider-files/kubernetes-expose-true.json new file mode 100644 index 0000000000..ab77b2a433 --- /dev/null +++ b/script/test/cmd/fixtures/expose-service/provider-files/kubernetes-expose-true.json @@ -0,0 +1,167 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + }, + "annotations": { + "kompose.service.expose": "True" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis:3.0", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "annotations": { + "kompose.service.expose": "True" + } + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": "tuna/docker-counter23", + "ports": [ + { + "containerPort": 5000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Ingress", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "rules": [ + { + "http": { + "paths": [ + { + "backend": { + "serviceName": "web", + "servicePort": 5000 + } + } + ] + } + } + ] + }, + "status": { + "loadBalancer": {} + } + } + ] +} diff --git a/script/test/cmd/fixtures/expose-service/provider-files/openshift-expose-hostname-multiple-ports.json b/script/test/cmd/fixtures/expose-service/provider-files/openshift-expose-hostname-multiple-ports.json new file mode 100644 index 0000000000..a5ec61d301 --- /dev/null +++ b/script/test/cmd/fixtures/expose-service/provider-files/openshift-expose-hostname-multiple-ports.json @@ -0,0 +1,280 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + }, + "annotations": { + "kompose.service.expose": "batman.example.com" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + }, + { + "name": "4000", + "port": 4000, + "targetPort": 4000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "redis" + ], + "from": { + "kind": "ImageStreamTag", + "name": "redis:3.0" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "redis" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": " ", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "tags": [ + { + "name": "3.0", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "redis:3.0" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + }, + "annotations": { + "kompose.service.expose": "batman.example.com" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "web" + ], + "from": { + "kind": "ImageStreamTag", + "name": "web:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "web" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": " ", + "ports": [ + { + "containerPort": 5000 + }, + { + "containerPort": 4000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "tuna/docker-counter23" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "Route", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "host": "batman.example.com", + "to": { + "kind": "Service", + "name": "web", + "weight": null + }, + "port": { + "targetPort": 5000 + } + }, + "status": { + "ingress": null + } + } + ] +} diff --git a/script/test/cmd/fixtures/expose-service/provider-files/openshift-expose-hostname.json b/script/test/cmd/fixtures/expose-service/provider-files/openshift-expose-hostname.json new file mode 100644 index 0000000000..ddd384120f --- /dev/null +++ b/script/test/cmd/fixtures/expose-service/provider-files/openshift-expose-hostname.json @@ -0,0 +1,272 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + }, + "annotations": { + "kompose.service.expose": "batman.example.com" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "redis" + ], + "from": { + "kind": "ImageStreamTag", + "name": "redis:3.0" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "redis" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": " ", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "tags": [ + { + "name": "3.0", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "redis:3.0" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + }, + "annotations": { + "kompose.service.expose": "batman.example.com" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "web" + ], + "from": { + "kind": "ImageStreamTag", + "name": "web:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "web" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": " ", + "ports": [ + { + "containerPort": 5000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "tuna/docker-counter23" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "Route", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "host": "batman.example.com", + "to": { + "kind": "Service", + "name": "web", + "weight": null + }, + "port": { + "targetPort": 5000 + } + }, + "status": { + "ingress": null + } + } + ] +} diff --git a/script/test/cmd/fixtures/expose-service/provider-files/openshift-expose-true-multiple-ports.json b/script/test/cmd/fixtures/expose-service/provider-files/openshift-expose-true-multiple-ports.json new file mode 100644 index 0000000000..5b5f720000 --- /dev/null +++ b/script/test/cmd/fixtures/expose-service/provider-files/openshift-expose-true-multiple-ports.json @@ -0,0 +1,280 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + }, + "annotations": { + "kompose.service.expose": "True" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + }, + { + "name": "4000", + "port": 4000, + "targetPort": 4000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "redis" + ], + "from": { + "kind": "ImageStreamTag", + "name": "redis:3.0" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "redis" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": " ", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "tags": [ + { + "name": "3.0", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "redis:3.0" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + }, + "annotations": { + "kompose.service.expose": "True" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "web" + ], + "from": { + "kind": "ImageStreamTag", + "name": "web:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "web" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": " ", + "ports": [ + { + "containerPort": 5000 + }, + { + "containerPort": 4000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "tuna/docker-counter23" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "Route", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "host": "", + "to": { + "kind": "Service", + "name": "web", + "weight": null + }, + "port": { + "targetPort": 5000 + } + }, + "status": { + "ingress": null + } + } + ] +} diff --git a/script/test/cmd/fixtures/expose-service/provider-files/openshift-expose-true.json b/script/test/cmd/fixtures/expose-service/provider-files/openshift-expose-true.json new file mode 100644 index 0000000000..ed206793fd --- /dev/null +++ b/script/test/cmd/fixtures/expose-service/provider-files/openshift-expose-true.json @@ -0,0 +1,272 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + }, + "annotations": { + "kompose.service.expose": "True" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "redis" + ], + "from": { + "kind": "ImageStreamTag", + "name": "redis:3.0" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "redis" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": " ", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "tags": [ + { + "name": "3.0", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "redis:3.0" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + }, + "annotations": { + "kompose.service.expose": "True" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "web" + ], + "from": { + "kind": "ImageStreamTag", + "name": "web:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "web" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": " ", + "ports": [ + { + "containerPort": 5000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "tuna/docker-counter23" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "Route", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "host": "", + "to": { + "kind": "Service", + "name": "web", + "weight": null + }, + "port": { + "targetPort": 5000 + } + }, + "status": { + "ingress": null + } + } + ] +} diff --git a/script/test/cmd/fixtures/gitlab/README.md b/script/test/cmd/fixtures/gitlab/README.md new file mode 100644 index 0000000000..f275d37817 --- /dev/null +++ b/script/test/cmd/fixtures/gitlab/README.md @@ -0,0 +1,14 @@ +## Gitlab + +Gitlab, Postgresql, Redis + +### Usage + +The simplest thing to do: + +```bash +export $(cat envs) +docker-compose up +``` + +To customize the values edit `envs` file. diff --git a/script/test/cmd/fixtures/gitlab/docker-compose.yml b/script/test/cmd/fixtures/gitlab/docker-compose.yml new file mode 100644 index 0000000000..bc986d943c --- /dev/null +++ b/script/test/cmd/fixtures/gitlab/docker-compose.yml @@ -0,0 +1,33 @@ +version: "2" + +services: + postgresql: + image: swordphilic/postgresql + ports: + - "$DB_PORT" + environment: + - "DB_NAME=${DB_NAME}" + - "DB_PASS=${DB_PASS}" + - "DB_USER=${DB_USER}" + + gitlab: + image: swordphilic/gitlab + ports: + - "30000:80" + - "30001:443" + - "30002:22" + restart: always + environment: + - "DB_TYPE=postgres" + - "DB_HOST=postgresql" + - "DB_PORT=${DB_PORT}" + - "DB_NAME=${DB_NAME}" + - "DB_PASS=${DB_PASS}" + - "DB_USER=${DB_USER}" + - "REDIS_HOST=redis" + - "REDIS_PORT=${REDIS_PORT}" + + redis: + image: swordphilic/redis + ports: + - "$REDIS_PORT" diff --git a/script/test/cmd/fixtures/gitlab/envs b/script/test/cmd/fixtures/gitlab/envs new file mode 100644 index 0000000000..fe1e0d2e91 --- /dev/null +++ b/script/test/cmd/fixtures/gitlab/envs @@ -0,0 +1,5 @@ +DB_PORT=5432 +DB_NAME=gitlab +DB_PASS=gitlab +DB_USER=gitlab +REDIS_PORT=6379 diff --git a/script/test/cmd/fixtures/gitlab/output-k8s.json b/script/test/cmd/fixtures/gitlab/output-k8s.json new file mode 100644 index 0000000000..2d4d800e5f --- /dev/null +++ b/script/test/cmd/fixtures/gitlab/output-k8s.json @@ -0,0 +1,257 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "gitlab", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "gitlab" + } + }, + "spec": { + "ports": [ + { + "name": "30000", + "port": 30000, + "targetPort": 80 + }, + { + "name": "30001", + "port": 30001, + "targetPort": 443 + }, + { + "name": "30002", + "port": 30002, + "targetPort": 22 + } + ], + "selector": { + "io.kompose.service": "gitlab" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "postgresql", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "postgresql" + } + }, + "spec": { + "ports": [ + { + "name": "5432", + "port": 5432, + "targetPort": 5432 + } + ], + "selector": { + "io.kompose.service": "postgresql" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "gitlab", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "gitlab" + } + }, + "spec": { + "containers": [ + { + "name": "gitlab", + "image": "swordphilic/gitlab", + "ports": [ + { + "containerPort": 80 + }, + { + "containerPort": 443 + }, + { + "containerPort": 22 + } + ], + "env": [ + { + "name": "DB_TYPE", + "value": "postgres" + }, + { + "name": "DB_HOST", + "value": "postgresql" + }, + { + "name": "DB_PORT", + "value": "5432" + }, + { + "name": "DB_NAME", + "value": "gitlab" + }, + { + "name": "DB_PASS", + "value": "gitlab" + }, + { + "name": "DB_USER", + "value": "gitlab" + }, + { + "name": "REDIS_HOST", + "value": "redis" + }, + { + "name": "REDIS_PORT", + "value": "6379" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "postgresql", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "postgresql" + } + }, + "spec": { + "containers": [ + { + "name": "postgresql", + "image": "swordphilic/postgresql", + "ports": [ + { + "containerPort": 5432 + } + ], + "env": [ + { + "name": "DB_NAME", + "value": "gitlab" + }, + { + "name": "DB_PASS", + "value": "gitlab" + }, + { + "name": "DB_USER", + "value": "gitlab" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "swordphilic/redis", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/gitlab/output-os.json b/script/test/cmd/fixtures/gitlab/output-os.json new file mode 100644 index 0000000000..1cbfbd8730 --- /dev/null +++ b/script/test/cmd/fixtures/gitlab/output-os.json @@ -0,0 +1,422 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "gitlab", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "gitlab" + } + }, + "spec": { + "ports": [ + { + "name": "30000", + "port": 30000, + "targetPort": 80 + }, + { + "name": "30001", + "port": 30001, + "targetPort": 443 + }, + { + "name": "30002", + "port": 30002, + "targetPort": 22 + } + ], + "selector": { + "io.kompose.service": "gitlab" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "postgresql", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "postgresql" + } + }, + "spec": { + "ports": [ + { + "name": "5432", + "port": 5432, + "targetPort": 5432 + } + ], + "selector": { + "io.kompose.service": "postgresql" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "gitlab", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "gitlab" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "gitlab" + ], + "from": { + "kind": "ImageStreamTag", + "name": "gitlab:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "gitlab" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "gitlab" + } + }, + "spec": { + "containers": [ + { + "name": "gitlab", + "image": " ", + "ports": [ + { + "containerPort": 80 + }, + { + "containerPort": 443 + }, + { + "containerPort": 22 + } + ], + "env": [ + { + "name": "DB_TYPE", + "value": "postgres" + }, + { + "name": "DB_HOST", + "value": "postgresql" + }, + { + "name": "DB_PORT", + "value": "5432" + }, + { + "name": "DB_NAME", + "value": "gitlab" + }, + { + "name": "DB_PASS", + "value": "gitlab" + }, + { + "name": "DB_USER", + "value": "gitlab" + }, + { + "name": "REDIS_HOST", + "value": "redis" + }, + { + "name": "REDIS_PORT", + "value": "6379" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "gitlab", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "gitlab" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "swordphilic/gitlab" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "postgresql", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "postgresql" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "postgresql" + ], + "from": { + "kind": "ImageStreamTag", + "name": "postgresql:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "postgresql" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "postgresql" + } + }, + "spec": { + "containers": [ + { + "name": "postgresql", + "image": " ", + "ports": [ + { + "containerPort": 5432 + } + ], + "env": [ + { + "name": "DB_NAME", + "value": "gitlab" + }, + { + "name": "DB_PASS", + "value": "gitlab" + }, + { + "name": "DB_USER", + "value": "gitlab" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "postgresql", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "postgresql" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "swordphilic/postgresql" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "redis" + ], + "from": { + "kind": "ImageStreamTag", + "name": "redis:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "redis" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": " ", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "swordphilic/redis" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + } + ] +} diff --git a/script/test/cmd/fixtures/keyonly-envs/env.yml b/script/test/cmd/fixtures/keyonly-envs/env.yml new file mode 100644 index 0000000000..d13923f784 --- /dev/null +++ b/script/test/cmd/fixtures/keyonly-envs/env.yml @@ -0,0 +1,25 @@ +version: "2" + +services: + redis-master: + image: gcr.io/google_containers/redis:e2e + ports: + - "6379" + redis-slave: + image: gcr.io/google_samples/gb-redisslave:v1 + ports: + - "6379" + environment: + - GET_HOSTS_FROM=dns + - RACK_ENV=development + - SHOW=true + - SESSION_SECRET + frontend: + image: gcr.io/google-samples/gb-frontend:v4 + ports: + - "80:80" + environment: + GET_HOSTS_FROM: dns + RACK_ENV: development + SHOW: 'true' + SESSION_SECRET: diff --git a/script/test/cmd/fixtures/keyonly-envs/envs b/script/test/cmd/fixtures/keyonly-envs/envs new file mode 100644 index 0000000000..870a725069 --- /dev/null +++ b/script/test/cmd/fixtures/keyonly-envs/envs @@ -0,0 +1 @@ +SESSION_SECRET=session diff --git a/script/test/cmd/fixtures/keyonly-envs/output-k8s.json b/script/test/cmd/fixtures/keyonly-envs/output-k8s.json new file mode 100644 index 0000000000..5605984ab9 --- /dev/null +++ b/script/test/cmd/fixtures/keyonly-envs/output-k8s.json @@ -0,0 +1,229 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "frontend", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "frontend" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "io.kompose.service": "frontend" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis-master", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis-master" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis-master" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis-slave", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis-slave" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis-slave" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "frontend", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "frontend" + } + }, + "spec": { + "containers": [ + { + "name": "frontend", + "image": "gcr.io/google-samples/gb-frontend:v4", + "ports": [ + { + "containerPort": 80 + } + ], + "env": [ + { + "name": "SESSION_SECRET", + "value": "session" + }, + { + "name": "SHOW", + "value": "true" + }, + { + "name": "GET_HOSTS_FROM", + "value": "dns" + }, + { + "name": "RACK_ENV", + "value": "development" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis-master", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis-master" + } + }, + "spec": { + "containers": [ + { + "name": "redis-master", + "image": "gcr.io/google_containers/redis:e2e", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis-slave", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis-slave" + } + }, + "spec": { + "containers": [ + { + "name": "redis-slave", + "image": "gcr.io/google_samples/gb-redisslave:v1", + "ports": [ + { + "containerPort": 6379 + } + ], + "env": [ + { + "name": "GET_HOSTS_FROM", + "value": "dns" + }, + { + "name": "RACK_ENV", + "value": "development" + }, + { + "name": "SHOW", + "value": "true" + }, + { + "name": "SESSION_SECRET", + "value": "session" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/mem-limit/docker-compose-mb.yml b/script/test/cmd/fixtures/mem-limit/docker-compose-mb.yml new file mode 100644 index 0000000000..846d6cf8ab --- /dev/null +++ b/script/test/cmd/fixtures/mem-limit/docker-compose-mb.yml @@ -0,0 +1,11 @@ +version: "2" + +services: + redis: + image: redis:3.0 + networks: + - default + ports: + - "6379/tcp" + - "1234:1235/udp" + mem_limit: 10000Mb diff --git a/script/test/cmd/fixtures/mem-limit/docker-compose.yml b/script/test/cmd/fixtures/mem-limit/docker-compose.yml new file mode 100644 index 0000000000..eb1268a6c5 --- /dev/null +++ b/script/test/cmd/fixtures/mem-limit/docker-compose.yml @@ -0,0 +1,11 @@ +version: "2" + +services: + redis: + image: redis:3.0 + networks: + - default + ports: + - "6379/tcp" + - "1234:1235/udp" + mem_limit: 10000 diff --git a/script/test/cmd/fixtures/mem-limit/output-k8s.json b/script/test/cmd/fixtures/mem-limit/output-k8s.json new file mode 100644 index 0000000000..dd7828d3ca --- /dev/null +++ b/script/test/cmd/fixtures/mem-limit/output-k8s.json @@ -0,0 +1,83 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + }, + { + "name": "1234", + "protocol": "UDP", + "port": 1234, + "targetPort": 1235 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis:3.0", + "ports": [ + { + "containerPort": 6379 + }, + { + "containerPort": 1235, + "protocol": "UDP" + } + ], + "resources": { + "limits": { + "memory": "10e3" + } + } + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/mem-limit/output-mb-k8s.json b/script/test/cmd/fixtures/mem-limit/output-mb-k8s.json new file mode 100644 index 0000000000..868a36818a --- /dev/null +++ b/script/test/cmd/fixtures/mem-limit/output-mb-k8s.json @@ -0,0 +1,83 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + }, + { + "name": "1234", + "protocol": "UDP", + "port": 1234, + "targetPort": 1235 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis:3.0", + "ports": [ + { + "containerPort": 6379 + }, + { + "containerPort": 1235, + "protocol": "UDP" + } + ], + "resources": { + "limits": { + "memory": "10485760e3" + } + } + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/multiple-compose-files/docker-k8s.yml b/script/test/cmd/fixtures/multiple-compose-files/docker-k8s.yml new file mode 100644 index 0000000000..1007214029 --- /dev/null +++ b/script/test/cmd/fixtures/multiple-compose-files/docker-k8s.yml @@ -0,0 +1,27 @@ +version: "2" + +services: + mariadb: + image: centos/mariadb + ports: + - "3306" + environment: + MYSQL_ROOT_PASSWORD: kubernetes + MYSQL_DATABASE: kubernetes + MYSQL_PASSWORD: kubernetes + MYSQL_USER: kubernetes + volumes: + - /var/lib/mysql + + etherpad: + image: centos/etherpad + ports: + - "80:9001" + depends_on: + - mariadb + environment: + DB_HOST: kubernetes + DB_DBID: kubernetes + DB_PASS: kubernetes + DB_PORT: kubernetes + DB_USER: kubernetes diff --git a/script/test/cmd/fixtures/multiple-compose-files/docker-os.yml b/script/test/cmd/fixtures/multiple-compose-files/docker-os.yml new file mode 100644 index 0000000000..84c2100a01 --- /dev/null +++ b/script/test/cmd/fixtures/multiple-compose-files/docker-os.yml @@ -0,0 +1,27 @@ +version: "2" + +services: + mariadb: + image: centos/mariadb + ports: + - "3307" + environment: + MYSQL_ROOT_PASSWORD: openshift + MYSQL_DATABASE: openshift + MYSQL_PASSWORD: openshift + MYSQL_USER: openshift + volumes: + - /var/lib/mysql + + etherpad: + image: centos/etherpad + ports: + - "80:9001" + depends_on: + - mariadb + environment: + DB_HOST: openshift + DB_DBID: openshift + DB_PASS: openshift + DB_PORT: openshift + DB_USER: openshift diff --git a/script/test/cmd/fixtures/multiple-compose-files/output-k8s.json b/script/test/cmd/fixtures/multiple-compose-files/output-k8s.json new file mode 100644 index 0000000000..18c834d38f --- /dev/null +++ b/script/test/cmd/fixtures/multiple-compose-files/output-k8s.json @@ -0,0 +1,257 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "etherpad", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "etherpad" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 9001 + }, + { + "name": "80", + "port": 80, + "targetPort": 9001 + } + ], + "selector": { + "io.kompose.service": "etherpad" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "ports": [ + { + "name": "3306", + "port": 3306, + "targetPort": 3306 + }, + { + "name": "3307", + "port": 3307, + "targetPort": 3307 + } + ], + "selector": { + "io.kompose.service": "mariadb" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "etherpad", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "etherpad" + } + }, + "spec": { + "containers": [ + { + "name": "etherpad", + "image": "centos/etherpad", + "ports": [ + { + "containerPort": 9001 + }, + { + "containerPort": 9001 + } + ], + "env": [ + { + "name": "DB_DBID", + "value": "openshift" + }, + { + "name": "DB_HOST", + "value": "openshift" + }, + { + "name": "DB_PASS", + "value": "openshift" + }, + { + "name": "DB_PORT", + "value": "openshift" + }, + { + "name": "DB_USER", + "value": "openshift" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "volumes": [ + { + "name": "mariadb-claim0", + "persistentVolumeClaim": { + "claimName": "mariadb-claim0" + } + }, + { + "name": "mariadb-claim1", + "persistentVolumeClaim": { + "claimName": "mariadb-claim1" + } + } + ], + "containers": [ + { + "name": "mariadb", + "image": "centos/mariadb", + "ports": [ + { + "containerPort": 3306 + }, + { + "containerPort": 3307 + } + ], + "env": [ + { + "name": "MYSQL_ROOT_PASSWORD", + "value": "openshift" + }, + { + "name": "MYSQL_USER", + "value": "openshift" + }, + { + "name": "MYSQL_DATABASE", + "value": "openshift" + }, + { + "name": "MYSQL_PASSWORD", + "value": "openshift" + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "mariadb-claim0", + "mountPath": "/var/lib/mysql" + }, + { + "name": "mariadb-claim1", + "mountPath": "/var/lib/mysql" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "mariadb-claim0", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "mariadb-claim1", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb-claim1" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/multiple-compose-files/output-openshift.json b/script/test/cmd/fixtures/multiple-compose-files/output-openshift.json new file mode 100644 index 0000000000..1d97edee35 --- /dev/null +++ b/script/test/cmd/fixtures/multiple-compose-files/output-openshift.json @@ -0,0 +1,366 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "etherpad", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "etherpad" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 9001 + }, + { + "name": "80", + "port": 80, + "targetPort": 9001 + } + ], + "selector": { + "io.kompose.service": "etherpad" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "ports": [ + { + "name": "3306", + "port": 3306, + "targetPort": 3306 + }, + { + "name": "3307", + "port": 3307, + "targetPort": 3307 + } + ], + "selector": { + "io.kompose.service": "mariadb" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "etherpad", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "etherpad" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "etherpad" + ], + "from": { + "kind": "ImageStreamTag", + "name": "etherpad:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "etherpad" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "etherpad" + } + }, + "spec": { + "containers": [ + { + "name": "etherpad", + "image": " ", + "ports": [ + { + "containerPort": 9001 + }, + { + "containerPort": 9001 + } + ], + "env": [ + { + "name": "DB_PORT", + "value": "openshift" + }, + { + "name": "DB_USER", + "value": "openshift" + }, + { + "name": "DB_DBID", + "value": "openshift" + }, + { + "name": "DB_HOST", + "value": "openshift" + }, + { + "name": "DB_PASS", + "value": "openshift" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "etherpad", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "etherpad" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "centos/etherpad" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "strategy": { + "type": "Recreate", + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "mariadb" + ], + "from": { + "kind": "ImageStreamTag", + "name": "mariadb:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "mariadb" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "volumes": [ + { + "name": "mariadb-claim0", + "persistentVolumeClaim": { + "claimName": "mariadb-claim0" + } + }, + { + "name": "mariadb-claim1", + "persistentVolumeClaim": { + "claimName": "mariadb-claim1" + } + } + ], + "containers": [ + { + "name": "mariadb", + "image": " ", + "ports": [ + { + "containerPort": 3306 + }, + { + "containerPort": 3307 + } + ], + "env": [ + { + "name": "MYSQL_PASSWORD", + "value": "openshift" + }, + { + "name": "MYSQL_ROOT_PASSWORD", + "value": "openshift" + }, + { + "name": "MYSQL_USER", + "value": "openshift" + }, + { + "name": "MYSQL_DATABASE", + "value": "openshift" + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "mariadb-claim0", + "mountPath": "/var/lib/mysql" + }, + { + "name": "mariadb-claim1", + "mountPath": "/var/lib/mysql" + } + ] + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "centos/mariadb" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "mariadb-claim0", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "mariadb-claim1", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb-claim1" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/nginx-node-redis/README.md b/script/test/cmd/fixtures/nginx-node-redis/README.md new file mode 100644 index 0000000000..7c87377cfe --- /dev/null +++ b/script/test/cmd/fixtures/nginx-node-redis/README.md @@ -0,0 +1,7 @@ +### Usage + +Ref: http://anandmanisankar.com/posts/docker-container-nginx-node-redis-example/ + +```bash +docker-compose up +``` diff --git a/script/test/cmd/fixtures/nginx-node-redis/docker-compose.yml b/script/test/cmd/fixtures/nginx-node-redis/docker-compose.yml new file mode 100644 index 0000000000..c81f68638c --- /dev/null +++ b/script/test/cmd/fixtures/nginx-node-redis/docker-compose.yml @@ -0,0 +1,25 @@ +version: "2" + +services: + nginx: + build: ./nginx + ports: + - "80:80" + restart: always + + node1: + build: ./node + ports: + - "8080" + node2: + build: ./node + ports: + - "8080" + node3: + build: ./node + ports: + - "8080" + redis: + image: redis + ports: + - "6379" diff --git a/script/test/cmd/fixtures/nginx-node-redis/nginx/Dockerfile b/script/test/cmd/fixtures/nginx-node-redis/nginx/Dockerfile new file mode 100644 index 0000000000..2e662eb767 --- /dev/null +++ b/script/test/cmd/fixtures/nginx-node-redis/nginx/Dockerfile @@ -0,0 +1,8 @@ +# Set nginx base image +FROM nginx + +# File Author / Maintainer +MAINTAINER Anand Mani Sankar + +# Copy custom configuration file from the current directory +COPY nginx.conf /etc/nginx/nginx.conf diff --git a/script/test/cmd/fixtures/nginx-node-redis/nginx/nginx.conf b/script/test/cmd/fixtures/nginx-node-redis/nginx/nginx.conf new file mode 100644 index 0000000000..19cd5f97cc --- /dev/null +++ b/script/test/cmd/fixtures/nginx-node-redis/nginx/nginx.conf @@ -0,0 +1,26 @@ +worker_processes 4; + +events { worker_connections 1024; } + +http { + + upstream node-app { + least_conn; + server node1:8080 weight=60 max_fails=10 fail_timeout=60s; + server node2:8080 weight=60 max_fails=10 fail_timeout=60s; + server node3:8080 weight=60 max_fails=10 fail_timeout=60s; + } + + server { + listen 80; + + location / { + proxy_pass http://node-app; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + } + } +} diff --git a/script/test/cmd/fixtures/nginx-node-redis/node/Dockerfile b/script/test/cmd/fixtures/nginx-node-redis/node/Dockerfile new file mode 100644 index 0000000000..b2f95cb49e --- /dev/null +++ b/script/test/cmd/fixtures/nginx-node-redis/node/Dockerfile @@ -0,0 +1,16 @@ +FROM centos:7 + +RUN yum -y install epel-release && yum install -y nodejs npm gcc* make +RUN /bin/bash -c 'npm install -g nodemon' && mkdir /src + +# Define working directory +WORKDIR /src +ADD . /src + +RUN cd /src && npm install + +# Expose port +EXPOSE 8080 + +# Run app using nodemon +CMD /bin/bash -c 'nodemon /src/index.js' diff --git a/script/test/cmd/fixtures/nginx-node-redis/node/index.js b/script/test/cmd/fixtures/nginx-node-redis/node/index.js new file mode 100644 index 0000000000..d01e517db8 --- /dev/null +++ b/script/test/cmd/fixtures/nginx-node-redis/node/index.js @@ -0,0 +1,28 @@ +var express = require('express'), + http = require('http'), + redis = require('redis'); + +var app = express(); + +console.log(process.env.REDIS_PORT_6379_TCP_ADDR + ':' + process.env.REDIS_PORT_6379_TCP_PORT); + +// APPROACH 1: Using environment variables created by Docker +// var client = redis.createClient( +// process.env.REDIS_PORT_6379_TCP_PORT, +// process.env.REDIS_PORT_6379_TCP_ADDR +// ); + +// APPROACH 2: Using host entries created by Docker in /etc/hosts (RECOMMENDED) +var client = redis.createClient('6379', 'redis'); + + +app.get('/', function(req, res, next) { + client.incr('counter', function(err, counter) { + if(err) return next(err); + res.send('This page has been viewed ' + counter + ' times!'); + }); +}); + +http.createServer(app).listen(process.env.PORT || 8080, function() { + console.log('Listening on port ' + (process.env.PORT || 8080)); +}); \ No newline at end of file diff --git a/script/test/cmd/fixtures/nginx-node-redis/node/package.json b/script/test/cmd/fixtures/nginx-node-redis/node/package.json new file mode 100644 index 0000000000..4d59b392b1 --- /dev/null +++ b/script/test/cmd/fixtures/nginx-node-redis/node/package.json @@ -0,0 +1,14 @@ +{ + "name": "node", + "version": "1.0.0", + "description": "", + "main": "index.js", + "author": "Anand Mani Sankar", + "license": "ISC", + "dependencies": { + "express": "^4.12.3", + "hiredis": "^0.2.0", + "mocha": "^2.2.1", + "redis": "^0.12.1" + } +} diff --git a/script/test/cmd/fixtures/nginx-node-redis/node/test/dummyTest.js b/script/test/cmd/fixtures/nginx-node-redis/node/test/dummyTest.js new file mode 100644 index 0000000000..6218a87f4b --- /dev/null +++ b/script/test/cmd/fixtures/nginx-node-redis/node/test/dummyTest.js @@ -0,0 +1,7 @@ +var assert = require("assert"); + +describe('Dummy Test', function(){ + it('should pass', function(){ + assert.ok(true, "It is true!"); + }); +}); \ No newline at end of file diff --git a/script/test/cmd/fixtures/nginx-node-redis/output-k8s.json b/script/test/cmd/fixtures/nginx-node-redis/output-k8s.json new file mode 100644 index 0000000000..707ab18067 --- /dev/null +++ b/script/test/cmd/fixtures/nginx-node-redis/output-k8s.json @@ -0,0 +1,313 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "io.kompose.service": "nginx" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "node1", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node1" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "node1" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "node2", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node2" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "node2" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "node3", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node3" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "node3" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "nginx", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "containers": [ + { + "name": "nginx", + "ports": [ + { + "containerPort": 80 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "node1", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node1" + } + }, + "spec": { + "containers": [ + { + "name": "node1", + "ports": [ + { + "containerPort": 8080 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "node2", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node2" + } + }, + "spec": { + "containers": [ + { + "name": "node2", + "ports": [ + { + "containerPort": 8080 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "node3", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node3" + } + }, + "spec": { + "containers": [ + { + "name": "node3", + "ports": [ + { + "containerPort": 8080 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/nginx-node-redis/output-os.json b/script/test/cmd/fixtures/nginx-node-redis/output-os.json new file mode 100644 index 0000000000..2eb56c527e --- /dev/null +++ b/script/test/cmd/fixtures/nginx-node-redis/output-os.json @@ -0,0 +1,712 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "io.kompose.service": "nginx" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "node1", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node1" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "node1" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "node2", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node2" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "node2" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "node3", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node3" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "node3" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "nginx" + ], + "from": { + "kind": "ImageStreamTag", + "name": "nginx:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "nginx" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "containers": [ + { + "name": "nginx", + "image": " ", + "ports": [ + { + "containerPort": 80 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": {}, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "BuildConfig", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null + }, + "spec": { + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange" + } + ], + "runPolicy": "Serial", + "source": { + "type": "Git", + "git": { + "uri": "git@github.com:procrypt/kompose.git", + "ref": "functional_tests" + }, + "contextDir": "script/test/cmd/fixtures/nginx-node-redis/nginx/" + }, + "strategy": { + "type": "Docker", + "dockerStrategy": {} + }, + "output": { + "to": { + "kind": "ImageStreamTag", + "name": "nginx:latest" + } + }, + "resources": {}, + "postCommit": {}, + "nodeSelector": null + }, + "status": { + "lastVersion": 0 + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "node1", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node1" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "node1" + ], + "from": { + "kind": "ImageStreamTag", + "name": "node1:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "node1" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node1" + } + }, + "spec": { + "containers": [ + { + "name": "node1", + "image": " ", + "ports": [ + { + "containerPort": 8080 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "node1", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node1" + } + }, + "spec": {}, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "BuildConfig", + "apiVersion": "v1", + "metadata": { + "name": "node1", + "creationTimestamp": null + }, + "spec": { + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange" + } + ], + "runPolicy": "Serial", + "source": { + "type": "Git", + "git": { + "uri": "git@github.com:procrypt/kompose.git", + "ref": "functional_tests" + }, + "contextDir": "script/test/cmd/fixtures/nginx-node-redis/node/" + }, + "strategy": { + "type": "Docker", + "dockerStrategy": {} + }, + "output": { + "to": { + "kind": "ImageStreamTag", + "name": "node1:latest" + } + }, + "resources": {}, + "postCommit": {}, + "nodeSelector": null + }, + "status": { + "lastVersion": 0 + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "node2", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node2" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "node2" + ], + "from": { + "kind": "ImageStreamTag", + "name": "node2:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "node2" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node2" + } + }, + "spec": { + "containers": [ + { + "name": "node2", + "image": " ", + "ports": [ + { + "containerPort": 8080 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "node2", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node2" + } + }, + "spec": {}, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "BuildConfig", + "apiVersion": "v1", + "metadata": { + "name": "node2", + "creationTimestamp": null + }, + "spec": { + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange" + } + ], + "runPolicy": "Serial", + "source": { + "type": "Git", + "git": { + "uri": "git@github.com:procrypt/kompose.git", + "ref": "functional_tests" + }, + "contextDir": "script/test/cmd/fixtures/nginx-node-redis/node/" + }, + "strategy": { + "type": "Docker", + "dockerStrategy": {} + }, + "output": { + "to": { + "kind": "ImageStreamTag", + "name": "node2:latest" + } + }, + "resources": {}, + "postCommit": {}, + "nodeSelector": null + }, + "status": { + "lastVersion": 0 + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "node3", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node3" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "node3" + ], + "from": { + "kind": "ImageStreamTag", + "name": "node3:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "node3" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node3" + } + }, + "spec": { + "containers": [ + { + "name": "node3", + "image": " ", + "ports": [ + { + "containerPort": 8080 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "node3", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node3" + } + }, + "spec": {}, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "BuildConfig", + "apiVersion": "v1", + "metadata": { + "name": "node3", + "creationTimestamp": null + }, + "spec": { + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange" + } + ], + "runPolicy": "Serial", + "source": { + "type": "Git", + "git": { + "uri": "git@github.com:procrypt/kompose.git", + "ref": "functional_tests" + }, + "contextDir": "script/test/cmd/fixtures/nginx-node-redis/node/" + }, + "strategy": { + "type": "Docker", + "dockerStrategy": {} + }, + "output": { + "to": { + "kind": "ImageStreamTag", + "name": "node3:latest" + } + }, + "resources": {}, + "postCommit": {}, + "nodeSelector": null + }, + "status": { + "lastVersion": 0 + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "redis" + ], + "from": { + "kind": "ImageStreamTag", + "name": "redis:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "redis" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": " ", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "redis" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + } + ] +} diff --git a/script/test/cmd/fixtures/ngnix-node-redis/README.md b/script/test/cmd/fixtures/ngnix-node-redis/README.md new file mode 100644 index 0000000000..7c87377cfe --- /dev/null +++ b/script/test/cmd/fixtures/ngnix-node-redis/README.md @@ -0,0 +1,7 @@ +### Usage + +Ref: http://anandmanisankar.com/posts/docker-container-nginx-node-redis-example/ + +```bash +docker-compose up +``` diff --git a/script/test/cmd/fixtures/ngnix-node-redis/docker-compose.yml b/script/test/cmd/fixtures/ngnix-node-redis/docker-compose.yml new file mode 100644 index 0000000000..c81f68638c --- /dev/null +++ b/script/test/cmd/fixtures/ngnix-node-redis/docker-compose.yml @@ -0,0 +1,25 @@ +version: "2" + +services: + nginx: + build: ./nginx + ports: + - "80:80" + restart: always + + node1: + build: ./node + ports: + - "8080" + node2: + build: ./node + ports: + - "8080" + node3: + build: ./node + ports: + - "8080" + redis: + image: redis + ports: + - "6379" diff --git a/script/test/cmd/fixtures/ngnix-node-redis/nginx/Dockerfile b/script/test/cmd/fixtures/ngnix-node-redis/nginx/Dockerfile new file mode 100644 index 0000000000..2e662eb767 --- /dev/null +++ b/script/test/cmd/fixtures/ngnix-node-redis/nginx/Dockerfile @@ -0,0 +1,8 @@ +# Set nginx base image +FROM nginx + +# File Author / Maintainer +MAINTAINER Anand Mani Sankar + +# Copy custom configuration file from the current directory +COPY nginx.conf /etc/nginx/nginx.conf diff --git a/script/test/cmd/fixtures/ngnix-node-redis/nginx/nginx.conf b/script/test/cmd/fixtures/ngnix-node-redis/nginx/nginx.conf new file mode 100644 index 0000000000..19cd5f97cc --- /dev/null +++ b/script/test/cmd/fixtures/ngnix-node-redis/nginx/nginx.conf @@ -0,0 +1,26 @@ +worker_processes 4; + +events { worker_connections 1024; } + +http { + + upstream node-app { + least_conn; + server node1:8080 weight=60 max_fails=10 fail_timeout=60s; + server node2:8080 weight=60 max_fails=10 fail_timeout=60s; + server node3:8080 weight=60 max_fails=10 fail_timeout=60s; + } + + server { + listen 80; + + location / { + proxy_pass http://node-app; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + } + } +} diff --git a/script/test/cmd/fixtures/ngnix-node-redis/node/Dockerfile b/script/test/cmd/fixtures/ngnix-node-redis/node/Dockerfile new file mode 100644 index 0000000000..b2f95cb49e --- /dev/null +++ b/script/test/cmd/fixtures/ngnix-node-redis/node/Dockerfile @@ -0,0 +1,16 @@ +FROM centos:7 + +RUN yum -y install epel-release && yum install -y nodejs npm gcc* make +RUN /bin/bash -c 'npm install -g nodemon' && mkdir /src + +# Define working directory +WORKDIR /src +ADD . /src + +RUN cd /src && npm install + +# Expose port +EXPOSE 8080 + +# Run app using nodemon +CMD /bin/bash -c 'nodemon /src/index.js' diff --git a/script/test/cmd/fixtures/ngnix-node-redis/node/index.js b/script/test/cmd/fixtures/ngnix-node-redis/node/index.js new file mode 100644 index 0000000000..d01e517db8 --- /dev/null +++ b/script/test/cmd/fixtures/ngnix-node-redis/node/index.js @@ -0,0 +1,28 @@ +var express = require('express'), + http = require('http'), + redis = require('redis'); + +var app = express(); + +console.log(process.env.REDIS_PORT_6379_TCP_ADDR + ':' + process.env.REDIS_PORT_6379_TCP_PORT); + +// APPROACH 1: Using environment variables created by Docker +// var client = redis.createClient( +// process.env.REDIS_PORT_6379_TCP_PORT, +// process.env.REDIS_PORT_6379_TCP_ADDR +// ); + +// APPROACH 2: Using host entries created by Docker in /etc/hosts (RECOMMENDED) +var client = redis.createClient('6379', 'redis'); + + +app.get('/', function(req, res, next) { + client.incr('counter', function(err, counter) { + if(err) return next(err); + res.send('This page has been viewed ' + counter + ' times!'); + }); +}); + +http.createServer(app).listen(process.env.PORT || 8080, function() { + console.log('Listening on port ' + (process.env.PORT || 8080)); +}); \ No newline at end of file diff --git a/script/test/cmd/fixtures/ngnix-node-redis/node/package.json b/script/test/cmd/fixtures/ngnix-node-redis/node/package.json new file mode 100644 index 0000000000..4d59b392b1 --- /dev/null +++ b/script/test/cmd/fixtures/ngnix-node-redis/node/package.json @@ -0,0 +1,14 @@ +{ + "name": "node", + "version": "1.0.0", + "description": "", + "main": "index.js", + "author": "Anand Mani Sankar", + "license": "ISC", + "dependencies": { + "express": "^4.12.3", + "hiredis": "^0.2.0", + "mocha": "^2.2.1", + "redis": "^0.12.1" + } +} diff --git a/script/test/cmd/fixtures/ngnix-node-redis/node/test/dummyTest.js b/script/test/cmd/fixtures/ngnix-node-redis/node/test/dummyTest.js new file mode 100644 index 0000000000..6218a87f4b --- /dev/null +++ b/script/test/cmd/fixtures/ngnix-node-redis/node/test/dummyTest.js @@ -0,0 +1,7 @@ +var assert = require("assert"); + +describe('Dummy Test', function(){ + it('should pass', function(){ + assert.ok(true, "It is true!"); + }); +}); \ No newline at end of file diff --git a/script/test/cmd/fixtures/ngnix-node-redis/output-k8s.json b/script/test/cmd/fixtures/ngnix-node-redis/output-k8s.json new file mode 100644 index 0000000000..707ab18067 --- /dev/null +++ b/script/test/cmd/fixtures/ngnix-node-redis/output-k8s.json @@ -0,0 +1,313 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "io.kompose.service": "nginx" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "node1", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node1" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "node1" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "node2", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node2" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "node2" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "node3", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node3" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "node3" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "nginx", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "containers": [ + { + "name": "nginx", + "ports": [ + { + "containerPort": 80 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "node1", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node1" + } + }, + "spec": { + "containers": [ + { + "name": "node1", + "ports": [ + { + "containerPort": 8080 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "node2", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node2" + } + }, + "spec": { + "containers": [ + { + "name": "node2", + "ports": [ + { + "containerPort": 8080 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "node3", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node3" + } + }, + "spec": { + "containers": [ + { + "name": "node3", + "ports": [ + { + "containerPort": 8080 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/ngnix-node-redis/output-os.json b/script/test/cmd/fixtures/ngnix-node-redis/output-os.json new file mode 100644 index 0000000000..23a6689fdc --- /dev/null +++ b/script/test/cmd/fixtures/ngnix-node-redis/output-os.json @@ -0,0 +1,712 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "node1", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node1" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "node1" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "node2", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node2" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "node2" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "node3", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node3" + } + }, + "spec": { + "ports": [ + { + "name": "8080", + "port": 8080, + "targetPort": 8080 + } + ], + "selector": { + "io.kompose.service": "node3" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "io.kompose.service": "nginx" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "node1", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node1" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "node1" + ], + "from": { + "kind": "ImageStreamTag", + "name": "node1:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "node1" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node1" + } + }, + "spec": { + "containers": [ + { + "name": "node1", + "image": " ", + "ports": [ + { + "containerPort": 8080 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "node1", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node1" + } + }, + "spec": {}, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "BuildConfig", + "apiVersion": "v1", + "metadata": { + "name": "node1", + "creationTimestamp": null + }, + "spec": { + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange" + } + ], + "runPolicy": "Serial", + "source": { + "type": "Git", + "git": { + "uri": "https://github.com/kubernetes-incubator/kompose.git", + "ref": "HEAD" + }, + "contextDir": "script/test/fixtures/ngnix-node-redis/node" + }, + "strategy": { + "type": "Docker", + "dockerStrategy": {} + }, + "output": { + "to": { + "kind": "ImageStreamTag", + "name": "node1:latest" + } + }, + "resources": {}, + "postCommit": {}, + "nodeSelector": null + }, + "status": { + "lastVersion": 0 + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "node2", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node2" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "node2" + ], + "from": { + "kind": "ImageStreamTag", + "name": "node2:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "node2" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node2" + } + }, + "spec": { + "containers": [ + { + "name": "node2", + "image": " ", + "ports": [ + { + "containerPort": 8080 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "node2", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node2" + } + }, + "spec": {}, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "BuildConfig", + "apiVersion": "v1", + "metadata": { + "name": "node2", + "creationTimestamp": null + }, + "spec": { + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange" + } + ], + "runPolicy": "Serial", + "source": { + "type": "Git", + "git": { + "uri": "https://github.com/kubernetes-incubator/kompose.git", + "ref": "HEAD" + }, + "contextDir": "script/test/fixtures/ngnix-node-redis/node" + }, + "strategy": { + "type": "Docker", + "dockerStrategy": {} + }, + "output": { + "to": { + "kind": "ImageStreamTag", + "name": "node2:latest" + } + }, + "resources": {}, + "postCommit": {}, + "nodeSelector": null + }, + "status": { + "lastVersion": 0 + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "node3", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node3" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "node3" + ], + "from": { + "kind": "ImageStreamTag", + "name": "node3:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "node3" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node3" + } + }, + "spec": { + "containers": [ + { + "name": "node3", + "image": " ", + "ports": [ + { + "containerPort": 8080 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "node3", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "node3" + } + }, + "spec": {}, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "BuildConfig", + "apiVersion": "v1", + "metadata": { + "name": "node3", + "creationTimestamp": null + }, + "spec": { + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange" + } + ], + "runPolicy": "Serial", + "source": { + "type": "Git", + "git": { + "uri": "https://github.com/kubernetes-incubator/kompose.git", + "ref": "HEAD" + }, + "contextDir": "script/test/fixtures/ngnix-node-redis/node" + }, + "strategy": { + "type": "Docker", + "dockerStrategy": {} + }, + "output": { + "to": { + "kind": "ImageStreamTag", + "name": "node3:latest" + } + }, + "resources": {}, + "postCommit": {}, + "nodeSelector": null + }, + "status": { + "lastVersion": 0 + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "redis" + ], + "from": { + "kind": "ImageStreamTag", + "name": "redis:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "redis" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": " ", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "redis" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "nginx" + ], + "from": { + "kind": "ImageStreamTag", + "name": "nginx:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "nginx" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "containers": [ + { + "name": "nginx", + "image": " ", + "ports": [ + { + "containerPort": 80 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": {}, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "BuildConfig", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null + }, + "spec": { + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange" + } + ], + "runPolicy": "Serial", + "source": { + "type": "Git", + "git": { + "uri": "https://github.com/kubernetes-incubator/kompose.git", + "ref": "HEAD" + }, + "contextDir": "script/test/fixtures/ngnix-node-redis/nginx" + }, + "strategy": { + "type": "Docker", + "dockerStrategy": {} + }, + "output": { + "to": { + "kind": "ImageStreamTag", + "name": "nginx:latest" + } + }, + "resources": {}, + "postCommit": {}, + "nodeSelector": null + }, + "status": { + "lastVersion": 0 + } + } + ] +} \ No newline at end of file diff --git a/script/test/cmd/fixtures/ports-with-ip/docker-compose.yml b/script/test/cmd/fixtures/ports-with-ip/docker-compose.yml new file mode 100644 index 0000000000..e73e55bf2b --- /dev/null +++ b/script/test/cmd/fixtures/ports-with-ip/docker-compose.yml @@ -0,0 +1,19 @@ +version: "2" + +services: + web: + image: tuna/docker-counter23 + ports: + - "127.0.0.1:5000:5000/tcp" + links: + - redis + networks: + - default + + redis: + image: redis:3.0 + networks: + - default + ports: + - "6379/tcp" + - "1234:1235/udp" diff --git a/script/test/cmd/fixtures/ports-with-ip/output-k8s.json b/script/test/cmd/fixtures/ports-with-ip/output-k8s.json new file mode 100644 index 0000000000..07de3f8b06 --- /dev/null +++ b/script/test/cmd/fixtures/ports-with-ip/output-k8s.json @@ -0,0 +1,142 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + }, + { + "name": "1234", + "protocol": "UDP", + "port": 1234, + "targetPort": 1235 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis:3.0", + "ports": [ + { + "containerPort": 6379 + }, + { + "containerPort": 1235, + "protocol": "UDP" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": "tuna/docker-counter23", + "ports": [ + { + "containerPort": 5000, + "hostIP": "127.0.0.1" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/ports-with-proto/docker-compose.yml b/script/test/cmd/fixtures/ports-with-proto/docker-compose.yml new file mode 100644 index 0000000000..c508f86d10 --- /dev/null +++ b/script/test/cmd/fixtures/ports-with-proto/docker-compose.yml @@ -0,0 +1,20 @@ +version: "2" + +services: + web: + image: tuna/docker-counter23 + ports: + - "5000:5000/tcp" + links: + - redis + networks: + - default + + redis: + image: redis:3.0 + networks: + - default + ports: + - "6379/tcp" + - "1234:1235/udp" + diff --git a/script/test/cmd/fixtures/ports-with-proto/output-k8s.json b/script/test/cmd/fixtures/ports-with-proto/output-k8s.json new file mode 100644 index 0000000000..c62891b802 --- /dev/null +++ b/script/test/cmd/fixtures/ports-with-proto/output-k8s.json @@ -0,0 +1,141 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + }, + { + "name": "1234", + "protocol": "UDP", + "port": 1234, + "targetPort": 1235 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis:3.0", + "ports": [ + { + "containerPort": 6379 + }, + { + "containerPort": 1235, + "protocol": "UDP" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": "tuna/docker-counter23", + "ports": [ + { + "containerPort": 5000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/ports-with-proto/output-os.json b/script/test/cmd/fixtures/ports-with-proto/output-os.json new file mode 100644 index 0000000000..f931a53786 --- /dev/null +++ b/script/test/cmd/fixtures/ports-with-proto/output-os.json @@ -0,0 +1,251 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + }, + { + "name": "1234", + "protocol": "UDP", + "port": 1234, + "targetPort": 1235 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "redis" + ], + "from": { + "kind": "ImageStreamTag", + "name": "redis:3.0" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "redis" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": " ", + "ports": [ + { + "containerPort": 6379 + }, + { + "containerPort": 1235, + "protocol": "UDP" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "tags": [ + { + "name": "3.0", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "redis:3.0" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "web" + ], + "from": { + "kind": "ImageStreamTag", + "name": "web:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "web" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": " ", + "ports": [ + { + "containerPort": 5000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "tuna/docker-counter23" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + } + ] +} diff --git a/script/test/cmd/fixtures/redis-example/docker-compose.yml b/script/test/cmd/fixtures/redis-example/docker-compose.yml new file mode 100644 index 0000000000..42c1e9dd93 --- /dev/null +++ b/script/test/cmd/fixtures/redis-example/docker-compose.yml @@ -0,0 +1,10 @@ +web: + image: tuna/docker-counter23 + ports: + - "5000:5000" + links: + - redis +redis: + image: redis:3.0 + ports: + - "6379" diff --git a/script/test/cmd/fixtures/restart-options/a.json b/script/test/cmd/fixtures/restart-options/a.json new file mode 100644 index 0000000000..f1e80b6833 --- /dev/null +++ b/script/test/cmd/fixtures/restart-options/a.json @@ -0,0 +1,22 @@ +apiVersion: v1 +items: +- apiVersion: v1 + kind: Pod + metadata: + creationTimestamp: null + labels: + io.kompose.service: foo + name: foo + spec: + containers: + - env: + - name: GITHUB + value: surajssd + image: foobar + name: foo + resources: {} + restartPolicy: OnFailure + status: {} +kind: List +metadata: {} + diff --git a/script/test/cmd/fixtures/restart-options/docker-compose-restart-no.yml b/script/test/cmd/fixtures/restart-options/docker-compose-restart-no.yml new file mode 100644 index 0000000000..44fb71da10 --- /dev/null +++ b/script/test/cmd/fixtures/restart-options/docker-compose-restart-no.yml @@ -0,0 +1,9 @@ +version: "2" + +services: + foo: + image: "foobar" + restart: "no" + environment: + GITHUB: surajssd + diff --git a/script/test/cmd/fixtures/restart-options/docker-compose-restart-onfail.yml b/script/test/cmd/fixtures/restart-options/docker-compose-restart-onfail.yml new file mode 100644 index 0000000000..4978a3ac7d --- /dev/null +++ b/script/test/cmd/fixtures/restart-options/docker-compose-restart-onfail.yml @@ -0,0 +1,9 @@ +version: "2" + +services: + foo: + image: "foobar" + restart: "on-failure" + environment: + GITHUB: surajssd + diff --git a/script/test/cmd/fixtures/restart-options/output-k8s-restart-no.json b/script/test/cmd/fixtures/restart-options/output-k8s-restart-no.json new file mode 100644 index 0000000000..2966425d6c --- /dev/null +++ b/script/test/cmd/fixtures/restart-options/output-k8s-restart-no.json @@ -0,0 +1,35 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Pod", + "apiVersion": "v1", + "metadata": { + "name": "foo", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "foo" + } + }, + "spec": { + "containers": [ + { + "name": "foo", + "image": "foobar", + "env": [ + { + "name": "GITHUB", + "value": "surajssd" + } + ], + "resources": {} + } + ], + "restartPolicy": "Never" + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/restart-options/output-k8s-restart-onfail.json b/script/test/cmd/fixtures/restart-options/output-k8s-restart-onfail.json new file mode 100644 index 0000000000..dc286df6da --- /dev/null +++ b/script/test/cmd/fixtures/restart-options/output-k8s-restart-onfail.json @@ -0,0 +1,35 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Pod", + "apiVersion": "v1", + "metadata": { + "name": "foo", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "foo" + } + }, + "spec": { + "containers": [ + { + "name": "foo", + "image": "foobar", + "env": [ + { + "name": "GITHUB", + "value": "surajssd" + } + ], + "resources": {} + } + ], + "restartPolicy": "OnFailure" + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/restart-options/output-os-restart-no.json b/script/test/cmd/fixtures/restart-options/output-os-restart-no.json new file mode 100644 index 0000000000..2966425d6c --- /dev/null +++ b/script/test/cmd/fixtures/restart-options/output-os-restart-no.json @@ -0,0 +1,35 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Pod", + "apiVersion": "v1", + "metadata": { + "name": "foo", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "foo" + } + }, + "spec": { + "containers": [ + { + "name": "foo", + "image": "foobar", + "env": [ + { + "name": "GITHUB", + "value": "surajssd" + } + ], + "resources": {} + } + ], + "restartPolicy": "Never" + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/restart-options/output-os-restart-onfail.json b/script/test/cmd/fixtures/restart-options/output-os-restart-onfail.json new file mode 100644 index 0000000000..dc286df6da --- /dev/null +++ b/script/test/cmd/fixtures/restart-options/output-os-restart-onfail.json @@ -0,0 +1,35 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Pod", + "apiVersion": "v1", + "metadata": { + "name": "foo", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "foo" + } + }, + "spec": { + "containers": [ + { + "name": "foo", + "image": "foobar", + "env": [ + { + "name": "GITHUB", + "value": "surajssd" + } + ], + "resources": {} + } + ], + "restartPolicy": "OnFailure" + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/service-name-change/docker-compose.yml b/script/test/cmd/fixtures/service-name-change/docker-compose.yml new file mode 100644 index 0000000000..deccb53acb --- /dev/null +++ b/script/test/cmd/fixtures/service-name-change/docker-compose.yml @@ -0,0 +1,36 @@ +version: '2' +services: + mariadb: + image: 'bitnami/mariadb:latest' + volumes: + - 'mariadb-data:/bitnami/mariadb' + environment: + - MARIADB_USER=bn_wordpress + - MARIADB_DATABASE=bitnami_wordpress + - ALLOW_EMPTY_PASSWORD=yes + wordpress: + image: 'bitnami/wordpress:latest' + ports: + - '80:80' + - '443:443' + volumes: + - 'wordpress-data:/bitnami/wordpress' + - 'apache-data:/bitnami/apache' + - 'php-data:/bitnami/php' + depends_on: + - mariadb + environment: + - MARIADB_HOST=mariadb + - MARIADB_PORT=3306 + - WORDPRESS_DATABASE_USER=bn_wordpress + - WORDPRESS_DATABASE_NAME=bitnami_wordpress + - ALLOW_EMPTY_PASSWORD=yes +volumes: + mariadb-data: + driver: local + wordpress-data: + driver: local + apache-data: + driver: local + php-data: + driver: local diff --git a/script/test/cmd/fixtures/service-name-change/output-k8s.json b/script/test/cmd/fixtures/service-name-change/output-k8s.json new file mode 100644 index 0000000000..0444331079 --- /dev/null +++ b/script/test/cmd/fixtures/service-name-change/output-k8s.json @@ -0,0 +1,311 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "mariadb" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "wordpress", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "wordpress" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + }, + { + "name": "443", + "port": 443, + "targetPort": 443 + } + ], + "selector": { + "io.kompose.service": "wordpress" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "volumes": [ + { + "name": "servicenamechange-mariadb-data", + "persistentVolumeClaim": { + "claimName": "servicenamechange-mariadb-data" + } + } + ], + "containers": [ + { + "name": "mariadb", + "image": "bitnami/mariadb:latest", + "env": [ + { + "name": "MARIADB_USER", + "value": "bn_wordpress" + }, + { + "name": "MARIADB_DATABASE", + "value": "bitnami_wordpress" + }, + { + "name": "ALLOW_EMPTY_PASSWORD", + "value": "yes" + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "servicenamechange-mariadb-data", + "mountPath": "/bitnami/mariadb" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "servicenamechange-mariadb-data", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "servicenamechange-mariadb-data" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "wordpress", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "wordpress" + } + }, + "spec": { + "volumes": [ + { + "name": "servicenamechange-wordpress-data", + "persistentVolumeClaim": { + "claimName": "servicenamechange-wordpress-data" + } + }, + { + "name": "servicenamechange-apache-data", + "persistentVolumeClaim": { + "claimName": "servicenamechange-apache-data" + } + }, + { + "name": "servicenamechange-php-data", + "persistentVolumeClaim": { + "claimName": "servicenamechange-php-data" + } + } + ], + "containers": [ + { + "name": "wordpress", + "image": "bitnami/wordpress:latest", + "ports": [ + { + "containerPort": 80 + }, + { + "containerPort": 443 + } + ], + "env": [ + { + "name": "MARIADB_HOST", + "value": "mariadb" + }, + { + "name": "MARIADB_PORT", + "value": "3306" + }, + { + "name": "WORDPRESS_DATABASE_USER", + "value": "bn_wordpress" + }, + { + "name": "WORDPRESS_DATABASE_NAME", + "value": "bitnami_wordpress" + }, + { + "name": "ALLOW_EMPTY_PASSWORD", + "value": "yes" + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "servicenamechange-wordpress-data", + "mountPath": "/bitnami/wordpress" + }, + { + "name": "servicenamechange-apache-data", + "mountPath": "/bitnami/apache" + }, + { + "name": "servicenamechange-php-data", + "mountPath": "/bitnami/php" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "servicenamechange-wordpress-data", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "servicenamechange-wordpress-data" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "servicenamechange-apache-data", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "servicenamechange-apache-data" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "servicenamechange-php-data", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "servicenamechange-php-data" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/service-name-change/output-os.json b/script/test/cmd/fixtures/service-name-change/output-os.json new file mode 100644 index 0000000000..94a61fcec1 --- /dev/null +++ b/script/test/cmd/fixtures/service-name-change/output-os.json @@ -0,0 +1,419 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "ports": [ + { + "name": "headless", + "port": 55555, + "targetPort": 0 + } + ], + "selector": { + "io.kompose.service": "mariadb" + }, + "clusterIP": "None" + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "wordpress", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "wordpress" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + }, + { + "name": "443", + "port": 443, + "targetPort": 443 + } + ], + "selector": { + "io.kompose.service": "wordpress" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "strategy": { + "type": "Recreate", + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "mariadb" + ], + "from": { + "kind": "ImageStreamTag", + "name": "mariadb:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "mariadb" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "volumes": [ + { + "name": "servicenamechange-mariadb-data", + "persistentVolumeClaim": { + "claimName": "servicenamechange-mariadb-data" + } + } + ], + "containers": [ + { + "name": "mariadb", + "image": " ", + "env": [ + { + "name": "MARIADB_USER", + "value": "bn_wordpress" + }, + { + "name": "MARIADB_DATABASE", + "value": "bitnami_wordpress" + }, + { + "name": "ALLOW_EMPTY_PASSWORD", + "value": "yes" + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "servicenamechange-mariadb-data", + "mountPath": "/bitnami/mariadb" + } + ] + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "mariadb", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "mariadb" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "bitnami/mariadb:latest" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "servicenamechange-mariadb-data", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "servicenamechange-mariadb-data" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "wordpress", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "wordpress" + } + }, + "spec": { + "strategy": { + "type": "Recreate", + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "wordpress" + ], + "from": { + "kind": "ImageStreamTag", + "name": "wordpress:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "wordpress" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "wordpress" + } + }, + "spec": { + "volumes": [ + { + "name": "servicenamechange-wordpress-data", + "persistentVolumeClaim": { + "claimName": "servicenamechange-wordpress-data" + } + }, + { + "name": "servicenamechange-apache-data", + "persistentVolumeClaim": { + "claimName": "servicenamechange-apache-data" + } + }, + { + "name": "servicenamechange-php-data", + "persistentVolumeClaim": { + "claimName": "servicenamechange-php-data" + } + } + ], + "containers": [ + { + "name": "wordpress", + "image": " ", + "ports": [ + { + "containerPort": 80 + }, + { + "containerPort": 443 + } + ], + "env": [ + { + "name": "MARIADB_HOST", + "value": "mariadb" + }, + { + "name": "MARIADB_PORT", + "value": "3306" + }, + { + "name": "WORDPRESS_DATABASE_USER", + "value": "bn_wordpress" + }, + { + "name": "WORDPRESS_DATABASE_NAME", + "value": "bitnami_wordpress" + }, + { + "name": "ALLOW_EMPTY_PASSWORD", + "value": "yes" + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "servicenamechange-wordpress-data", + "mountPath": "/bitnami/wordpress" + }, + { + "name": "servicenamechange-apache-data", + "mountPath": "/bitnami/apache" + }, + { + "name": "servicenamechange-php-data", + "mountPath": "/bitnami/php" + } + ] + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "wordpress", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "wordpress" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "bitnami/wordpress:latest" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "servicenamechange-wordpress-data", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "servicenamechange-wordpress-data" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "servicenamechange-apache-data", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "servicenamechange-apache-data" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "servicenamechange-php-data", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "servicenamechange-php-data" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/stdin-true/docker-compose.yml b/script/test/cmd/fixtures/stdin-true/docker-compose.yml new file mode 100644 index 0000000000..615d096aa5 --- /dev/null +++ b/script/test/cmd/fixtures/stdin-true/docker-compose.yml @@ -0,0 +1,7 @@ +version: "2" +services: + client: + image: registry.centos.org/centos/centos:7 + ports: + - "1337" + stdin_open: true diff --git a/script/test/cmd/fixtures/stdin-true/output-k8s.json b/script/test/cmd/fixtures/stdin-true/output-k8s.json new file mode 100644 index 0000000000..d200cdcf65 --- /dev/null +++ b/script/test/cmd/fixtures/stdin-true/output-k8s.json @@ -0,0 +1,70 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "client", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "client" + } + }, + "spec": { + "ports": [ + { + "name": "1337", + "port": 1337, + "targetPort": 1337 + } + ], + "selector": { + "io.kompose.service": "client" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "client", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "client" + } + }, + "spec": { + "containers": [ + { + "name": "client", + "image": "registry.centos.org/centos/centos:7", + "ports": [ + { + "containerPort": 1337 + } + ], + "resources": {}, + "stdin": true + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/stdin-true/output-oc.json b/script/test/cmd/fixtures/stdin-true/output-oc.json new file mode 100644 index 0000000000..85ce73805e --- /dev/null +++ b/script/test/cmd/fixtures/stdin-true/output-oc.json @@ -0,0 +1,125 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "client", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "client" + } + }, + "spec": { + "ports": [ + { + "name": "1337", + "port": 1337, + "targetPort": 1337 + } + ], + "selector": { + "io.kompose.service": "client" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "client", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "client" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "client" + ], + "from": { + "kind": "ImageStreamTag", + "name": "client:7" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "client" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "client" + } + }, + "spec": { + "containers": [ + { + "name": "client", + "image": " ", + "ports": [ + { + "containerPort": 1337 + } + ], + "resources": {}, + "stdin": true + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "client", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "client" + } + }, + "spec": { + "tags": [ + { + "name": "7", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "registry.centos.org/centos/centos:7" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + } + ] +} diff --git a/script/test/cmd/fixtures/tty-true/docker-compose.yml b/script/test/cmd/fixtures/tty-true/docker-compose.yml new file mode 100644 index 0000000000..5e994f1349 --- /dev/null +++ b/script/test/cmd/fixtures/tty-true/docker-compose.yml @@ -0,0 +1,7 @@ +version: "2" +services: + client: + image: registry.centos.org/centos/centos:7 + ports: + - "1337" + tty: true diff --git a/script/test/cmd/fixtures/tty-true/output-k8s.json b/script/test/cmd/fixtures/tty-true/output-k8s.json new file mode 100644 index 0000000000..07bef7f28c --- /dev/null +++ b/script/test/cmd/fixtures/tty-true/output-k8s.json @@ -0,0 +1,70 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "client", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "client" + } + }, + "spec": { + "ports": [ + { + "name": "1337", + "port": 1337, + "targetPort": 1337 + } + ], + "selector": { + "io.kompose.service": "client" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "client", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "client" + } + }, + "spec": { + "containers": [ + { + "name": "client", + "image": "registry.centos.org/centos/centos:7", + "ports": [ + { + "containerPort": 1337 + } + ], + "resources": {}, + "tty": true + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/tty-true/output-oc.json b/script/test/cmd/fixtures/tty-true/output-oc.json new file mode 100644 index 0000000000..b54a219b9d --- /dev/null +++ b/script/test/cmd/fixtures/tty-true/output-oc.json @@ -0,0 +1,125 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "client", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "client" + } + }, + "spec": { + "ports": [ + { + "name": "1337", + "port": 1337, + "targetPort": 1337 + } + ], + "selector": { + "io.kompose.service": "client" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "client", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "client" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "client" + ], + "from": { + "kind": "ImageStreamTag", + "name": "client:7" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "client" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "client" + } + }, + "spec": { + "containers": [ + { + "name": "client", + "image": " ", + "ports": [ + { + "containerPort": 1337 + } + ], + "resources": {}, + "tty": true + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "client", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "client" + } + }, + "spec": { + "tags": [ + { + "name": "7", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "registry.centos.org/centos/centos:7" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + } + ] +} diff --git a/script/test/cmd/fixtures/volume-mounts/simple-vol-mounts/docker-compose.yml b/script/test/cmd/fixtures/volume-mounts/simple-vol-mounts/docker-compose.yml new file mode 100644 index 0000000000..67058c1dec --- /dev/null +++ b/script/test/cmd/fixtures/volume-mounts/simple-vol-mounts/docker-compose.yml @@ -0,0 +1,9 @@ +version: "2" + +services: + httpd: + image: docker.io/fedora/apache + ports: + - "80" + volumes: + - /var/www/html diff --git a/script/test/cmd/fixtures/volume-mounts/simple-vol-mounts/output-k8s.json b/script/test/cmd/fixtures/volume-mounts/simple-vol-mounts/output-k8s.json new file mode 100644 index 0000000000..9d4bd7ccd5 --- /dev/null +++ b/script/test/cmd/fixtures/volume-mounts/simple-vol-mounts/output-k8s.json @@ -0,0 +1,107 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "httpd", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "httpd" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "io.kompose.service": "httpd" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "httpd", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "httpd" + } + }, + "spec": { + "volumes": [ + { + "name": "httpd-claim0", + "persistentVolumeClaim": { + "claimName": "httpd-claim0" + } + } + ], + "containers": [ + { + "name": "httpd", + "image": "docker.io/fedora/apache", + "ports": [ + { + "containerPort": 80 + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "httpd-claim0", + "mountPath": "/var/www/html" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "httpd-claim0", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "httpd-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/volume-mounts/simple-vol-mounts/output-os.json b/script/test/cmd/fixtures/volume-mounts/simple-vol-mounts/output-os.json new file mode 100644 index 0000000000..a2842aaedc --- /dev/null +++ b/script/test/cmd/fixtures/volume-mounts/simple-vol-mounts/output-os.json @@ -0,0 +1,161 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "httpd", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "httpd" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "io.kompose.service": "httpd" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "httpd", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "httpd" + } + }, + "spec": { + "strategy": { + "type": "Recreate", + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "httpd" + ], + "from": { + "kind": "ImageStreamTag", + "name": "httpd:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "httpd" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "httpd" + } + }, + "spec": { + "volumes": [ + { + "name": "httpd-claim0", + "persistentVolumeClaim": { + "claimName": "httpd-claim0" + } + } + ], + "containers": [ + { + "name": "httpd", + "image": " ", + "ports": [ + { + "containerPort": 80 + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "httpd-claim0", + "mountPath": "/var/www/html" + } + ] + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "httpd", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "httpd" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "docker.io/fedora/apache" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "httpd-claim0", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "httpd-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/volume-mounts/volumes-from/docker-compose.yml b/script/test/cmd/fixtures/volume-mounts/volumes-from/docker-compose.yml new file mode 100644 index 0000000000..92dd80eaf9 --- /dev/null +++ b/script/test/cmd/fixtures/volume-mounts/volumes-from/docker-compose.yml @@ -0,0 +1,20 @@ +version: "2" + +services: + web: + image: centos/httpd + volumes: + - "./app:/src/app" + ports: + - "3030:3000" + command: nodemon -L app/bin/www + + nginx: + restart: always + image: nginx + ports: + - "80:80" + volumes: + - /www/public + volumes_from: + - web diff --git a/script/test/cmd/fixtures/volume-mounts/volumes-from/output-k8s.json b/script/test/cmd/fixtures/volume-mounts/volumes-from/output-k8s.json new file mode 100644 index 0000000000..cd1fd90c98 --- /dev/null +++ b/script/test/cmd/fixtures/volume-mounts/volumes-from/output-k8s.json @@ -0,0 +1,222 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "io.kompose.service": "nginx" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "ports": [ + { + "name": "3030", + "port": 3030, + "targetPort": 3000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "nginx", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "volumes": [ + { + "name": "nginx-claim0", + "persistentVolumeClaim": { + "claimName": "nginx-claim0" + } + }, + { + "name": "web-claim0", + "persistentVolumeClaim": { + "claimName": "web-claim0" + } + } + ], + "containers": [ + { + "name": "nginx", + "image": "nginx", + "ports": [ + { + "containerPort": 80 + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "nginx-claim0", + "mountPath": "/www/public" + }, + { + "name": "web-claim0", + "mountPath": "/src/app" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "nginx-claim0", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "volumes": [ + { + "name": "web-claim0", + "persistentVolumeClaim": { + "claimName": "web-claim0" + } + } + ], + "containers": [ + { + "name": "web", + "image": "centos/httpd", + "args": [ + "nodemon", + "-L", + "app/bin/www" + ], + "ports": [ + { + "containerPort": 3000 + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "web-claim0", + "mountPath": "/src/app" + } + ] + } + ], + "restartPolicy": "Always" + } + }, + "strategy": { + "type": "Recreate" + } + }, + "status": {} + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "web-claim0", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/volume-mounts/volumes-from/output-os.json b/script/test/cmd/fixtures/volume-mounts/volumes-from/output-os.json new file mode 100644 index 0000000000..20fe289420 --- /dev/null +++ b/script/test/cmd/fixtures/volume-mounts/volumes-from/output-os.json @@ -0,0 +1,330 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "io.kompose.service": "nginx" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "ports": [ + { + "name": "3030", + "port": 3030, + "targetPort": 3000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "strategy": { + "type": "Recreate", + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "nginx" + ], + "from": { + "kind": "ImageStreamTag", + "name": "nginx:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "nginx" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "volumes": [ + { + "name": "nginx-claim0", + "persistentVolumeClaim": { + "claimName": "nginx-claim0" + } + }, + { + "name": "web-claim0", + "persistentVolumeClaim": { + "claimName": "web-claim0" + } + } + ], + "containers": [ + { + "name": "nginx", + "image": " ", + "ports": [ + { + "containerPort": 80 + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "nginx-claim0", + "mountPath": "/www/public" + }, + { + "name": "web-claim0", + "mountPath": "/src/app" + } + ] + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "nginx", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "nginx" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "nginx-claim0", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "nginx-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "strategy": { + "type": "Recreate", + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "web" + ], + "from": { + "kind": "ImageStreamTag", + "name": "web:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "web" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "volumes": [ + { + "name": "web-claim0", + "persistentVolumeClaim": { + "claimName": "web-claim0" + } + } + ], + "containers": [ + { + "name": "web", + "image": " ", + "args": [ + "nodemon", + "-L", + "app/bin/www" + ], + "ports": [ + { + "containerPort": 3000 + } + ], + "resources": {}, + "volumeMounts": [ + { + "name": "web-claim0", + "mountPath": "/src/app" + } + ] + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "centos/httpd" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + "metadata": { + "name": "web-claim0", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web-claim0" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "100Mi" + } + } + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/yaml-and-yml/docker-compose.yaml b/script/test/cmd/fixtures/yaml-and-yml/docker-compose.yaml new file mode 100644 index 0000000000..42c1e9dd93 --- /dev/null +++ b/script/test/cmd/fixtures/yaml-and-yml/docker-compose.yaml @@ -0,0 +1,10 @@ +web: + image: tuna/docker-counter23 + ports: + - "5000:5000" + links: + - redis +redis: + image: redis:3.0 + ports: + - "6379" diff --git a/script/test/cmd/fixtures/yaml-and-yml/output-k8s.json b/script/test/cmd/fixtures/yaml-and-yml/output-k8s.json new file mode 100644 index 0000000000..167b0c19e1 --- /dev/null +++ b/script/test/cmd/fixtures/yaml-and-yml/output-k8s.json @@ -0,0 +1,131 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis:3.0", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": "tuna/docker-counter23", + "ports": [ + { + "containerPort": 5000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/yaml-and-yml/output-os.json b/script/test/cmd/fixtures/yaml-and-yml/output-os.json new file mode 100644 index 0000000000..7586326813 --- /dev/null +++ b/script/test/cmd/fixtures/yaml-and-yml/output-os.json @@ -0,0 +1,241 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "redis" + ], + "from": { + "kind": "ImageStreamTag", + "name": "redis:3.0" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "redis" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": " ", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "tags": [ + { + "name": "3.0", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "redis:3.0" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "web" + ], + "from": { + "kind": "ImageStreamTag", + "name": "web:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "web" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": " ", + "ports": [ + { + "containerPort": 5000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "tuna/docker-counter23" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + } + ] +} diff --git a/script/test/cmd/fixtures/yaml-and-yml/yml/docker-compose.yml b/script/test/cmd/fixtures/yaml-and-yml/yml/docker-compose.yml new file mode 100644 index 0000000000..42c1e9dd93 --- /dev/null +++ b/script/test/cmd/fixtures/yaml-and-yml/yml/docker-compose.yml @@ -0,0 +1,10 @@ +web: + image: tuna/docker-counter23 + ports: + - "5000:5000" + links: + - redis +redis: + image: redis:3.0 + ports: + - "6379" diff --git a/script/test/cmd/fixtures/yaml-and-yml/yml/output-k8s.json b/script/test/cmd/fixtures/yaml-and-yml/yml/output-k8s.json new file mode 100644 index 0000000000..167b0c19e1 --- /dev/null +++ b/script/test/cmd/fixtures/yaml-and-yml/yml/output-k8s.json @@ -0,0 +1,131 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis:3.0", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": "tuna/docker-counter23", + "ports": [ + { + "containerPort": 5000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/cmd/fixtures/yaml-and-yml/yml/output-os.json b/script/test/cmd/fixtures/yaml-and-yml/yml/output-os.json new file mode 100644 index 0000000000..7586326813 --- /dev/null +++ b/script/test/cmd/fixtures/yaml-and-yml/yml/output-os.json @@ -0,0 +1,241 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "io.kompose.service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "io.kompose.service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "redis" + ], + "from": { + "kind": "ImageStreamTag", + "name": "redis:3.0" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "redis" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": " ", + "ports": [ + { + "containerPort": 6379 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "redis" + } + }, + "spec": { + "tags": [ + { + "name": "3.0", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "redis:3.0" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + }, + { + "kind": "DeploymentConfig", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "strategy": { + "resources": {} + }, + "triggers": [ + { + "type": "ConfigChange" + }, + { + "type": "ImageChange", + "imageChangeParams": { + "automatic": true, + "containerNames": [ + "web" + ], + "from": { + "kind": "ImageStreamTag", + "name": "web:latest" + } + } + } + ], + "replicas": 1, + "test": false, + "selector": { + "io.kompose.service": "web" + }, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": " ", + "ports": [ + { + "containerPort": 5000 + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + } + }, + "status": {} + }, + { + "kind": "ImageStream", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "io.kompose.service": "web" + } + }, + "spec": { + "tags": [ + { + "name": "latest", + "annotations": null, + "from": { + "kind": "DockerImage", + "name": "tuna/docker-counter23" + }, + "generation": null, + "importPolicy": {} + } + ] + }, + "status": { + "dockerImageRepository": "" + } + } + ] +} diff --git a/script/test/cmd/tests.go b/script/test/cmd/tests.go new file mode 100644 index 0000000000..2c12870594 --- /dev/null +++ b/script/test/cmd/tests.go @@ -0,0 +1,267 @@ +package main + +import ( + "fmt" + "github.com/fsouza/go-dockerclient/external/github.com/Sirupsen/logrus" + "github.com/joho/godotenv" + "io/ioutil" + "os" + "os/exec" + "reflect" + "strings" +) + +func KomposeK8s(dockerComposeFile, result string) (cmd, output string) { + b, _ := ioutil.ReadFile(result) + output = string(b) + cmdName := "kompose" + cmdArgs := []string{"convert", "-f", dockerComposeFile, "--stdout", "-j"} + command, err := exec.Command(cmdName, cmdArgs...).CombinedOutput() + if err != nil { + fmt.Fprintln(os.Stderr, "Error Cmd", err) + os.Exit(1) + } + cmd = string(command) + return cmd, output +} + +func KomposeOpenshift(dockerComposeFile, result string) (cmd, output string) { + b, _ := ioutil.ReadFile(result) + output = string(b) + cmdName := "kompose" + cmdArgs := []string{"--provider=openshift","convert", "-f", dockerComposeFile, "--stdout", "-j"} + command, err := exec.Command(cmdName, cmdArgs...).CombinedOutput() + if err != nil { + fmt.Fprintln(os.Stderr, "Error Cmd", err) + os.Exit(1) + } + cmd = string(command) + return cmd, output +} + +func Compare(output, cmd, dockerComposeFile string) error{ + file := strings.Split(dockerComposeFile[9:], "/") + if reflect.DeepEqual(output, cmd) { + fmt.Println("===> Starting Test ") + fmt.Println("Testing", file[0], "for Kubernetes") + logrus.Info("\x1b[32;1mTest Pass\x1b[0m") + } else { + fmt.Println("\x1b[31;1m===> Test Fail <===\x1b[0m") + logrus.Error("Kubernetes \x1b[31;1mTest Fail\x1b[0m for ", file[0]) + } + fmt.Println("") + return nil +} + +// ExpectSuccessK8s Test for K8s +func ExpectSuccessK8s(dockerComposeFile, result string) { + cmd, output := KomposeK8s(dockerComposeFile, result) + Compare(output, cmd, dockerComposeFile) +} + +// ExpectSuccessOpenShift Test for OpenShift +func ExpectSuccessOpenShift(dockerComposeFile, result string) { + cmd, output:= KomposeOpenshift(dockerComposeFile, result) + Compare(output, cmd, dockerComposeFile) +} + +// ExpectSuccessAndWarningK8s Test for K8s +func ExpectSuccessAndWarningK8s(dockerComposeFile, result string) { + warning := "WARN" + info := "INFO" + cmd, output := KomposeK8s(dockerComposeFile, result) + if strings.Contains(cmd, warning) || strings.Contains(cmd, info) { + cmdName := "kompose" + cmdArgs := []string{"convert", "--stdout", "-f", dockerComposeFile, "-j"} + str, err := exec.Command(cmdName, cmdArgs...).Output() + if err != nil { + fmt.Fprintln(os.Stderr, "Err Cmd", err) + os.Exit(1) + } + cmd := string(str) + Compare(output, cmd, dockerComposeFile) + } +} + +// ExpectSuccessAndWarningOpenShift Test for OpenShift +func ExpectSuccessAndWarningOpenShift(dockerComposeFile, result string) { + warning := "WARN" + info := "INFO" + cmd, output := KomposeOpenshift(dockerComposeFile, result) + if strings.Contains(cmd, warning) || strings.Contains(cmd, info) { + cmdName := "kompose" + cmdArgs := []string{"--provider=openshift", "convert", "--stdout", "-f", dockerComposeFile, "-j"} + str, err := exec.Command(cmdName, cmdArgs...).Output() + if err != nil { + fmt.Fprintln(os.Stderr, "Err Cmd", err) + os.Exit(1) + } + cmd := string(str) + Compare(output, cmd, dockerComposeFile) + } +} + +// ExpectFailureK8s Test for K8s +func ExpectFailureK8s(dockerComposeFile string) { + cmdName := "kompose" + cmdArgs := []string{"convert", "--stdout", "-f", dockerComposeFile, "-j"} + _, err := exec.Command(cmdName, cmdArgs...).CombinedOutput() + file := strings.Split(dockerComposeFile[9:], "/") + if err != nil { + fmt.Println("===> Starting Test ") + fmt.Println("Testing", file[0], "for Kubernetes") + logrus.Info("\x1b[32;1mTest Pass\x1b[0m") + } else { + fmt.Println("\x1b[31;1m===> Test Fail <===\x1b[0m") + logrus.Error("Kubernetes \x1b[31;1mTest Fail\x1b[0m for ", file[0]) + } + fmt.Println("") +} + +// ExpectFailureOpenShift Test for OpenShift +func ExpectFailureOpenShift(dockerComposeFile string) { + cmdName := "kompose" + cmdArgs := []string{"--provider=openshift", "convert", "--stdout", "-f", dockerComposeFile, "-j"} + _, err := exec.Command(cmdName, cmdArgs...).CombinedOutput() + file := strings.Split(dockerComposeFile[9:], "/") + if err != nil { + fmt.Println("===> Starting Test ") + fmt.Println("Testing", file[0], "for OpenShift") + logrus.Info("\x1b[32;1mTest Pass\x1b[0m") + } else { + fmt.Println("\x1b[31;1m===> Test Fail <===\x1b[0m") + logrus.Error("OpenShift \x1b[31;1mTest Fail\x1b[0m for ", file[0]) + } + fmt.Println("") +} + +// LoadEnv files +func LoadEnv(envFile string) { + err := godotenv.Overload(envFile) + if err != nil { + logrus.Error("Unable to load env file") + } +} +func main() { + + // Tests related to docker-compose file in /script/test/fixtures/etherpad + // Kubernetes Test + ExpectFailureK8s("fixtures/etherpad/docker-compose.yml") + // OpenShift Test + ExpectFailureOpenShift("fixtures/etherpad/docker-compose.yml") + // Load Env file + LoadEnv("fixtures/etherpad/envs") + // Kubernetes Test + ExpectSuccessAndWarningK8s("fixtures/etherpad/docker-compose.yml", "fixtures/etherpad/output-k8s.json") + // OpenShift Test + ExpectSuccessAndWarningOpenShift("fixtures/etherpad/docker-compose.yml", "fixtures/etherpad/output-os.json") + + // Tests related to docker-compose file in /script/test/fixtures/gitlab + // Kubernetes Test + ExpectFailureK8s("fixtures/gitlab/docker-compose.yml convert") + // Load Env File + LoadEnv("fixtures/gitlab/envs") + // Kubernetes Test + ExpectSuccessK8s("fixtures/gitlab/docker-compose.yml", "fixtures/gitlab/output-k8s.json") + // OpenShift Test + ExpectSuccessOpenShift("fixtures/gitlab/docker-compose.yml", "fixtures/gitlab/output-os.json") + + // Tests related to docker-compose file in /script/test/fixtures/nginx-node-redis + // Kubernetes Test + ExpectSuccessAndWarningK8s("fixtures/nginx-node-redis/docker-compose.yml", "fixtures/nginx-node-redis/output-k8s.json") + // OpenShift Test + ExpectSuccessAndWarningOpenShift("fixtures/nginx-node-redis/docker-compose.yml", "fixtures/nginx-node-redis/output-os.json") + + // Tests related to docker-compose file in /script/test/cmd/fixtures/entrypoint-command + // Kubernetes Test + ExpectSuccessK8s("fixtures/entrypoint-command/docker-compose.yml", "fixtures/entrypoint-command/output-k8s.json") + // OpenShift Test + ExpectSuccessOpenShift("fixtures/entrypoint-command/docker-compose.yml", "fixtures/entrypoint-command/output-os.json") + + // Tests related to docker-compose file in /script/test/cmd/fixtures/mem-limit + // Kubernetes Test + ExpectSuccessK8s("fixtures/mem-limit/docker-compose.yml", "fixtures/mem-limit/output-k8s.json") + ExpectSuccessK8s("fixtures/mem-limit/docker-compose-mb.yml", "fixtures/mem-limit/output-mb-k8s.json") + + // Tests related to docker-compose file in /script/test/cmd/fixtures/ports-with-proto + // Kubernetes Test + ExpectSuccessK8s("fixtures/ports-with-proto/docker-compose.yml", "fixtures/ports-with-proto/output-k8s.json") + // OpenShift Test + ExpectSuccessOpenShift("fixtures/ports-with-proto/docker-compose.yml", "fixtures/ports-with-proto/output-os.json") + + // Tests related to docker-compose file in /script/test/cmd/fixtures/volume-mounts/simple-vol-mounts + // Kubernetes Test + ExpectSuccessK8s("fixtures/volume-mounts/simple-vol-mounts/docker-compose.yml", "fixtures/volume-mounts/simple-vol-mounts/output-k8s.json") + // OpenShift Test + ExpectSuccessOpenShift("fixtures/volume-mounts/simple-vol-mounts/docker-compose.yml", "fixtures/volume-mounts/simple-vol-mounts/output-os.json") + + // Tests related to docker-compose file in /script/test/cmd/fixtures/volume-mounts/volumes-from + // Kubernetes Test + ExpectSuccessAndWarningK8s("fixtures/volume-mounts/volumes-from/docker-compose.yml", "fixtures/volume-mounts/volumes-from/output-k8s.json") + // OpenShift Test + ExpectSuccessAndWarningOpenShift("fixtures/volume-mounts/volumes-from/docker-compose.yml", "fixtures/volume-mounts/volumes-from/output-os.json") + + // Tests related to docker-compose file in /script/test/cmd/fixtures/envvars-separators + // Kubernetes Test + ExpectSuccessAndWarningK8s("fixtures/envvars-separators/docker-compose.yml", "fixtures/envvars-separators/output-k8s.json") + + // Test related to restart options in docker-compose + // Kubernetes Test + ExpectSuccessK8s("fixtures/restart-options/docker-compose-restart-no.yml", "fixtures/restart-options/output-k8s-restart-no.json") + ExpectSuccessK8s("fixtures/restart-options/docker-compose-restart-onfail.yml", "fixtures/restart-options/output-k8s-restart-onfail.json") + // OpenShift Test + ExpectSuccessOpenShift("fixtures/restart-options/docker-compose-restart-no.yml", "fixtures/restart-options/output-os-restart-no.json") + ExpectSuccessOpenShift("fixtures/restart-options/docker-compose-restart-onfail.yml", "fixtures/restart-options/output-os-restart-onfail.json") + + // Test related to host:port:container in docker-compose + // Kubernetes Test + ExpectSuccessK8s("fixtures/ports-with-ip/docker-compose.yml", "fixtures/ports-with-ip/output-k8s.json") + + // Test related to "stdin_open: true" in docker-compose + // Kubernetes Test + ExpectSuccessK8s("fixtures/stdin-true/docker-compose.yml", "fixtures/stdin-true/output-k8s.json") + // OpenShift Test + ExpectSuccessOpenShift("fixtures/stdin-true/docker-compose.yml", "fixtures/stdin-true/output-oc.json") + + // Test related to "tty: true" in docker-compose + // Kubernetes Test + ExpectSuccessK8s("fixtures/tty-true/docker-compose.yml", "fixtures/tty-true/output-k8s.json") + // OpenShift Test + ExpectSuccessOpenShift("fixtures/tty-true/docker-compose.yml", "fixtures/tty-true/output-oc.json") + + // Test related to kompose.expose.service label in docker compose file to ensure that services are exposed properly + // Kubernetes Test + // when kompose.service.expose="True" + ExpectSuccessK8s("fixtures/expose-service/compose-files/docker-compose-expose-true.yml", "fixtures/expose-service/provider-files/kubernetes-expose-true.json") + // when kompose.expose.service="" + ExpectSuccessK8s("fixtures/expose-service/compose-files/docker-compose-expose-hostname.yml", "fixtures/expose-service/provider-files/kubernetes-expose-hostname.json") + // when kompose.service.expose="True" and multiple ports in docker compose file (first port should be selected) + ExpectSuccessK8s("fixtures/expose-service/compose-files/docker-compose-expose-true-multiple-ports.yml", "fixtures/expose-service/provider-files/kubernetes-expose-true-multiple-ports.json") + // when kompose.service.expose="" and multiple ports in docker compose file (first port should be selected) + ExpectSuccessK8s("fixtures/expose-service/compose-files/docker-compose-expose-hostname-multiple-ports.yml", "fixtures/expose-service/provider-files/kubernetes-expose-hostname-multiple-ports.json") + + // Test related to kompose.expose.service label in docker compose file to ensure that services are exposed properly + // OpenShift Test + // when kompose.service.expose="True" + ExpectSuccessOpenShift("fixtures/expose-service/compose-files/docker-compose-expose-true.yml", "fixtures/expose-service/provider-files/openshift-expose-true.json") + // when kompose.expose.service="" + ExpectSuccessOpenShift("fixtures/expose-service/compose-files/docker-compose-expose-hostname.yml", "fixtures/expose-service/provider-files/openshift-expose-hostname.json") + // when kompose.service.expose="True" and multiple ports in docker compose file (first port should be selected) + ExpectSuccessOpenShift("fixtures/expose-service/compose-files/docker-compose-expose-true-multiple-ports.yml", "fixtures/expose-service/provider-files/openshift-expose-true-multiple-ports.json") + // when kompose.service.expose="" and multiple ports in docker compose file (first port should be selected) + ExpectSuccessOpenShift("fixtures/expose-service/compose-files/docker-compose-expose-hostname-multiple-ports.yml", "fixtures/expose-service/provider-files/openshift-expose-hostname-multiple-ports.json") + + // Test the change in the service name + // Kubernetes Test + ExpectSuccessAndWarningK8s("fixtures/service-name-change/docker-compose.yml", "fixtures/service-name-change/output-k8s.json") + // OpenShift Test + ExpectSuccessAndWarningOpenShift("fixtures/service-name-change/docker-compose.yml", "fixtures/service-name-change/output-os.json") + + // Test related to support docker-compose.yaml beside docker-compose.yml + // Kubernetes Test + ExpectSuccessK8s("fixtures/yaml-and-yml/docker-compose.yaml", "fixtures/yaml-and-yml/output-k8s.json") + ExpectSuccessK8s("fixtures/yaml-and-yml/yml/docker-compose.yml", "fixtures/yaml-and-yml/yml/output-k8s.json") + // Openshift Test + ExpectSuccessOpenShift("fixtures/yaml-and-yml/docker-compose.yaml", "fixtures/yaml-and-yml/output-os.json") + ExpectSuccessOpenShift("fixtures/yaml-and-yml/yml/docker-compose.yml", "fixtures/yaml-and-yml/yml/output-os.json") +} diff --git a/script/test/cmd/tests.sh b/script/test/cmd/tests.sh index b3f7a7c579..da37b61910 100755 --- a/script/test/cmd/tests.sh +++ b/script/test/cmd/tests.sh @@ -27,7 +27,7 @@ export $(cat $KOMPOSE_ROOT/script/test/fixtures/etherpad/envs) # kubernetes test convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtures/etherpad/docker-compose.yml convert --stdout -j" "$KOMPOSE_ROOT/script/test/fixtures/etherpad/output-k8s.json" "Unsupported depends_on key - ignoring" # openshift test -convert::expect_success_and_warning "kompose --provider=openshift -f $KOMPOSE_ROOT/script/test/fixtures/etherpad/docker-compose.yml convert --stdout -j" "$KOMPOSE_ROOT/script/test/fixtures/etherpad/output-os.json" "Unsupported depends_on key - ignoring" +convert::expect_success_and_warning "kompose --provider=openshift -f $KOMPOSE_ROOT/script/test/fixtures/etherpad/docker-compose.yml convert --stdout -j" "$KOMPOSE_ROOT/script/test/ls" "Unsupported depends_on key - ignoring" unset $(cat $KOMPOSE_ROOT/script/test/fixtures/etherpad/envs | cut -d'=' -f1) ###### @@ -181,7 +181,7 @@ convert::expect_success "kompose --provider openshift -f $KOMPOSE_ROOT/script/te # Kubernetes Test convert::expect_success_and_warning "kompose -f $KOMPOSE_ROOT/script/test/fixtures/service-name-change/docker-compose.yml convert --stdout -j" "$KOMPOSE_ROOT/script/test/fixtures/service-name-change/output-k8s.json" "Unsupported root level volumes key - ignoring" # Openshift Test -convert::expect_success_and_warning "kompose --provider openshift -f $KOMPOSE_ROOT/script/test/fixtures/service-name-change/docker-compose.yml convert --stdout -j" "$KOMPOSE_ROOT/script/test/fixtures/service-name-change/output-os.json" "Unsupported root level volumes key - ignoring" +convert::expect_success_and_warning "kompose --provider openshift -f $KOMPOSE_ROOT/script/test/fixtures/service-name-change/docker-compose.yml convert --stdout -j" "$KOMPOSE_ROOT/script/test/" "Unsupported root level volumes key - ignoring" ######