diff --git a/integration/base/amazon-eks/expected/.ship/state.json b/integration/base/amazon-eks/expected/.ship/state.json index d1593b129..36fc8ab81 100644 --- a/integration/base/amazon-eks/expected/.ship/state.json +++ b/integration/base/amazon-eks/expected/.ship/state.json @@ -1,7 +1,7 @@ { "v1": { "config": {}, - "contentSHA": "bc7239400a3ffad5db48aac3f04ef23e6d8c65934e0c43c747b79b8841c490af", + "contentSHA": "80750c40d8cfb210c11ce5aba0ff0b0e56fe77e73f5fda3be121002a024d6777", "metadata": { "applicationType": "replicated.app", "customerID": "-Am-_6i5pw0u4AbspOwKN4lZUCn49u_G", diff --git a/integration/base/basic-stateless/expected/.ship/state.json b/integration/base/basic-stateless/expected/.ship/state.json index 5ae864d97..094bc4bfa 100644 --- a/integration/base/basic-stateless/expected/.ship/state.json +++ b/integration/base/basic-stateless/expected/.ship/state.json @@ -1,7 +1,7 @@ { "v1": { "config": {}, - "contentSHA": "3b20281c1e73d8d854316d4d74fc3af7675deab50679663566873f147726a11f", + "contentSHA": "11be80f75d1f078b2a3d15b5a19149e9d77793d22fb204855721c63ac078ec8c", "metadata": { "applicationType": "replicated.app", "customerID": "-Am-_6i5pw0u4AbspOwKN4lZUCn49u_G", diff --git a/integration/base/basic/expected/.ship/state.json b/integration/base/basic/expected/.ship/state.json index 696076e59..e5b907ddc 100644 --- a/integration/base/basic/expected/.ship/state.json +++ b/integration/base/basic/expected/.ship/state.json @@ -3,7 +3,7 @@ "config": { "test_option": "abc123_test-option-value" }, - "contentSHA": "3b20281c1e73d8d854316d4d74fc3af7675deab50679663566873f147726a11f", + "contentSHA": "11be80f75d1f078b2a3d15b5a19149e9d77793d22fb204855721c63ac078ec8c", "metadata": { "applicationType": "replicated.app", "customerID": "-Am-_6i5pw0u4AbspOwKN4lZUCn49u_G", diff --git a/integration/base/config-chain-override/expected/.ship/state.json b/integration/base/config-chain-override/expected/.ship/state.json index b739daaaf..79fc07ea0 100644 --- a/integration/base/config-chain-override/expected/.ship/state.json +++ b/integration/base/config-chain-override/expected/.ship/state.json @@ -5,7 +5,7 @@ "t2_option": "abc123_abc123", "t3_option": "abc123_abc123 + abc123" }, - "contentSHA": "d0d40cd4e897c8e2bec41669630b3033635e30b0acacb43c9676b0e7daa7ebf3", + "contentSHA": "7a932b97b1b54bc902001db4301aa4b721af45672c820ae835ddd1b82f219e9e", "metadata": { "applicationType": "replicated.app", "customerID": "-Am-_6i5pw0u4AbspOwKN4lZUCn49u_G", diff --git a/integration/base/config-chain/expected/.ship/state.json b/integration/base/config-chain/expected/.ship/state.json index b739daaaf..79fc07ea0 100644 --- a/integration/base/config-chain/expected/.ship/state.json +++ b/integration/base/config-chain/expected/.ship/state.json @@ -5,7 +5,7 @@ "t2_option": "abc123_abc123", "t3_option": "abc123_abc123 + abc123" }, - "contentSHA": "d0d40cd4e897c8e2bec41669630b3033635e30b0acacb43c9676b0e7daa7ebf3", + "contentSHA": "7a932b97b1b54bc902001db4301aa4b721af45672c820ae835ddd1b82f219e9e", "metadata": { "applicationType": "replicated.app", "customerID": "-Am-_6i5pw0u4AbspOwKN4lZUCn49u_G", diff --git a/integration/base/default-values/expected/.ship/state.json b/integration/base/default-values/expected/.ship/state.json index fe7987507..3839a2988 100644 --- a/integration/base/default-values/expected/.ship/state.json +++ b/integration/base/default-values/expected/.ship/state.json @@ -6,7 +6,7 @@ "namespace": "Alpha", "scheduler": "" }, - "contentSHA": "3227ff33ca66ceb1088335d11c62b628516870611c550330449da08cc4c9d8ba", + "contentSHA": "87e302cc9676dca53d95ac7d17a1b2a80992d880058abf823ffc9ceb6689ea19", "metadata": { "applicationType": "replicated.app", "customerID": "-Am-_6i5pw0u4AbspOwKN4lZUCn49u_G", diff --git a/integration/base/docker-layer/expected/.ship/state.json b/integration/base/docker-layer/expected/.ship/state.json index 8a3617c91..6ba164b80 100644 --- a/integration/base/docker-layer/expected/.ship/state.json +++ b/integration/base/docker-layer/expected/.ship/state.json @@ -3,7 +3,7 @@ "config": { "option": "value" }, - "contentSHA": "8764659df64cdeb83d13528d96ebe39414c8e0ec9c5bdc2ef0b1829d3957057a", + "contentSHA": "ae4f01eeccc34c4d66477e6b1be079ebbab123dd1a4268d19bed9c0c3dd37e7f", "metadata": { "applicationType": "replicated.app", "customerID": "-Am-_6i5pw0u4AbspOwKN4lZUCn49u_G", diff --git a/integration/base/docker/expected/.ship/state.json b/integration/base/docker/expected/.ship/state.json index bbda89f60..f5bd525ad 100644 --- a/integration/base/docker/expected/.ship/state.json +++ b/integration/base/docker/expected/.ship/state.json @@ -3,7 +3,7 @@ "config": { "test_option": "abc123_test-option-value" }, - "contentSHA": "8b264700d9195e35bdc95332279dccddc9a173510103be203c25f9bde1ca7f27", + "contentSHA": "8256c22bc76d8004b62fcbd1ee2baa0561a4128acf64c8160ebc471eeba63fd7", "metadata": { "applicationType": "replicated.app", "customerID": "-Am-_6i5pw0u4AbspOwKN4lZUCn49u_G", diff --git a/integration/base/helm-nginx/expected/.ship/state.json b/integration/base/helm-nginx/expected/.ship/state.json index 7bfb6cf7d..998b32292 100644 --- a/integration/base/helm-nginx/expected/.ship/state.json +++ b/integration/base/helm-nginx/expected/.ship/state.json @@ -1,7 +1,7 @@ { "v1": { "config": {}, - "contentSHA": "144732da22781575a5368e9c50107d0f442aade5f9c84aa539ea372e436fdadb", + "contentSHA": "e3f72f22607ef7bde944fed3d0818577fbc9f6d69dca7c544f36b230a680f1a1", "metadata": { "applicationType": "replicated.app", "customerID": "-Am-_6i5pw0u4AbspOwKN4lZUCn49u_G", diff --git a/integration/base/web/expected/.ship/state.json b/integration/base/web/expected/.ship/state.json index a14b5426d..d9c31c867 100644 --- a/integration/base/web/expected/.ship/state.json +++ b/integration/base/web/expected/.ship/state.json @@ -4,7 +4,7 @@ "methodType": "GET", "resourceURL": "https://raw.githubusercontent.com/replicatedhq/test-charts/5bf016aac1786cb74c678c3419bb8623f0388f8d/web-asset/web-asset" }, - "contentSHA": "23d3d4d0f99ade2e646c26822d67dcde9d814de3b92a398648d25ea61a55df48", + "contentSHA": "2114b76dd0e0e7ec9154d5cafb9eeb6987555def60a59e13b3ce0fc57e8a81c9", "metadata": { "applicationType": "replicated.app", "customerID": "-Am-_6i5pw0u4AbspOwKN4lZUCn49u_G", diff --git a/integration/init/jaeger-helm/expected/base/charts/cassandra/templates/service.yaml b/integration/init/jaeger-helm/expected/base/charts/cassandra/templates/service.yaml index d5b66e968..fd339d906 100644 --- a/integration/init/jaeger-helm/expected/base/charts/cassandra/templates/service.yaml +++ b/integration/init/jaeger-helm/expected/base/charts/cassandra/templates/service.yaml @@ -6,7 +6,7 @@ metadata: name: jaeger-cassandra labels: app: cassandra - chart: cassandra-0.15.0 + chart: cassandra-0.15.1 release: jaeger heritage: Tiller spec: diff --git a/integration/init/jaeger-helm/expected/base/charts/cassandra/templates/statefulset.yaml b/integration/init/jaeger-helm/expected/base/charts/cassandra/templates/statefulset.yaml index 37171e93c..307b452a8 100644 --- a/integration/init/jaeger-helm/expected/base/charts/cassandra/templates/statefulset.yaml +++ b/integration/init/jaeger-helm/expected/base/charts/cassandra/templates/statefulset.yaml @@ -6,7 +6,7 @@ metadata: name: jaeger-cassandra labels: app: cassandra - chart: cassandra-0.15.0 + chart: cassandra-0.15.1 release: jaeger heritage: Tiller spec: diff --git a/integration/init_app/amazon-eks-template/expected/.ship/state.json b/integration/init_app/amazon-eks-template/expected/.ship/state.json index 0e6f67d9b..fd4e1e055 100644 --- a/integration/init_app/amazon-eks-template/expected/.ship/state.json +++ b/integration/init_app/amazon-eks-template/expected/.ship/state.json @@ -2,7 +2,7 @@ "v1": { "config": {}, "upstream": "__upstream__", - "contentSHA": "3536a785cb227012537376c3d299c96dc28a8c3ffe13d1486fdb0caffa7b09bc", + "contentSHA": "492089992eb01a521db360b3b641af7409d66618a36fe2cd3106f89619768d8b", "metadata": { "applicationType": "replicated.app", "customerID": "__customerID__", diff --git a/integration/init_app/amazon-eks-template/expected/.ship/upstream/appRelease.json b/integration/init_app/amazon-eks-template/expected/.ship/upstream/appRelease.json index e62ba4b04..24c048797 100644 --- a/integration/init_app/amazon-eks-template/expected/.ship/upstream/appRelease.json +++ b/integration/init_app/amazon-eks-template/expected/.ship/upstream/appRelease.json @@ -9,7 +9,7 @@ "spec": "assets:\n v1:\n - amazon_eks:\n dest: new/new_vpc.tf\n cluster_name: '{{repl ConfigOption \"name_source\" }}'\n region: \"us-west-2\"\n created_vpc:\n vpc_cidr: '{{repl ConfigOption \"cidr_source\" }}'\n zones:\n - '{{repl ConfigOption \"zone_source\" }}'\n - us-west-2b\n public_subnets:\n - \"10.0.1.0/24\"\n - \"10.0.2.0/24\"\n private_subnets:\n - \"10.0.129.0/24\"\n - \"10.0.130.0/24\"\n autoscaling_groups:\n - name: alpha\n group_size: \"3\"\n machine_type: '{{repl ConfigOption \"machine_source\" }}'\n - name: bravo\n group_size: \"1\"\n machine_type: m5.4xlarge\n - inline:\n dest: install.sh\n contents: |\n #!/bin/bash\n echo \"run:\"\n echo \"terraform apply -f new/new_vpc.tf\"\n echo \"kubectl apply -f kube.yaml --kubeconfig {{repl AmazonEKS (ConfigOption \"name_source\") }}\"\n mode: 0777\n - inline:\n dest: kube.yaml\n contents: |\n this is not a valid kubernetes yaml\n mode: 0777\n\nconfig:\n v1:\n - name: template_sources\n title: Template Function Sources\n description: testing testing 123\n items:\n - name: name_source\n title: Name Source\n default: cluster-name-template\n type: text\n - name: cidr_source\n title: CIDR Source\n default: \"10.0.0.0/16\"\n type: text\n - name: zone_source\n title: Zone Source\n default: \"us-west-2a\"\n type: text\n - name: machine_source\n title: Machine Source\n default: m5.2xlarge\n type: text\n\nlifecycle:\n v1:\n - message:\n contents: \"hi\"\n - render: {}\n - message:\n contents: \"bye\"\n", "images": [], "githubContents": [], - "created": "Fri Nov 02 2018 17:07:38 GMT+0000 (UTC)", + "created": "2018-11-02T17:07:38.000Z", "entitlements": { "meta": { "last_updated": "0001-01-01T00:00:00Z", diff --git a/integration/init_app/basic/expected/.ship/state.json b/integration/init_app/basic/expected/.ship/state.json index e8126b2c7..5ca7aef91 100644 --- a/integration/init_app/basic/expected/.ship/state.json +++ b/integration/init_app/basic/expected/.ship/state.json @@ -2,7 +2,7 @@ "v1": { "config": {}, "upstream": "__upstream__", - "contentSHA": "aafa722a828058d1da1eee0ee2f449533b9ddff13534ea94760fd177ab79e864", + "contentSHA": "8997ab5eed1468dfdcc8953b793a89d39efbcc08cac820f4e6d343f27636d3fc", "metadata": { "applicationType": "replicated.app", "customerID": "__customerID__", @@ -31,7 +31,7 @@ "spec": "---\nassets:\n v1:\n - inline:\n contents: |\n #!/bin/bash\n echo \"installing nothing\"\n echo \"config option: {{repl ConfigOption \"test_option\" }}\"\n dest: ./scripts/install.sh\n mode: 0777\n - inline:\n contents: |\n #!/bin/bash\n echo \"tested nothing\"\n echo \"customer {{repl Installation \"customer_id\" }}\"\n echo \"install {{repl Installation \"installation_id\" }}\"\n dest: ./scripts/test.sh\n mode: 0777\nconfig:\n v1:\n - name: test_options\n title: Test Options\n description: testing testing 123\n items:\n - name: test_option\n title: Test Option\n default: abc123_test-option-value\n type: text\nlifecycle:\n v1:\n - render: {}\n", "images": [], "githubContents": [], - "created": "Tue Dec 04 2018 03:21:49 GMT+0000 (UTC)", + "created": "2018-12-04T03:21:49.000Z", "entitlements": {} } } diff --git a/integration/init_app/basic/expected/.ship/upstream/appRelease.json b/integration/init_app/basic/expected/.ship/upstream/appRelease.json index 33c11c80f..b899a424c 100644 --- a/integration/init_app/basic/expected/.ship/upstream/appRelease.json +++ b/integration/init_app/basic/expected/.ship/upstream/appRelease.json @@ -9,7 +9,7 @@ "spec": "---\nassets:\n v1:\n - inline:\n contents: |\n #!/bin/bash\n echo \"installing nothing\"\n echo \"config option: {{repl ConfigOption \"test_option\" }}\"\n dest: ./scripts/install.sh\n mode: 0777\n - inline:\n contents: |\n #!/bin/bash\n echo \"tested nothing\"\n echo \"customer {{repl Installation \"customer_id\" }}\"\n echo \"install {{repl Installation \"installation_id\" }}\"\n dest: ./scripts/test.sh\n mode: 0777\nconfig:\n v1:\n - name: test_options\n title: Test Options\n description: testing testing 123\n items:\n - name: test_option\n title: Test Option\n default: abc123_test-option-value\n type: text\nlifecycle:\n v1:\n - render: {}\n", "images": [], "githubContents": [], - "created": "Tue Dec 04 2018 03:21:49 GMT+0000 (UTC)", + "created": "2018-12-04T03:21:49.000Z", "entitlements": { "meta": { "last_updated": "0001-01-01T00:00:00Z", diff --git a/integration/init_app/bool-string-quoting/expected/.ship/state.json b/integration/init_app/bool-string-quoting/expected/.ship/state.json index 0590530a1..120b94867 100644 --- a/integration/init_app/bool-string-quoting/expected/.ship/state.json +++ b/integration/init_app/bool-string-quoting/expected/.ship/state.json @@ -28,6 +28,6 @@ "arch": "amd64" } }, - "contentSHA": "86448f75e9c4bdf955bbfc594e86308449ec5118472db1d8ee6d8039f3c40881" + "contentSHA": "3555d662950aad0214c26783543b484b3a6d8868a04816d17331e2aab840d076" } } diff --git a/integration/init_app/bool-string-quoting/expected/.ship/upstream/appRelease.json b/integration/init_app/bool-string-quoting/expected/.ship/upstream/appRelease.json index f4f19f721..45b3edcfb 100644 --- a/integration/init_app/bool-string-quoting/expected/.ship/upstream/appRelease.json +++ b/integration/init_app/bool-string-quoting/expected/.ship/upstream/appRelease.json @@ -9,7 +9,7 @@ "spec": "assets:\n v1:\n - inline:\n contents: |\n apiVersion: apps/v1\n kind: Deployment\n metadata:\n name: redis\n labels:\n component: redis\n spec:\n replicas: 1\n selector:\n matchLabels:\n component: redis\n template:\n metadata:\n labels:\n component: redis\n spec:\n containers:\n - name: redis\n image: redis\n args: [\"--appendonly\", \"yes\"]\n dest: base/redis-deployment.yaml\n mode: 0644\nconfig:\n v1: []\nlifecycle:\n v1:\n - config:\n invalidates: [\"render\"]\n - render:\n requires: [\"config\"]\n root: \".\"\n - kustomize:\n requires: [\"render\"]\n base: ./base\n overlay: overlays/ship\n dest: rendered.yaml\n", "images": [], "githubContents": [], - "created": "Tue Jul 23 2019 17:45:00 GMT+0000 (UTC)", + "created": "2019-07-23T17:45:00.000Z", "registrySecret": "3bfd99a69b5748fab756a593c7dcc852", "entitlements": { "meta": { diff --git a/integration/init_app/docker-asset-slug/expected/.ship/state.json b/integration/init_app/docker-asset-slug/expected/.ship/state.json index d4a090a2f..6c242453e 100644 --- a/integration/init_app/docker-asset-slug/expected/.ship/state.json +++ b/integration/init_app/docker-asset-slug/expected/.ship/state.json @@ -18,6 +18,6 @@ "sequence": 0, "version": "0.0.1" }, - "contentSHA": "7ecf2846a73c305b14b1bb2ef080ae62a92736561d7a2eaeaf1eef49749f0a6a" + "contentSHA": "edb3b28e1bcb404c0b1a5cd6198b93e5bef556e582e0cf646d24f1bd58369aee" } } diff --git a/integration/init_app/docker-asset-slug/expected/.ship/upstream/appRelease.json b/integration/init_app/docker-asset-slug/expected/.ship/upstream/appRelease.json index db8757a24..43e9fc029 100644 --- a/integration/init_app/docker-asset-slug/expected/.ship/upstream/appRelease.json +++ b/integration/init_app/docker-asset-slug/expected/.ship/upstream/appRelease.json @@ -22,7 +22,7 @@ } ], "githubContents": [], - "created": "Tue Mar 19 2019 00:47:09 GMT+0000 (UTC)", + "created": "2019-03-19T00:47:09.000Z", "registrySecret": "3bfd99a69b5748fab756a593c7dcc852", "entitlements": { "meta": { diff --git a/integration/init_app/docker-asset/expected/.ship/state.json b/integration/init_app/docker-asset/expected/.ship/state.json index b57721c6e..79713925d 100644 --- a/integration/init_app/docker-asset/expected/.ship/state.json +++ b/integration/init_app/docker-asset/expected/.ship/state.json @@ -18,6 +18,6 @@ "sequence": 0, "version": "1.0.0-SNAPSHOT" }, - "contentSHA": "e440ab14be5fead6c7f01efd0b24b9a1db2c809467dbeb314f81dcdeb8553ca7" + "contentSHA": "3bd2fa7428599e61779c7896b3630cbe046a469874d7345c01148e3a68ccde65" } } diff --git a/integration/init_app/docker-asset/expected/.ship/upstream/appRelease.json b/integration/init_app/docker-asset/expected/.ship/upstream/appRelease.json index dc2fa0e3b..16f65a38e 100644 --- a/integration/init_app/docker-asset/expected/.ship/upstream/appRelease.json +++ b/integration/init_app/docker-asset/expected/.ship/upstream/appRelease.json @@ -22,7 +22,7 @@ } ], "githubContents": [], - "created": "Fri Jan 18 2019 20:45:25 GMT+0000 (UTC)", + "created": "2019-01-18T20:45:25.000Z", "registrySecret": "THIS IS NOT A SECRET", "entitlements": { "meta": { diff --git a/integration/init_app/github-template-func/expected/.ship/state.json b/integration/init_app/github-template-func/expected/.ship/state.json index 9f95715b6..afb1a5fae 100644 --- a/integration/init_app/github-template-func/expected/.ship/state.json +++ b/integration/init_app/github-template-func/expected/.ship/state.json @@ -4,7 +4,7 @@ "option": "abc123" }, "upstream": "__upstream__", - "contentSHA": "1525f4ea74e654c3d6a021e2ded45e28b07164c5a2ef56a831047ef730c42a60", + "contentSHA": "4fea99c11f4bb028df543ecb45045ef18d01f9db664a2df2a764e877f4e112a9", "metadata": { "applicationType": "replicated.app", "customerID": "__customerID__", diff --git a/integration/init_app/github-template-func/expected/.ship/upstream/appRelease.json b/integration/init_app/github-template-func/expected/.ship/upstream/appRelease.json index 6e8e0475c..61702a047 100644 --- a/integration/init_app/github-template-func/expected/.ship/upstream/appRelease.json +++ b/integration/init_app/github-template-func/expected/.ship/upstream/appRelease.json @@ -94,7 +94,7 @@ ] } ], - "created": "Fri Nov 02 2018 17:07:52 GMT+0000 (UTC)", + "created": "2018-11-02T17:07:52.000Z", "registrySecret": "3bfd99a69b5748fab756a593c7dcc852", "entitlements": { "meta": { diff --git a/integration/init_app/helm-github/expected/.ship/state.json b/integration/init_app/helm-github/expected/.ship/state.json index ab3fdde44..315588bd1 100644 --- a/integration/init_app/helm-github/expected/.ship/state.json +++ b/integration/init_app/helm-github/expected/.ship/state.json @@ -1,7 +1,7 @@ { "v1": { "config": {}, - "contentSHA": "d47ebd26011bd04c77946884c93a7ec98bee02108ef164424c05cd9095199f7b", + "contentSHA": "902ee33d1589f9e15b1a37dce3d8750b0b9fe42d014e98b43c97443dd766c094", "releaseName": "integration-replicated-app-helm-github", "upstream": "__upstream__", "metadata": { diff --git a/integration/init_app/helm-github/expected/.ship/upstream/appRelease.json b/integration/init_app/helm-github/expected/.ship/upstream/appRelease.json index 357140caf..80ee08adc 100644 --- a/integration/init_app/helm-github/expected/.ship/upstream/appRelease.json +++ b/integration/init_app/helm-github/expected/.ship/upstream/appRelease.json @@ -220,7 +220,7 @@ ] } ], - "created": "Wed Dec 12 2018 22:03:17 GMT+0000 (UTC)", + "created": "2018-12-12T22:03:17.000Z", "entitlements": { "meta": { "last_updated": "0001-01-01T00:00:00Z", diff --git a/integration/init_app/installation-template-func/expected/.ship/state.json b/integration/init_app/installation-template-func/expected/.ship/state.json index 5c246d16e..26ba35798 100644 --- a/integration/init_app/installation-template-func/expected/.ship/state.json +++ b/integration/init_app/installation-template-func/expected/.ship/state.json @@ -2,7 +2,7 @@ "v1": { "config": {}, "upstream": "__upstream__", - "contentSHA": "ffb4e54d56ff40765aad683612a5dd1dab8d899458092ec19fcfe473d85a3566", + "contentSHA": "33ab41091e94a8cc56140f3f0edf7e72380d0404421012e2c6a79435effa26d1", "metadata": { "applicationType": "replicated.app", "customerID": "__customerID__", diff --git a/integration/init_app/installation-template-func/expected/.ship/upstream/appRelease.json b/integration/init_app/installation-template-func/expected/.ship/upstream/appRelease.json index d925c564f..690817b2f 100644 --- a/integration/init_app/installation-template-func/expected/.ship/upstream/appRelease.json +++ b/integration/init_app/installation-template-func/expected/.ship/upstream/appRelease.json @@ -9,7 +9,7 @@ "spec": "---\nassets:\n v1:\n - inline:\n contents: |\n #!/bin/bash\n echo \"installing nothing\"\n echo \"semver: {{repl Installation \"semver\" }}\"\n dest: ./scripts/install.sh\n mode: 0777\n - inline:\n contents: |\n #!/bin/bash\n echo \"tested nothing\"\n dest: ./scripts/test.sh\n mode: 0777\nconfig:\n v1:\n - name: test_options\n title: Test Options\n description: testing testing 123\n items:\n - name: test_option\n title: Test Option\n default: abc123_test-option-value\n type: text\nlifecycle:\n v1:\n - render: {}\n", "images": [], "githubContents": [], - "created": "Fri Nov 02 2018 17:08:04 GMT+0000 (UTC)", + "created": "2018-11-02T17:08:04.000Z", "registrySecret": "3bfd99a69b5748fab756a593c7dcc852", "entitlements": { "meta": { diff --git a/integration/init_app/troubleshoot-ship-release/expected/.ship/state.json b/integration/init_app/troubleshoot-ship-release/expected/.ship/state.json index 96b39fee2..39facd618 100644 --- a/integration/init_app/troubleshoot-ship-release/expected/.ship/state.json +++ b/integration/init_app/troubleshoot-ship-release/expected/.ship/state.json @@ -2,7 +2,7 @@ "v1": { "config": {}, "upstream": "__upstream__", - "contentSHA": "ecde9a9503806a80c7d65366b4484c4d8aaba13af29057849bd5c3475a760a42", + "contentSHA": "633a575ff6561213a71961555ec2dc71af85696aea34130027df505e41557c1c", "metadata": { "applicationType": "replicated.app", "license": { diff --git a/integration/init_app/troubleshoot-ship-release/expected/.ship/upstream/appRelease.json b/integration/init_app/troubleshoot-ship-release/expected/.ship/upstream/appRelease.json index 5148d190f..79e5f3978 100644 --- a/integration/init_app/troubleshoot-ship-release/expected/.ship/upstream/appRelease.json +++ b/integration/init_app/troubleshoot-ship-release/expected/.ship/upstream/appRelease.json @@ -9,7 +9,7 @@ "spec": "---\nassets:\n v1:\n - inline:\n contents: |\n {{repl CollectSpec }}\n dest: ./troubleshoot/collect.yml\n mode: 0644\n - inline:\n contents: |\n {{repl AnalyzeSpec }}\n dest: ./troubleshoot/analyze.yml\n mode: 0644\n\nconfig: {}\n\nlifecycle:\n v1:\n - render: {}\n", "images": [], "githubContents": [], - "created": "Fri Jul 05 2019 18:12:17 GMT+0000 (UTC)", + "created": "2019-07-05T18:12:17.000Z", "registrySecret": "THIS IS NOT A SECRET", "entitlements": { "meta": { diff --git a/integration/unfork/elastic-stack/expected/.ship/state.json b/integration/unfork/elastic-stack/expected/.ship/state.json index 55ba1b8a5..7b13820bf 100644 --- a/integration/unfork/elastic-stack/expected/.ship/state.json +++ b/integration/unfork/elastic-stack/expected/.ship/state.json @@ -22,7 +22,7 @@ "patches": { "/client-deployment.yaml": "apiVersion: apps/v1beta1\nkind: Deployment\nmetadata:\n labels:\n app: elasticsearch\n chart: elasticsearch-1.16.0\n component: client\n heritage: Tiller\n release: elastic-stack\n name: elastic-stack-elasticsearch-client\nspec:\n template:\n metadata:\n annotations:\n checksum/config: 4f07b9e19327171c37a9c353906c75a1f454cd31c3dfc600a8882d6e36713c49\n checksum/secret: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n spec:\n $setElementOrder/containers:\n - name: elasticsearch\n $setElementOrder/initContainers:\n - name: increase-memory-limits\n containers:\n - $setElementOrder/env:\n - name: DISCOVERY_SERVICE\n - name: NODE_DATA\n - name: NODE_INGEST\n - name: ES_HEAP_SIZE\n - name: NODE_MASTER\n - name: PROCESSORS\n - name: ES_JAVA_OPTS\n - name: MINIMUM_MASTER_NODES\n $setElementOrder/volumeMounts:\n - mountPath: /usr/share/elasticsearch/config/elasticsearch.yml\n - mountPath: /usr/share/elasticsearch/config/log4j2.properties\n env:\n - name: DISCOVERY_SERVICE\n value: elastic-stack-elasticsearch-master.default.svc.cluster.local\n - name: NODE_INGEST\n value: \"false\"\n - name: ES_HEAP_SIZE\n value: 512m\n - name: ES_JAVA_OPTS\n value: -Djava.net.preferIPv4Stack=true\n image: gcr.io/cos-containers/elasticsearch:5.4.2-xpack\n imagePullPolicy: Always\n livenessProbe:\n exec:\n command:\n - sh\n - -c\n - curl --request GET --silent --output /dev/null http://127.0.0.1:9200/_cluster/health?wait_for_status=yellow\n httpGet: null\n name: elasticsearch\n readinessProbe:\n exec:\n command:\n - sh\n - -c\n - curl --request GET --silent --output /dev/null http://127.0.0.1:9200/_cluster/health?wait_for_status=yellow\n httpGet: null\n volumeMounts:\n - mountPath: /usr/share/elasticsearch/config/elasticsearch.yml\n readOnly: true\n - mountPath: /usr/share/elasticsearch/config/log4j2.properties\n name: config\n readOnly: true\n subPath: log4j2.properties\n initContainers:\n - command:\n - sh\n - -c\n - |-\n # see https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html\n # and https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration-memory.html#mlockall\n # and https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cli-run-prod-mode\n sysctl -w vm.max_map_count=262144\n # To increase the ulimit\n # https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#_notes_for_production_use_and_defaults\n ulimit -l unlimited\n image: busybox\n name: increase-memory-limits\n securityContext:\n privileged: true\n - $patch: delete\n name: sysctl\n serviceAccountName: elastic-stack-elasticsearch\n", "/client-svc.yaml": "apiVersion: v1\nkind: Service\nmetadata:\n labels:\n app: elasticsearch\n chart: elasticsearch-1.16.0\n component: client\n heritage: Tiller\n release: elastic-stack\n name: elastic-stack-elasticsearch-client\nspec:\n $setElementOrder/ports:\n - port: 9200\n ports:\n - name: null\n port: 9200\n", - "/configmap.yaml": "apiVersion: v1\ndata:\n elasticsearch.yml: |-\n cluster.name: elasticsearch\n\n node.data: ${NODE_DATA:true}\n node.master: ${NODE_MASTER:true}\n node.ingest: ${NODE_INGEST:true}\n node.name: ${HOSTNAME}\n\n network.host: 0.0.0.0\n # see https://github.com/kubernetes/kubernetes/issues/3595\n bootstrap.memory_lock: ${BOOTSTRAP_MEMORY_LOCK:false}\n\n discovery:\n zen:\n ping.unicast.hosts: ${DISCOVERY_SERVICE:}\n minimum_master_nodes: ${MINIMUM_MASTER_NODES:2}\n\n # see https://github.com/elastic/elasticsearch-definitive-guide/pull/679\n processors: ${PROCESSORS:}\n\n # avoid split-brain w/ a minimum consensus of two masters plus a data node\n gateway.expected_master_nodes: ${EXPECTED_MASTER_NODES:2}\n gateway.expected_data_nodes: ${EXPECTED_DATA_NODES:1}\n gateway.recover_after_time: ${RECOVER_AFTER_TIME:5m}\n gateway.recover_after_master_nodes: ${RECOVER_AFTER_MASTER_NODES:2}\n gateway.recover_after_data_nodes: ${RECOVER_AFTER_DATA_NODES:1}\n\n # Extra Configuration\n\n # X-Pack\n\n # Search Guard\n log4j2.properties: |-\n status = error\n\n appender.console.type = Console\n appender.console.name = console\n appender.console.layout.type = PatternLayout\n appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n\n\n rootLogger.level = info\n rootLogger.appenderRef.console.ref = console\n post-start-hook.sh: null\n pre-stop-hook.sh: \"#!/bin/bash\\nset -e\\n\\nSERVICE_ACCOUNT_PATH=/var/run/secrets/kubernetes.io/serviceaccount\\nKUBE_TOKEN=$(\u003c${SERVICE_ACCOUNT_PATH}/token)\\nKUBE_NAMESPACE=$(\u003c${SERVICE_ACCOUNT_PATH}/namespace)\\n\\nSTATEFULSET_NAME=$(echo\n \\\"${HOSTNAME}\\\" | sed 's/-[0-9]*$//g')\\nINSTANCE_ID=$(echo \\\"${HOSTNAME}\\\" | grep\n -o '[0-9]*$')\\n\\necho \\\"Prepare stopping of Pet ${KUBE_NAMESPACE}/${HOSTNAME}\n of StatefulSet ${KUBE_NAMESPACE}/${STATEFULSET_NAME} instance_id ${INSTANCE_ID}\\\"\\n\\nexport\n STATEFULSET_STATUS=$(\\n curl -s \\\\\\n --cacert ${SERVICE_ACCOUNT_PATH}/ca.crt\n \\\\\\n -H \\\"Authorization: Bearer $KUBE_TOKEN\\\" \\\\\\n \\\"https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_PORT_443_TCP_PORT}/apis/apps/v1beta1/namespaces/${KUBE_NAMESPACE}/statefulsets/${STATEFULSET_NAME}/status\\\"\\n)\\nINSTANCES_DESIRED=$(\\n\\tpython\n - \u003c\u003c-EOF\\n\\t\\timport json\\n\\t\\timport os\\n\\n\\t\\tobj = json.loads(os.environ.get('STATEFULSET_STATUS'))\\n\\t\\tprint(obj['spec']['replicas'])\\n\\tEOF\\n)\\n\\necho\n \\\"Desired instance count is ${INSTANCES_DESIRED}\\\"\\n\\nif [ \\\"${INSTANCE_ID}\\\"\n -lt \\\"${INSTANCES_DESIRED}\\\" ]; then\\n echo \\\"No data migration needed\\\"\\n exit\n 0\\nfi\\n\\necho \\\"Prepare to migrate data of the node\\\"\\n\\nexport NODE_STATS=$(\\n\n \\ curl -X GET -s \\\\\\n http://127.0.0.1:9200/_nodes/stats\\n)\\nNODE_IP=$(\\n\\tpython\n - \u003c\u003c-EOF\\n\\t\\timport json\\n\\t\\timport os\\n\\n\\t\\tobj = json.loads(os.environ.get('NODE_STATS'))\\n\\t\\tkey\n = list(filter(lambda datum: obj['nodes'][datum]['name'] == os.environ.get('HOSTNAME'),\n obj['nodes'].keys()))[0]\\n\\t\\tnode = obj['nodes'][key]\\n\\t\\tprint(node['host'])\\n\\tEOF\\n)\\n\\necho\n \\\"Move all data from node ${NODE_IP}\\\"\\n\\ncurl -X PUT -H \\\"Content-Type: application/json\\\"\n -s \\\\\\n http://127.0.0.1:9200/_cluster/settings \\\\\\n --data \\\"{\\n \\\\\\\"transient\\\\\\\"\n :{\\n \\\\\\\"cluster.routing.allocation.exclude._ip\\\\\\\" : \\\\\\\"${NODE_IP}\\\\\\\"\\n\n \\ }\\n }\\\"\\necho\\n\\necho \\\"Wait for node documents to become empty\\\"\\nDOC_COUNT=$(\\n\\tpython\n - \u003c\u003c-EOF\\n\\t\\timport json\\n\\t\\timport os\\n\\n\\t\\tobj = json.loads(os.environ.get('NODE_STATS'))\\n\\t\\tkey\n = list(filter(lambda datum: obj['nodes'][datum]['name'] == os.environ.get('HOSTNAME'),\n obj['nodes'].keys()))[0]\\n\\t\\tnode = obj['nodes'][key]\\n\\t\\tprint(node['indices']['docs']['count'])\\n\\tEOF\\n)\\n\\nwhile\n [ \\\"${DOC_COUNT}\\\" -gt 0 ]; do\\n export NODE_STATS=$(\\n curl -X GET -s \\\\\\n\n \\ http://127.0.0.1:9200/_nodes/stats\\n )\\n DOC_COUNT=$(\\n\\t\\tpython - \u003c\u003c-EOF\\n\\t\\t\\timport\n json\\n\\t\\t\\timport os\\n\\n\\t\\t\\tobj = json.loads(os.environ.get('NODE_STATS'))\\n\\t\\t\\tkey\n = list(filter(lambda datum: obj['nodes'][datum]['name'] == os.environ.get('HOSTNAME'),\n obj['nodes'].keys()))[0]\\n\\t\\t\\tnode = obj['nodes'][key]\\n\\t\\t\\tcount = node['indices']['docs']['count']\\n\\t\\t\\tprint(count)\\n\\t\\tEOF\\n\n \\ )\\n echo \\\"Node contains ${DOC_COUNT} documents\\\"\\n sleep 1\\ndone\\n\\necho\n \\\"Wait for node shards to become empty\\\"\\nexport SHARD_STATS=$(\\n curl -X GET\n -s \\\\\\n http://127.0.0.1:9200/_cat/shards?format=json\\n)\\nSHARD_COUNT=$(\\n\\tpython\n - \u003c\u003c-EOF\\n\\t\\timport json\\n\\t\\timport os\\n\\n\\t\\tobj = json.loads(os.environ.get('SHARD_STATS'))\\n\\t\\tcount\n = len(filter(lambda datum: datum['node'] == os.environ.get('HOSTNAME'), obj))\\n\\t\\tprint(count)\\n\\tEOF\\n)\\nwhile\n [ \\\"${SHARD_COUNT}\\\" -gt 0 ]; do\\n export SHARD_STATS=$(\\n curl -X GET -s\n \\\\\\n http://127.0.0.1:9200/_cat/shards?format=json\\n )\\n SHARD_COUNT=$(\\n\\t\\tpython\n - \u003c\u003c-EOF\\n\\t\\t\\timport json\\n\\t\\t\\timport os\\n\\n\\t\\t\\tobj = json.loads(os.environ.get('SHARD_STATS'))\\n\\t\\t\\tcount\n = len(filter(lambda datum: datum['node'] == os.environ.get('HOSTNAME'), obj))\\n\\t\\t\\tprint(count)\\n\\t\\tEOF\\n\n \\ )\\n echo \\\"Node contains ${SHARD_COUNT} shards\\\"\\n sleep 1\\ndone\\n\\necho \\\"Node\n clear to shutdown\\\"\"\nkind: ConfigMap\nmetadata:\n labels:\n app: elastic-stack-elasticsearch\n chart: elasticsearch-1.16.0\n heritage: Tiller\n release: elastic-stack\n name: elastic-stack-elasticsearch\n", + "/configmap.yaml": "apiVersion: v1\ndata:\n elasticsearch.yml: |-\n cluster.name: elasticsearch\n\n node.data: ${NODE_DATA:true}\n node.master: ${NODE_MASTER:true}\n node.ingest: ${NODE_INGEST:true}\n node.name: ${HOSTNAME}\n\n network.host: 0.0.0.0\n # see https://github.com/kubernetes/kubernetes/issues/3595\n bootstrap.memory_lock: ${BOOTSTRAP_MEMORY_LOCK:false}\n\n discovery:\n zen:\n ping.unicast.hosts: ${DISCOVERY_SERVICE:}\n minimum_master_nodes: ${MINIMUM_MASTER_NODES:2}\n\n # see https://github.com/elastic/elasticsearch-definitive-guide/pull/679\n processors: ${PROCESSORS:}\n\n # avoid split-brain w/ a minimum consensus of two masters plus a data node\n gateway.expected_master_nodes: ${EXPECTED_MASTER_NODES:2}\n gateway.expected_data_nodes: ${EXPECTED_DATA_NODES:1}\n gateway.recover_after_time: ${RECOVER_AFTER_TIME:5m}\n gateway.recover_after_master_nodes: ${RECOVER_AFTER_MASTER_NODES:2}\n gateway.recover_after_data_nodes: ${RECOVER_AFTER_DATA_NODES:1}\n\n # Extra Configuration\n\n # X-Pack\n\n # Search Guard\n log4j2.properties: |-\n status = error\n\n appender.console.type = Console\n appender.console.name = console\n appender.console.layout.type = PatternLayout\n appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n\n\n rootLogger.level = info\n rootLogger.appenderRef.console.ref = console\n post-start-hook.sh: null\n pre-stop-hook.sh: \"#!/bin/bash\\nset -e\\n\\nSERVICE_ACCOUNT_PATH=/var/run/secrets/kubernetes.io/serviceaccount\\nKUBE_TOKEN=$(\u003c${SERVICE_ACCOUNT_PATH}/token)\\nKUBE_NAMESPACE=$(\u003c${SERVICE_ACCOUNT_PATH}/namespace)\\n\\nSTATEFULSET_NAME=$(echo \\\"${HOSTNAME}\\\" | sed 's/-[0-9]*$//g')\\nINSTANCE_ID=$(echo \\\"${HOSTNAME}\\\" | grep -o '[0-9]*$')\\n\\necho \\\"Prepare stopping of Pet ${KUBE_NAMESPACE}/${HOSTNAME} of StatefulSet ${KUBE_NAMESPACE}/${STATEFULSET_NAME} instance_id ${INSTANCE_ID}\\\"\\n\\nexport STATEFULSET_STATUS=$(\\n curl -s \\\\\\n --cacert ${SERVICE_ACCOUNT_PATH}/ca.crt \\\\\\n -H \\\"Authorization: Bearer $KUBE_TOKEN\\\" \\\\\\n \\\"https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_PORT_443_TCP_PORT}/apis/apps/v1beta1/namespaces/${KUBE_NAMESPACE}/statefulsets/${STATEFULSET_NAME}/status\\\"\\n)\\nINSTANCES_DESIRED=$(\\n\\tpython - \u003c\u003c-EOF\\n\\t\\timport json\\n\\t\\timport os\\n\\n\\t\\tobj = json.loads(os.environ.get('STATEFULSET_STATUS'))\\n\\t\\tprint(obj['spec']['replicas'])\\n\\tEOF\\n)\\n\\necho \\\"Desired instance count is ${INSTANCES_DESIRED}\\\"\\n\\nif [ \\\"${INSTANCE_ID}\\\" -lt \\\"${INSTANCES_DESIRED}\\\" ]; then\\n echo \\\"No data migration needed\\\"\\n exit 0\\nfi\\n\\necho \\\"Prepare to migrate data of the node\\\"\\n\\nexport NODE_STATS=$(\\n curl -X GET -s \\\\\\n http://127.0.0.1:9200/_nodes/stats\\n)\\nNODE_IP=$(\\n\\tpython - \u003c\u003c-EOF\\n\\t\\timport json\\n\\t\\timport os\\n\\n\\t\\tobj = json.loads(os.environ.get('NODE_STATS'))\\n\\t\\tkey = list(filter(lambda datum: obj['nodes'][datum]['name'] == os.environ.get('HOSTNAME'), obj['nodes'].keys()))[0]\\n\\t\\tnode = obj['nodes'][key]\\n\\t\\tprint(node['host'])\\n\\tEOF\\n)\\n\\necho \\\"Move all data from node ${NODE_IP}\\\"\\n\\ncurl -X PUT -H \\\"Content-Type: application/json\\\" -s \\\\\\n http://127.0.0.1:9200/_cluster/settings \\\\\\n --data \\\"{\\n \\\\\\\"transient\\\\\\\" :{\\n \\\\\\\"cluster.routing.allocation.exclude._ip\\\\\\\" : \\\\\\\"${NODE_IP}\\\\\\\"\\n }\\n }\\\"\\necho\\n\\necho \\\"Wait for node documents to become empty\\\"\\nDOC_COUNT=$(\\n\\tpython - \u003c\u003c-EOF\\n\\t\\timport json\\n\\t\\timport os\\n\\n\\t\\tobj = json.loads(os.environ.get('NODE_STATS'))\\n\\t\\tkey = list(filter(lambda datum: obj['nodes'][datum]['name'] == os.environ.get('HOSTNAME'), obj['nodes'].keys()))[0]\\n\\t\\tnode = obj['nodes'][key]\\n\\t\\tprint(node['indices']['docs']['count'])\\n\\tEOF\\n)\\n\\nwhile [ \\\"${DOC_COUNT}\\\" -gt 0 ]; do\\n export NODE_STATS=$(\\n curl -X GET -s \\\\\\n http://127.0.0.1:9200/_nodes/stats\\n )\\n DOC_COUNT=$(\\n\\t\\tpython - \u003c\u003c-EOF\\n\\t\\t\\timport json\\n\\t\\t\\timport os\\n\\n\\t\\t\\tobj = json.loads(os.environ.get('NODE_STATS'))\\n\\t\\t\\tkey = list(filter(lambda datum: obj['nodes'][datum]['name'] == os.environ.get('HOSTNAME'), obj['nodes'].keys()))[0]\\n\\t\\t\\tnode = obj['nodes'][key]\\n\\t\\t\\tcount = node['indices']['docs']['count']\\n\\t\\t\\tprint(count)\\n\\t\\tEOF\\n )\\n echo \\\"Node contains ${DOC_COUNT} documents\\\"\\n sleep 1\\ndone\\n\\necho \\\"Wait for node shards to become empty\\\"\\nexport SHARD_STATS=$(\\n curl -X GET -s \\\\\\n http://127.0.0.1:9200/_cat/shards?format=json\\n)\\nSHARD_COUNT=$(\\n\\tpython - \u003c\u003c-EOF\\n\\t\\timport json\\n\\t\\timport os\\n\\n\\t\\tobj = json.loads(os.environ.get('SHARD_STATS'))\\n\\t\\tcount = len(filter(lambda datum: datum['node'] == os.environ.get('HOSTNAME'), obj))\\n\\t\\tprint(count)\\n\\tEOF\\n)\\nwhile [ \\\"${SHARD_COUNT}\\\" -gt 0 ]; do\\n export SHARD_STATS=$(\\n curl -X GET -s \\\\\\n http://127.0.0.1:9200/_cat/shards?format=json\\n )\\n SHARD_COUNT=$(\\n\\t\\tpython - \u003c\u003c-EOF\\n\\t\\t\\timport json\\n\\t\\t\\timport os\\n\\n\\t\\t\\tobj = json.loads(os.environ.get('SHARD_STATS'))\\n\\t\\t\\tcount = len(filter(lambda datum: datum['node'] == os.environ.get('HOSTNAME'), obj))\\n\\t\\t\\tprint(count)\\n\\t\\tEOF\\n )\\n echo \\\"Node contains ${SHARD_COUNT} shards\\\"\\n sleep 1\\ndone\\n\\necho \\\"Node clear to shutdown\\\"\"\nkind: ConfigMap\nmetadata:\n labels:\n app: elastic-stack-elasticsearch\n chart: elasticsearch-1.16.0\n heritage: Tiller\n release: elastic-stack\n name: elastic-stack-elasticsearch\n", "/data-statefulset.yaml": "apiVersion: apps/v1beta1\nkind: StatefulSet\nmetadata:\n labels:\n app: elasticsearch\n chart: elasticsearch-1.16.0\n component: data\n heritage: Tiller\n release: elastic-stack\n name: elastic-stack-elasticsearch-data\nspec:\n template:\n metadata:\n annotations:\n checksum/config: 4f07b9e19327171c37a9c353906c75a1f454cd31c3dfc600a8882d6e36713c49\n checksum/secret: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n labels:\n role: null\n spec:\n $setElementOrder/containers:\n - name: elasticsearch\n $setElementOrder/initContainers:\n - name: increase-memory-limits\n containers:\n - $setElementOrder/env:\n - name: DISCOVERY_SERVICE\n - name: NODE_MASTER\n - name: PROCESSORS\n - name: ES_HEAP_SIZE\n - name: ES_JAVA_OPTS\n - name: MINIMUM_MASTER_NODES\n $setElementOrder/volumeMounts:\n - mountPath: /usr/share/elasticsearch/data\n - mountPath: /usr/share/elasticsearch/config/elasticsearch.yml\n - mountPath: /usr/share/elasticsearch/config/log4j2.properties\n - mountPath: /pre-stop-hook.sh\n env:\n - name: DISCOVERY_SERVICE\n value: elastic-stack-elasticsearch-master.default.svc.cluster.local\n - name: ES_HEAP_SIZE\n value: 1536m\n - name: ES_JAVA_OPTS\n value: -Djava.net.preferIPv4Stack=true\n image: gcr.io/cos-containers/elasticsearch:5.4.2-xpack\n imagePullPolicy: Always\n lifecycle:\n postStart: null\n name: elasticsearch\n readinessProbe:\n exec:\n command:\n - sh\n - -c\n - curl --request GET --silent --output /dev/null http://127.0.0.1:9200/_cluster/health?local=true\n httpGet: null\n volumeMounts:\n - mountPath: /usr/share/elasticsearch/config/elasticsearch.yml\n readOnly: true\n - mountPath: /usr/share/elasticsearch/config/log4j2.properties\n name: config\n readOnly: true\n subPath: log4j2.properties\n - $patch: delete\n mountPath: /post-start-hook.sh\n initContainers:\n - command:\n - sh\n - -c\n - |-\n # see https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html\n # and https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration-memory.html#mlockall\n # and https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cli-run-prod-mode\n sysctl -w vm.max_map_count=262144\n # To increase the ulimit\n # https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#_notes_for_production_use_and_defaults\n ulimit -l unlimited\n image: busybox\n name: increase-memory-limits\n securityContext:\n privileged: true\n - $patch: delete\n name: chown\n - $patch: delete\n name: sysctl\n serviceAccountName: elastic-stack-elasticsearch\n updateStrategy: null\n volumeClaimTemplates:\n - metadata:\n name: data\n spec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: 4Gi\n", "/deployment.yaml": "apiVersion: apps/v1beta1\nkind: Deployment\nmetadata:\n labels:\n app: kibana\n chart: kibana-1.1.2\n heritage: Tiller\n release: elastic-stack\n name: elastic-stack-kibana\nspec:\n revisionHistoryLimit: null\n template:\n metadata:\n annotations: null\n spec:\n $setElementOrder/containers:\n - name: kibana\n containers:\n - $setElementOrder/env:\n - name: XPACK_MONITORING_ENABLED\n - name: ELASTICSEARCH_URL\n $setElementOrder/ports:\n - containerPort: 5601\n env:\n - name: XPACK_MONITORING_ENABLED\n value: \"true\"\n - name: ELASTICSEARCH_URL\n value: http://elastic-stack-elasticsearch:9200\n image: docker.elastic.co/kibana/kibana:5.4.2\n livenessProbe:\n httpGet:\n path: /\n port: 5601\n initialDelaySeconds: 180\n name: kibana\n ports:\n - containerPort: 5601\n name: http\n protocol: null\n readinessProbe:\n httpGet:\n path: /status\n port: 5601\n initialDelaySeconds: 180\n periodSeconds: 10\n resources: null\n securityContext:\n runAsNonRoot: true\n runAsUser: 1000\n volumeMounts: null\n serviceAccountName: null\n tolerations: null\n volumes: null\n", "/master-statefulset.yaml": "apiVersion: apps/v1beta1\nkind: StatefulSet\nmetadata:\n labels:\n app: elasticsearch\n chart: elasticsearch-1.16.0\n component: master\n heritage: Tiller\n release: elastic-stack\n name: elastic-stack-elasticsearch-master\nspec:\n replicas: 2\n template:\n metadata:\n annotations:\n checksum/config: 4f07b9e19327171c37a9c353906c75a1f454cd31c3dfc600a8882d6e36713c49\n checksum/secret: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n labels:\n role: null\n spec:\n $setElementOrder/containers:\n - name: elasticsearch\n $setElementOrder/initContainers:\n - name: increase-memory-limits\n containers:\n - $setElementOrder/env:\n - name: DISCOVERY_SERVICE\n - name: NODE_DATA\n - name: NODE_INGEST\n - name: ES_HEAP_SIZE\n - name: PROCESSORS\n - name: ES_JAVA_OPTS\n - name: MINIMUM_MASTER_NODES\n $setElementOrder/volumeMounts:\n - mountPath: /usr/share/elasticsearch/data\n - mountPath: /usr/share/elasticsearch/config/elasticsearch.yml\n - mountPath: /usr/share/elasticsearch/config/log4j2.properties\n env:\n - name: DISCOVERY_SERVICE\n value: elastic-stack-elasticsearch-master.default.svc.cluster.local\n - name: NODE_INGEST\n value: \"false\"\n - name: ES_HEAP_SIZE\n value: 512m\n - name: ES_JAVA_OPTS\n value: -Djava.net.preferIPv4Stack=true\n image: gcr.io/cos-containers/elasticsearch:5.4.2-xpack\n imagePullPolicy: Always\n name: elasticsearch\n readinessProbe:\n exec:\n command:\n - sh\n - -c\n - curl --request GET --silent --output /dev/null http://127.0.0.1:9200/_cluster/health?local=true\n httpGet: null\n volumeMounts:\n - mountPath: /usr/share/elasticsearch/config/elasticsearch.yml\n readOnly: true\n - mountPath: /usr/share/elasticsearch/config/log4j2.properties\n name: config\n readOnly: true\n subPath: log4j2.properties\n initContainers:\n - command:\n - sh\n - -c\n - |-\n # see https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html\n # and https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration-memory.html#mlockall\n # and https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cli-run-prod-mode\n sysctl -w vm.max_map_count=262144\n # To increase the ulimit\n # https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#_notes_for_production_use_and_defaults\n ulimit -l unlimited\n image: busybox\n name: increase-memory-limits\n securityContext:\n privileged: true\n - $patch: delete\n name: chown\n - $patch: delete\n name: sysctl\n serviceAccountName: elastic-stack-elasticsearch\n updateStrategy: null\n", diff --git a/integration/unfork/elastic-stack/expected/overlays/ship/configmap.yaml b/integration/unfork/elastic-stack/expected/overlays/ship/configmap.yaml index 9b02ec622..a05c86167 100755 --- a/integration/unfork/elastic-stack/expected/overlays/ship/configmap.yaml +++ b/integration/unfork/elastic-stack/expected/overlays/ship/configmap.yaml @@ -43,43 +43,7 @@ data: rootLogger.level = info rootLogger.appenderRef.console.ref = console post-start-hook.sh: null - pre-stop-hook.sh: "#!/bin/bash\nset -e\n\nSERVICE_ACCOUNT_PATH=/var/run/secrets/kubernetes.io/serviceaccount\nKUBE_TOKEN=$(<${SERVICE_ACCOUNT_PATH}/token)\nKUBE_NAMESPACE=$(<${SERVICE_ACCOUNT_PATH}/namespace)\n\nSTATEFULSET_NAME=$(echo - \"${HOSTNAME}\" | sed 's/-[0-9]*$//g')\nINSTANCE_ID=$(echo \"${HOSTNAME}\" | grep - -o '[0-9]*$')\n\necho \"Prepare stopping of Pet ${KUBE_NAMESPACE}/${HOSTNAME} - of StatefulSet ${KUBE_NAMESPACE}/${STATEFULSET_NAME} instance_id ${INSTANCE_ID}\"\n\nexport - STATEFULSET_STATUS=$(\n curl -s \\\n --cacert ${SERVICE_ACCOUNT_PATH}/ca.crt - \\\n -H \"Authorization: Bearer $KUBE_TOKEN\" \\\n \"https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_PORT_443_TCP_PORT}/apis/apps/v1beta1/namespaces/${KUBE_NAMESPACE}/statefulsets/${STATEFULSET_NAME}/status\"\n)\nINSTANCES_DESIRED=$(\n\tpython - - <<-EOF\n\t\timport json\n\t\timport os\n\n\t\tobj = json.loads(os.environ.get('STATEFULSET_STATUS'))\n\t\tprint(obj['spec']['replicas'])\n\tEOF\n)\n\necho - \"Desired instance count is ${INSTANCES_DESIRED}\"\n\nif [ \"${INSTANCE_ID}\" - -lt \"${INSTANCES_DESIRED}\" ]; then\n echo \"No data migration needed\"\n exit - 0\nfi\n\necho \"Prepare to migrate data of the node\"\n\nexport NODE_STATS=$(\n - \ curl -X GET -s \\\n http://127.0.0.1:9200/_nodes/stats\n)\nNODE_IP=$(\n\tpython - - <<-EOF\n\t\timport json\n\t\timport os\n\n\t\tobj = json.loads(os.environ.get('NODE_STATS'))\n\t\tkey - = list(filter(lambda datum: obj['nodes'][datum]['name'] == os.environ.get('HOSTNAME'), - obj['nodes'].keys()))[0]\n\t\tnode = obj['nodes'][key]\n\t\tprint(node['host'])\n\tEOF\n)\n\necho - \"Move all data from node ${NODE_IP}\"\n\ncurl -X PUT -H \"Content-Type: application/json\" - -s \\\n http://127.0.0.1:9200/_cluster/settings \\\n --data \"{\n \\\"transient\\\" - :{\n \\\"cluster.routing.allocation.exclude._ip\\\" : \\\"${NODE_IP}\\\"\n - \ }\n }\"\necho\n\necho \"Wait for node documents to become empty\"\nDOC_COUNT=$(\n\tpython - - <<-EOF\n\t\timport json\n\t\timport os\n\n\t\tobj = json.loads(os.environ.get('NODE_STATS'))\n\t\tkey - = list(filter(lambda datum: obj['nodes'][datum]['name'] == os.environ.get('HOSTNAME'), - obj['nodes'].keys()))[0]\n\t\tnode = obj['nodes'][key]\n\t\tprint(node['indices']['docs']['count'])\n\tEOF\n)\n\nwhile - [ \"${DOC_COUNT}\" -gt 0 ]; do\n export NODE_STATS=$(\n curl -X GET -s \\\n - \ http://127.0.0.1:9200/_nodes/stats\n )\n DOC_COUNT=$(\n\t\tpython - <<-EOF\n\t\t\timport - json\n\t\t\timport os\n\n\t\t\tobj = json.loads(os.environ.get('NODE_STATS'))\n\t\t\tkey - = list(filter(lambda datum: obj['nodes'][datum]['name'] == os.environ.get('HOSTNAME'), - obj['nodes'].keys()))[0]\n\t\t\tnode = obj['nodes'][key]\n\t\t\tcount = node['indices']['docs']['count']\n\t\t\tprint(count)\n\t\tEOF\n - \ )\n echo \"Node contains ${DOC_COUNT} documents\"\n sleep 1\ndone\n\necho - \"Wait for node shards to become empty\"\nexport SHARD_STATS=$(\n curl -X GET - -s \\\n http://127.0.0.1:9200/_cat/shards?format=json\n)\nSHARD_COUNT=$(\n\tpython - - <<-EOF\n\t\timport json\n\t\timport os\n\n\t\tobj = json.loads(os.environ.get('SHARD_STATS'))\n\t\tcount - = len(filter(lambda datum: datum['node'] == os.environ.get('HOSTNAME'), obj))\n\t\tprint(count)\n\tEOF\n)\nwhile - [ \"${SHARD_COUNT}\" -gt 0 ]; do\n export SHARD_STATS=$(\n curl -X GET -s - \\\n http://127.0.0.1:9200/_cat/shards?format=json\n )\n SHARD_COUNT=$(\n\t\tpython - - <<-EOF\n\t\t\timport json\n\t\t\timport os\n\n\t\t\tobj = json.loads(os.environ.get('SHARD_STATS'))\n\t\t\tcount - = len(filter(lambda datum: datum['node'] == os.environ.get('HOSTNAME'), obj))\n\t\t\tprint(count)\n\t\tEOF\n - \ )\n echo \"Node contains ${SHARD_COUNT} shards\"\n sleep 1\ndone\n\necho \"Node - clear to shutdown\"" + pre-stop-hook.sh: "#!/bin/bash\nset -e\n\nSERVICE_ACCOUNT_PATH=/var/run/secrets/kubernetes.io/serviceaccount\nKUBE_TOKEN=$(<${SERVICE_ACCOUNT_PATH}/token)\nKUBE_NAMESPACE=$(<${SERVICE_ACCOUNT_PATH}/namespace)\n\nSTATEFULSET_NAME=$(echo \"${HOSTNAME}\" | sed 's/-[0-9]*$//g')\nINSTANCE_ID=$(echo \"${HOSTNAME}\" | grep -o '[0-9]*$')\n\necho \"Prepare stopping of Pet ${KUBE_NAMESPACE}/${HOSTNAME} of StatefulSet ${KUBE_NAMESPACE}/${STATEFULSET_NAME} instance_id ${INSTANCE_ID}\"\n\nexport STATEFULSET_STATUS=$(\n curl -s \\\n --cacert ${SERVICE_ACCOUNT_PATH}/ca.crt \\\n -H \"Authorization: Bearer $KUBE_TOKEN\" \\\n \"https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_PORT_443_TCP_PORT}/apis/apps/v1beta1/namespaces/${KUBE_NAMESPACE}/statefulsets/${STATEFULSET_NAME}/status\"\n)\nINSTANCES_DESIRED=$(\n\tpython - <<-EOF\n\t\timport json\n\t\timport os\n\n\t\tobj = json.loads(os.environ.get('STATEFULSET_STATUS'))\n\t\tprint(obj['spec']['replicas'])\n\tEOF\n)\n\necho \"Desired instance count is ${INSTANCES_DESIRED}\"\n\nif [ \"${INSTANCE_ID}\" -lt \"${INSTANCES_DESIRED}\" ]; then\n echo \"No data migration needed\"\n exit 0\nfi\n\necho \"Prepare to migrate data of the node\"\n\nexport NODE_STATS=$(\n curl -X GET -s \\\n http://127.0.0.1:9200/_nodes/stats\n)\nNODE_IP=$(\n\tpython - <<-EOF\n\t\timport json\n\t\timport os\n\n\t\tobj = json.loads(os.environ.get('NODE_STATS'))\n\t\tkey = list(filter(lambda datum: obj['nodes'][datum]['name'] == os.environ.get('HOSTNAME'), obj['nodes'].keys()))[0]\n\t\tnode = obj['nodes'][key]\n\t\tprint(node['host'])\n\tEOF\n)\n\necho \"Move all data from node ${NODE_IP}\"\n\ncurl -X PUT -H \"Content-Type: application/json\" -s \\\n http://127.0.0.1:9200/_cluster/settings \\\n --data \"{\n \\\"transient\\\" :{\n \\\"cluster.routing.allocation.exclude._ip\\\" : \\\"${NODE_IP}\\\"\n }\n }\"\necho\n\necho \"Wait for node documents to become empty\"\nDOC_COUNT=$(\n\tpython - <<-EOF\n\t\timport json\n\t\timport os\n\n\t\tobj = json.loads(os.environ.get('NODE_STATS'))\n\t\tkey = list(filter(lambda datum: obj['nodes'][datum]['name'] == os.environ.get('HOSTNAME'), obj['nodes'].keys()))[0]\n\t\tnode = obj['nodes'][key]\n\t\tprint(node['indices']['docs']['count'])\n\tEOF\n)\n\nwhile [ \"${DOC_COUNT}\" -gt 0 ]; do\n export NODE_STATS=$(\n curl -X GET -s \\\n http://127.0.0.1:9200/_nodes/stats\n )\n DOC_COUNT=$(\n\t\tpython - <<-EOF\n\t\t\timport json\n\t\t\timport os\n\n\t\t\tobj = json.loads(os.environ.get('NODE_STATS'))\n\t\t\tkey = list(filter(lambda datum: obj['nodes'][datum]['name'] == os.environ.get('HOSTNAME'), obj['nodes'].keys()))[0]\n\t\t\tnode = obj['nodes'][key]\n\t\t\tcount = node['indices']['docs']['count']\n\t\t\tprint(count)\n\t\tEOF\n )\n echo \"Node contains ${DOC_COUNT} documents\"\n sleep 1\ndone\n\necho \"Wait for node shards to become empty\"\nexport SHARD_STATS=$(\n curl -X GET -s \\\n http://127.0.0.1:9200/_cat/shards?format=json\n)\nSHARD_COUNT=$(\n\tpython - <<-EOF\n\t\timport json\n\t\timport os\n\n\t\tobj = json.loads(os.environ.get('SHARD_STATS'))\n\t\tcount = len(filter(lambda datum: datum['node'] == os.environ.get('HOSTNAME'), obj))\n\t\tprint(count)\n\tEOF\n)\nwhile [ \"${SHARD_COUNT}\" -gt 0 ]; do\n export SHARD_STATS=$(\n curl -X GET -s \\\n http://127.0.0.1:9200/_cat/shards?format=json\n )\n SHARD_COUNT=$(\n\t\tpython - <<-EOF\n\t\t\timport json\n\t\t\timport os\n\n\t\t\tobj = json.loads(os.environ.get('SHARD_STATS'))\n\t\t\tcount = len(filter(lambda datum: datum['node'] == os.environ.get('HOSTNAME'), obj))\n\t\t\tprint(count)\n\t\tEOF\n )\n echo \"Node contains ${SHARD_COUNT} shards\"\n sleep 1\ndone\n\necho \"Node clear to shutdown\"" kind: ConfigMap metadata: labels: diff --git a/integration/update/app-with-added-files/expected/.ship/state.json b/integration/update/app-with-added-files/expected/.ship/state.json index f59de41d8..c1da27703 100644 --- a/integration/update/app-with-added-files/expected/.ship/state.json +++ b/integration/update/app-with-added-files/expected/.ship/state.json @@ -33,6 +33,6 @@ "arch": "amd64" } }, - "contentSHA": "1e6ffe4f71d9add6383fed0de4e837e5caba04b40b87a216371fed889e2f78e3" + "contentSHA": "2149da5f23705cdc2e414ca3ef642d208c0d4c284bc571c1fa489df1dfab7388" } } diff --git a/integration/update/app-with-added-files/expected/.ship/upstream/appRelease.json b/integration/update/app-with-added-files/expected/.ship/upstream/appRelease.json index 21f9b18c4..27e325865 100644 --- a/integration/update/app-with-added-files/expected/.ship/upstream/appRelease.json +++ b/integration/update/app-with-added-files/expected/.ship/upstream/appRelease.json @@ -9,7 +9,7 @@ "spec": "assets:\n v1:\n - inline:\n contents: |\n apiVersion: apps/v1\n kind: Deployment\n metadata:\n name: redis\n labels:\n component: redis\n spec:\n replicas: 1\n selector:\n matchLabels:\n component: redis\n template:\n metadata:\n labels:\n component: redis\n spec:\n containers:\n - name: redis\n image: redis\n dest: base/redis-deployment.yaml\n mode: 0644\n - inline:\n contents: |\n apiVersion: apps/v1\n kind: Deployment\n metadata:\n name: redis2\n labels:\n component: redis2\n spec:\n replicas: 1\n selector:\n matchLabels:\n component: redis2\n template:\n metadata:\n labels:\n component: redis2\n spec:\n containers:\n - name: redis2\n image: redis\n dest: base/redis2-deployment.yaml\n mode: 0644\nconfig:\n v1: []\nlifecycle:\n v1:\n - config:\n invalidates: [\"render\"]\n - render:\n requires: [\"config\"]\n root: \".\"\n - kustomize:\n requires: [\"render\"]\n base: ./base\n overlay: overlays/ship\n dest: rendered.yaml", "images": [], "githubContents": [], - "created": "Wed Jul 24 2019 17:44:44 GMT+0000 (UTC)", + "created": "2019-07-24T17:44:44.000Z", "registrySecret": "3bfd99a69b5748fab756a593c7dcc852", "entitlements": { "meta": { diff --git a/integration/update/app-with-added-files/input/.ship/state.json b/integration/update/app-with-added-files/input/.ship/state.json index af6ce35e1..9a3b3b170 100644 --- a/integration/update/app-with-added-files/input/.ship/state.json +++ b/integration/update/app-with-added-files/input/.ship/state.json @@ -58,6 +58,6 @@ "arch": "amd64" } }, - "contentSHA": "1e6ffe4f71d9add6383fed0de4e837e5caba04b40b87a216371fed889e2f78e3" + "contentSHA": "2149da5f23705cdc2e414ca3ef642d208c0d4c284bc571c1fa489df1dfab7388" } } \ No newline at end of file diff --git a/integration/update/app_basic/expected/.ship/state.json b/integration/update/app_basic/expected/.ship/state.json index a274c675a..7d5a311bf 100644 --- a/integration/update/app_basic/expected/.ship/state.json +++ b/integration/update/app_basic/expected/.ship/state.json @@ -2,7 +2,7 @@ "v1": { "config": {}, "upstream": "staging.replicated.app/some-cool-ci-tool?installation_id=3Z6uuPbVz6jTxRuXHn_l6UlYQz3hWz6-&customer_id=-Am-_6i5pw0u4AbspOwKN4lZUCn49u_G", - "contentSHA": "aafa722a828058d1da1eee0ee2f449533b9ddff13534ea94760fd177ab79e864", + "contentSHA": "8997ab5eed1468dfdcc8953b793a89d39efbcc08cac820f4e6d343f27636d3fc", "metadata": { "applicationType": "replicated.app", "customerID": "-Am-_6i5pw0u4AbspOwKN4lZUCn49u_G", diff --git a/integration/update/app_basic/expected/.ship/upstream/appRelease.json b/integration/update/app_basic/expected/.ship/upstream/appRelease.json index f9646aa32..601b6e92e 100644 --- a/integration/update/app_basic/expected/.ship/upstream/appRelease.json +++ b/integration/update/app_basic/expected/.ship/upstream/appRelease.json @@ -9,7 +9,7 @@ "spec": "---\nassets:\n v1:\n - inline:\n contents: |\n #!/bin/bash\n echo \"installing nothing\"\n echo \"config option: {{repl ConfigOption \"test_option\" }}\"\n dest: ./scripts/install.sh\n mode: 0777\n - inline:\n contents: |\n #!/bin/bash\n echo \"tested nothing\"\n echo \"customer {{repl Installation \"customer_id\" }}\"\n echo \"install {{repl Installation \"installation_id\" }}\"\n dest: ./scripts/test.sh\n mode: 0777\nconfig:\n v1:\n - name: test_options\n title: Test Options\n description: testing testing 123\n items:\n - name: test_option\n title: Test Option\n default: abc123_test-option-value\n type: text\nlifecycle:\n v1:\n - render: {}\n", "images": [], "githubContents": [], - "created": "Tue Dec 04 2018 03:21:49 GMT+0000 (UTC)", + "created": "2018-12-04T03:21:49.000Z", "registrySecret": "3bfd99a69b5748fab756a593c7dcc852", "entitlements": { "meta": {