From 47f4f95edf5f21f8f01ce8f248d6f54ed27192d4 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Fri, 10 Apr 2026 00:57:16 +0000 Subject: [PATCH 01/27] bump bosh-blobstore-gcs/0.0.376 --- .../stages/blobstore_clis/assets/bosh-blobstore-gcs.sha256sum | 2 +- .../stages/blobstore_clis/assets/bosh-blobstore-gcs.url | 2 +- .../stages/blobstore_clis/assets/bosh-blobstore-gcs.version | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.sha256sum b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.sha256sum index 84a2f8c1f3..0ded94b248 100644 --- a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.sha256sum +++ b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.sha256sum @@ -1 +1 @@ -3f8824c62f0418c403004ded7d607fe0bb394b146b42651d4db831446c9f9578 +89f24a608d781f299e0fdfa475872d875a9f0a60f86b96865dbee65417ff62f6 diff --git a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.url b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.url index 2bf55d0d82..d322b40cfd 100644 --- a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.url +++ b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.url @@ -1 +1 @@ -https://bosh-gcscli-artifacts.s3.us-east-1.amazonaws.com/bosh-gcscli-0.0.375-linux-amd64 +https://bosh-gcscli-artifacts.s3.us-east-1.amazonaws.com/bosh-gcscli-0.0.376-linux-amd64 diff --git a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.version b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.version index 9c780e246c..782ee34988 100644 --- a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.version +++ b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.version @@ -1 +1 @@ -0.0.375 +0.0.376 From 435c1232d21a057e269b75a3e6b93143d31a46bf Mon Sep 17 00:00:00 2001 From: CI Bot Date: Fri, 10 Apr 2026 01:10:48 +0000 Subject: [PATCH 02/27] [ci skip] bump OS image --- .../ubuntu-jammy/ubuntu-jammy.meta4 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 index bb89e2b66b..204d19d41e 100644 --- a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 +++ b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 @@ -1,12 +1,12 @@ - c188c332b47deceecf024f89e95c8a4ac044462350cd175404a912554372e1d7abc2a6e2d33bcd4ec271ca54de99801d97aa48d833f6436fb9f743e425153c8b - 7a92ccf8cd462af7f39b3a5dbfc753eb74f79ffe1f319487fe9b0ee6196530eb - de3e160e636e5cab3c9f92e1ee06015e8e897979 - 13a85b7366602e14300c49bbb6418402 - 434668234 + 84fe42d3941439a4ea04a3009781d1bd63eafbdea768158f900cd1fe521fc1cb7a510ec6e6fe1facbb57de190f050eb4f6c59cc4873f99226dab2881a334f72d + d0a7268bc9dc76b352f3efe9d97c532f67431f2907018d65ee03cc6919af006e + 98330e944bdd2a3da7ce1c05512c39af5fc4e374 + 32f2fb0560b3c328feb15ae07525f8f1 + 434683623 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/ubuntu-jammy.tgz - 1010.0.0 + 1011.0.0 be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09 @@ -15,8 +15,8 @@ 68b329da9893e34099c7d8ad5cb9c940 1 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/usn-log.json - 1010.0.0 + 1011.0.0 metalink-repository-resource/0.0.0 - 2026-04-09T23:51:51.223366963Z + 2026-04-10T01:10:39.031300732Z From 6f0a721f5a4982dcb1cf37101e550927bd7f800e Mon Sep 17 00:00:00 2001 From: aram price Date: Fri, 10 Apr 2026 15:39:05 -0700 Subject: [PATCH 03/27] CI: add git-lfs to the Docker container --- ci/docker/os-image-stemcell-builder/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/docker/os-image-stemcell-builder/Dockerfile b/ci/docker/os-image-stemcell-builder/Dockerfile index ae8109ba4f..bce8ff4c36 100644 --- a/ci/docker/os-image-stemcell-builder/Dockerfile +++ b/ci/docker/os-image-stemcell-builder/Dockerfile @@ -37,6 +37,7 @@ RUN apt-get update \ dosfstools \ fdisk \ git \ + git-lfs \ golang \ jq \ kpartx \ From d4fd5c21148f44e500e17d8eec9e437ec4b92036 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Sat, 11 Apr 2026 10:02:04 +0000 Subject: [PATCH 04/27] Bump gems --- Gemfile.lock | 2 +- vendor/cache/multi_json-1.19.1.gem | 3 --- vendor/cache/multi_json-1.20.0.gem | 3 +++ vendor/package/multi_json-1.19.1.gem | Bin 26624 -> 0 bytes vendor/package/multi_json-1.20.0.gem | Bin 0 -> 35328 bytes 5 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 vendor/cache/multi_json-1.19.1.gem create mode 100644 vendor/cache/multi_json-1.20.0.gem delete mode 100644 vendor/package/multi_json-1.19.1.gem create mode 100644 vendor/package/multi_json-1.20.0.gem diff --git a/Gemfile.lock b/Gemfile.lock index eb97414108..04958045b2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -12,7 +12,7 @@ GEM logging (2.4.0) little-plugger (~> 1.1) multi_json (~> 1.14) - multi_json (1.19.1) + multi_json (1.20.0) rake (13.3.1) rspec (3.13.2) rspec-core (~> 3.13.0) diff --git a/vendor/cache/multi_json-1.19.1.gem b/vendor/cache/multi_json-1.19.1.gem deleted file mode 100644 index 3afa123d83..0000000000 --- a/vendor/cache/multi_json-1.19.1.gem +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7aefeff8f2c854bf739931a238e4aea64592845e0c0395c8a7d2eea7fdd631b7 -size 26624 diff --git a/vendor/cache/multi_json-1.20.0.gem b/vendor/cache/multi_json-1.20.0.gem new file mode 100644 index 0000000000..c36339f481 --- /dev/null +++ b/vendor/cache/multi_json-1.20.0.gem @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c64106fae5114bd7f388d42d7b52ebb83d7726426d47a35ad5099e35bb923e41 +size 35328 diff --git a/vendor/package/multi_json-1.19.1.gem b/vendor/package/multi_json-1.19.1.gem deleted file mode 100644 index a0b740954fcecb30f144f552a49aa5a7761a8c87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26624 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 literal 0 HcmV?d00001 From 4c9038396dacc4ce118fa2c5607d8ac5375ce074 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Sat, 11 Apr 2026 10:25:10 +0000 Subject: [PATCH 05/27] bump bosh-blobstore-dav/0.0.473 --- .../stages/blobstore_clis/assets/bosh-blobstore-dav.sha256sum | 2 +- .../stages/blobstore_clis/assets/bosh-blobstore-dav.url | 2 +- .../stages/blobstore_clis/assets/bosh-blobstore-dav.version | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-dav.sha256sum b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-dav.sha256sum index b2fcb4a5a0..c5d09c6d1e 100644 --- a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-dav.sha256sum +++ b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-dav.sha256sum @@ -1 +1 @@ -4859be4fb44f43c763985a8b9c4a264fa321525fd4950b90981e2651f7d06074 +96123fdb415195078ea2877fe246a6c32e012e950902c428ad780ea0fcfdbab7 diff --git a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-dav.url b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-dav.url index e5b306762b..7e86aeafba 100644 --- a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-dav.url +++ b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-dav.url @@ -1 +1 @@ -https://bosh-davcli-artifacts.s3.us-east-1.amazonaws.com/davcli-0.0.472-linux-amd64 +https://bosh-davcli-artifacts.s3.us-east-1.amazonaws.com/davcli-0.0.473-linux-amd64 diff --git a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-dav.version b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-dav.version index 1453a213a5..937d78f2bf 100644 --- a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-dav.version +++ b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-dav.version @@ -1 +1 @@ -0.0.472 +0.0.473 From 2382aa4793d105accd5c64fa5f981ae9fecc970b Mon Sep 17 00:00:00 2001 From: CI Bot Date: Sat, 11 Apr 2026 10:31:37 +0000 Subject: [PATCH 06/27] [ci skip] bump OS image --- .../ubuntu-jammy/ubuntu-jammy.meta4 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 index 204d19d41e..11bdd25dea 100644 --- a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 +++ b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 @@ -1,12 +1,12 @@ - 84fe42d3941439a4ea04a3009781d1bd63eafbdea768158f900cd1fe521fc1cb7a510ec6e6fe1facbb57de190f050eb4f6c59cc4873f99226dab2881a334f72d - d0a7268bc9dc76b352f3efe9d97c532f67431f2907018d65ee03cc6919af006e - 98330e944bdd2a3da7ce1c05512c39af5fc4e374 - 32f2fb0560b3c328feb15ae07525f8f1 - 434683623 + 785caf7ab143d87187b8664cb317ca86f0180e696baa5db1f9ffa3b591e064df5f47d722dad35f5be2b36c885cfdca0c95122a7647973332dfa9f18ad695e90b + 2f5dcb5a0adb1d8c2f9abcaf651989e0423aaf27f2bcf276eed9b67e8607f7af + e3e8223977b6a60cccf740539f04b5c0924d4eb9 + 1ea890209aaae22872d114077e34ee03 + 434674708 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/ubuntu-jammy.tgz - 1011.0.0 + 1012.0.0 be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09 @@ -15,8 +15,8 @@ 68b329da9893e34099c7d8ad5cb9c940 1 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/usn-log.json - 1011.0.0 + 1012.0.0 metalink-repository-resource/0.0.0 - 2026-04-10T01:10:39.031300732Z + 2026-04-11T10:31:18.624141881Z From c4685aff6abc71523c033eb7d4f658de633667f4 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Sat, 11 Apr 2026 10:44:06 +0000 Subject: [PATCH 07/27] bump bosh-blobstore-gcs/0.0.377 --- .../stages/blobstore_clis/assets/bosh-blobstore-gcs.sha256sum | 2 +- .../stages/blobstore_clis/assets/bosh-blobstore-gcs.url | 2 +- .../stages/blobstore_clis/assets/bosh-blobstore-gcs.version | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.sha256sum b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.sha256sum index 0ded94b248..314c0e8b1e 100644 --- a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.sha256sum +++ b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.sha256sum @@ -1 +1 @@ -89f24a608d781f299e0fdfa475872d875a9f0a60f86b96865dbee65417ff62f6 +6c71c3d0b579e8f701633e8f0a1c231e6fc4ef0efcdad9da73ce204e17a58633 diff --git a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.url b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.url index d322b40cfd..26f0a61042 100644 --- a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.url +++ b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.url @@ -1 +1 @@ -https://bosh-gcscli-artifacts.s3.us-east-1.amazonaws.com/bosh-gcscli-0.0.376-linux-amd64 +https://bosh-gcscli-artifacts.s3.us-east-1.amazonaws.com/bosh-gcscli-0.0.377-linux-amd64 diff --git a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.version b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.version index 782ee34988..21a5e6d46a 100644 --- a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.version +++ b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-gcs.version @@ -1 +1 @@ -0.0.376 +0.0.377 From f978dc394c0048face3bced4213c0305f7c4e92c Mon Sep 17 00:00:00 2001 From: CI Bot Date: Sat, 11 Apr 2026 10:46:57 +0000 Subject: [PATCH 08/27] [ci skip] bump OS image --- .../image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 index 11bdd25dea..a1bac0ab3b 100644 --- a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 +++ b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 @@ -1,10 +1,10 @@ - 785caf7ab143d87187b8664cb317ca86f0180e696baa5db1f9ffa3b591e064df5f47d722dad35f5be2b36c885cfdca0c95122a7647973332dfa9f18ad695e90b - 2f5dcb5a0adb1d8c2f9abcaf651989e0423aaf27f2bcf276eed9b67e8607f7af - e3e8223977b6a60cccf740539f04b5c0924d4eb9 - 1ea890209aaae22872d114077e34ee03 - 434674708 + 988a3814fc8b44b340e291b317f0e75864fa01793cedf23edd308bfff799f44f5a3867712e358068a4b63bcfe68794cde2eaca6ec81528ed4a15d3c941deb6ae + 8efcc77c82509e3d7890d6d4387f8520ced5bad724bfe2162a52cdf3e2529a2e + 38c03336b473c21f1e3a3df757f9666b8f026fcb + d5a25c8e4dcb34d0c6fd0efc4df7b3f7 + 434700558 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/ubuntu-jammy.tgz 1012.0.0 @@ -18,5 +18,5 @@ 1012.0.0 metalink-repository-resource/0.0.0 - 2026-04-11T10:31:18.624141881Z + 2026-04-11T10:46:45.830140366Z From feb7c165b3592ba451e9cff9de25ae238dea5875 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Sat, 11 Apr 2026 11:19:32 +0000 Subject: [PATCH 09/27] [ci skip] bump OS image --- .../ubuntu-jammy/ubuntu-jammy.meta4 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 index a1bac0ab3b..5405c68b69 100644 --- a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 +++ b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 @@ -1,12 +1,12 @@ - 988a3814fc8b44b340e291b317f0e75864fa01793cedf23edd308bfff799f44f5a3867712e358068a4b63bcfe68794cde2eaca6ec81528ed4a15d3c941deb6ae - 8efcc77c82509e3d7890d6d4387f8520ced5bad724bfe2162a52cdf3e2529a2e - 38c03336b473c21f1e3a3df757f9666b8f026fcb - d5a25c8e4dcb34d0c6fd0efc4df7b3f7 - 434700558 + 6a4a107a3b01c9a6e334a4a7e7862f17ee1152b533d03b547d02d2222021603d1494adf2d5ea1cb4ffc80b8b4fe348c588743830a2b22426103802877d7f7ddf + 9b7ebc7575b8c3b96a15ddfeb6ae97886c5f82b9c23c99796cb84f65ad19abbf + ef58f19d95c8d9b78f09185a18c0d207c44482df + e39148faa2325182049ab5b0852ba4a2 + 434675014 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/ubuntu-jammy.tgz - 1012.0.0 + 1013.0.0 be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09 @@ -15,8 +15,8 @@ 68b329da9893e34099c7d8ad5cb9c940 1 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/usn-log.json - 1012.0.0 + 1013.0.0 metalink-repository-resource/0.0.0 - 2026-04-11T10:46:45.830140366Z + 2026-04-11T11:19:21.794352515Z From fe2ab98ddce771778a9c651358cc9c6eb8482350 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Sat, 11 Apr 2026 12:10:33 +0000 Subject: [PATCH 10/27] bump bosh-blobstore-azure-storage/0.0.229 --- .../assets/bosh-blobstore-azure-storage.sha256sum | 2 +- .../blobstore_clis/assets/bosh-blobstore-azure-storage.url | 2 +- .../blobstore_clis/assets/bosh-blobstore-azure-storage.version | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-azure-storage.sha256sum b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-azure-storage.sha256sum index 23ee49e6ec..8ed494a611 100644 --- a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-azure-storage.sha256sum +++ b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-azure-storage.sha256sum @@ -1 +1 @@ -0e93c1697005883ffd787bed7a9d44c3e5393499adb26717a58d696709e2714d +e9b14625d620b5e373e0f91cb1a94b22fcdc0b1bafe707af61375477de64b3ac diff --git a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-azure-storage.url b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-azure-storage.url index fbea070d77..ed68584cca 100644 --- a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-azure-storage.url +++ b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-azure-storage.url @@ -1 +1 @@ -https://bosh-azure-storage-cli-artifacts.s3.us-east-1.amazonaws.com/azure-storage-cli-0.0.228-linux-amd64 +https://bosh-azure-storage-cli-artifacts.s3.us-east-1.amazonaws.com/azure-storage-cli-0.0.229-linux-amd64 diff --git a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-azure-storage.version b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-azure-storage.version index d6f7a27a89..7e8517be1b 100644 --- a/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-azure-storage.version +++ b/stemcell_builder/stages/blobstore_clis/assets/bosh-blobstore-azure-storage.version @@ -1 +1 @@ -0.0.228 +0.0.229 From 851b2e4f7d3a171db079b725a760e0161b933871 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Sat, 11 Apr 2026 12:26:25 +0000 Subject: [PATCH 11/27] [ci skip] bump OS image --- .../ubuntu-jammy/ubuntu-jammy.meta4 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 index 5405c68b69..f75ed1c6ce 100644 --- a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 +++ b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 @@ -1,12 +1,12 @@ - 6a4a107a3b01c9a6e334a4a7e7862f17ee1152b533d03b547d02d2222021603d1494adf2d5ea1cb4ffc80b8b4fe348c588743830a2b22426103802877d7f7ddf - 9b7ebc7575b8c3b96a15ddfeb6ae97886c5f82b9c23c99796cb84f65ad19abbf - ef58f19d95c8d9b78f09185a18c0d207c44482df - e39148faa2325182049ab5b0852ba4a2 - 434675014 + 756a2577c31e64b2bfae226f33cdd5c37e7e353c02d35c2cca780d5cb923c450783e35afdca884ada0be742fab80573a18328fe1dda4add7e2fe251fd726d4f4 + 7012db459cf7b07703069758d2cac95dbf7e983977c9ef633dc6a8d7d03435cb + 3239df0d7fabc8d644854749750c6d0c41dd7ca8 + 6b275d1683c8e783070e4b9ec9d67c9a + 434673003 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/ubuntu-jammy.tgz - 1013.0.0 + 1014.0.0 be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09 @@ -15,8 +15,8 @@ 68b329da9893e34099c7d8ad5cb9c940 1 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/usn-log.json - 1013.0.0 + 1014.0.0 metalink-repository-resource/0.0.0 - 2026-04-11T11:19:21.794352515Z + 2026-04-11T12:26:11.775982105Z From cb676586b4cc2c3b5a50beebd2b7cfe99fbf43f2 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Mon, 13 Apr 2026 12:11:44 +0000 Subject: [PATCH 12/27] [ci skip] bump OS image --- .../ubuntu-jammy/ubuntu-jammy.meta4 | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 index f75ed1c6ce..9fc3f3845d 100644 --- a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 +++ b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 @@ -1,22 +1,22 @@ - 756a2577c31e64b2bfae226f33cdd5c37e7e353c02d35c2cca780d5cb923c450783e35afdca884ada0be742fab80573a18328fe1dda4add7e2fe251fd726d4f4 - 7012db459cf7b07703069758d2cac95dbf7e983977c9ef633dc6a8d7d03435cb - 3239df0d7fabc8d644854749750c6d0c41dd7ca8 - 6b275d1683c8e783070e4b9ec9d67c9a - 434673003 + 4f2d6b560e3af8b7e81e53f0f30058ac06069c79405673d9441403d9defa475bb4eec2f3dbb3168c0dba117ff2b2523be02cc3394c3254419f1db0d00e7df9f3 + 72866c2816aaa4bdce2a9f84dd89d14950704123fdc4e456cca699a55f71a62d + 0d9ef7d4153359d72902ffc5adf6be50bc22600d + 76be6b454c4339bf04ac66abcd486d75 + 434690213 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/ubuntu-jammy.tgz - 1014.0.0 + 1015.0.0 - be688838ca8686e5c90689bf2ab585cef1137c999b48c70b92f67a5c34dc15697b5d11c982ed6d71be1e1e7f7b4e0733884aa97c3f7a339a8ed03577cf74be09 - 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b - adc83b19e793491b1c6ea0fd8b46cd9f32e592fc - 68b329da9893e34099c7d8ad5cb9c940 - 1 + 60dbc019e3d8cae523c015ac62dc78191029a9bf99ca771e0956acd2e94292692813784fb37e6992de1d9dc229e9c308bdb0eb8ce830bd7989cb17d823d5050a + 74b67ec813ddde93fb22ab5cf3338c1469b62fb9e1df43d0626ea441ce820f97 + 358d45a42e77f5ee6fec28e4f72e521df658ec27 + e9355ab4ce58e9a220c01e3462b6cc4b + 3887 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/usn-log.json - 1014.0.0 + 1015.0.0 metalink-repository-resource/0.0.0 - 2026-04-11T12:26:11.775982105Z + 2026-04-13T12:11:32.648155625Z From 87117e827e12c37d53a163a50a84283e62fd3d94 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Mon, 13 Apr 2026 12:24:36 +0000 Subject: [PATCH 13/27] [ci skip] bump OS image --- .../ubuntu-jammy/ubuntu-jammy.meta4 | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 index 9fc3f3845d..593c31c714 100644 --- a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 +++ b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 @@ -1,22 +1,22 @@ - 4f2d6b560e3af8b7e81e53f0f30058ac06069c79405673d9441403d9defa475bb4eec2f3dbb3168c0dba117ff2b2523be02cc3394c3254419f1db0d00e7df9f3 - 72866c2816aaa4bdce2a9f84dd89d14950704123fdc4e456cca699a55f71a62d - 0d9ef7d4153359d72902ffc5adf6be50bc22600d - 76be6b454c4339bf04ac66abcd486d75 - 434690213 + 7ec1fdfde2c4202a3f08ce75ec960df147040fae835129c40665bdd3060fa3b74a1fa46d2ef1cdede093d825695f1bf1ef09fb22b1082c6fb6f70ec969e0e9b4 + d581fc0716963abf612209770931d4110d29999cf88d0265cb260f8a29020272 + b4fcd295bd138bc45b74a239cb18c405c803dfd7 + 370623924c906470b3994eb71899a0a1 + 434674427 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/ubuntu-jammy.tgz 1015.0.0 - 60dbc019e3d8cae523c015ac62dc78191029a9bf99ca771e0956acd2e94292692813784fb37e6992de1d9dc229e9c308bdb0eb8ce830bd7989cb17d823d5050a - 74b67ec813ddde93fb22ab5cf3338c1469b62fb9e1df43d0626ea441ce820f97 - 358d45a42e77f5ee6fec28e4f72e521df658ec27 - e9355ab4ce58e9a220c01e3462b6cc4b - 3887 + 60e8caf91577b147aa7b8a394ea9dc35b35d91087e96778bda90ad92c0a2f03a087e55c13932600c29a3f47994b1b571a44d820f3220cc8a288ae5e285ab351f + d3c43d9ffb689bc49cb8e838dc2742469537f4cf318c86ff5d5ed26cea30392f + 03ba4a835abbf30240d017d6a0bc3f04bc53ab98 + 5661a6b17db9bd4ada03cce844b75025 + 6695 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/usn-log.json 1015.0.0 metalink-repository-resource/0.0.0 - 2026-04-13T12:11:32.648155625Z + 2026-04-13T12:24:23.485007262Z From 2d879e0b6267e2e8b9f940dd331c3a0773c1d328 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Mon, 13 Apr 2026 12:39:19 +0000 Subject: [PATCH 14/27] [ci skip] bump OS image --- .../ubuntu-jammy/ubuntu-jammy.meta4 | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 index 593c31c714..2a844022ba 100644 --- a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 +++ b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 @@ -1,22 +1,22 @@ - 7ec1fdfde2c4202a3f08ce75ec960df147040fae835129c40665bdd3060fa3b74a1fa46d2ef1cdede093d825695f1bf1ef09fb22b1082c6fb6f70ec969e0e9b4 - d581fc0716963abf612209770931d4110d29999cf88d0265cb260f8a29020272 - b4fcd295bd138bc45b74a239cb18c405c803dfd7 - 370623924c906470b3994eb71899a0a1 - 434674427 + 10b15d49dfd4100571add2455eb4153c80b9bd5c6e22ccd9aeed8194905a878641b6963c70563e5b938daf09867a23b9189e2305c6f92020b20a2c74d545fd87 + 7eb2cd875443ee45109079dd8599fc2b5751eeadb907c5715badd15a657fbad7 + 30564a85530fbec4981d44cd77a613ae815828ed + 70d767afa18dff2cb92dfe81c5ea791e + 434701107 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/ubuntu-jammy.tgz - 1015.0.0 + 1016.0.0 - 60e8caf91577b147aa7b8a394ea9dc35b35d91087e96778bda90ad92c0a2f03a087e55c13932600c29a3f47994b1b571a44d820f3220cc8a288ae5e285ab351f - d3c43d9ffb689bc49cb8e838dc2742469537f4cf318c86ff5d5ed26cea30392f - 03ba4a835abbf30240d017d6a0bc3f04bc53ab98 - 5661a6b17db9bd4ada03cce844b75025 - 6695 + 5d6b0dc853928f6b0edae962b9cc887932435e1c3f9e11510e75cf370c3c60d007aa0ce8be3a61439232abe774fc0f9eef7f1d2cd147d63e2e9dc0365d2f8bfc + 16dfb98c14519455b73b4f6449214bdd2b7d0be2f6081ee9697045debf1f18bc + f2823709a53482bedd0444b14c9d2b6e185d4f94 + 5063455fe73eead9a3e05530da40a237 + 32163 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/usn-log.json - 1015.0.0 + 1016.0.0 metalink-repository-resource/0.0.0 - 2026-04-13T12:24:23.485007262Z + 2026-04-13T12:39:07.118788375Z From bb375ad55e42c0edd7087b6cbb95cc2c9a8c41cb Mon Sep 17 00:00:00 2001 From: aram price Date: Fri, 10 Apr 2026 17:31:53 -0700 Subject: [PATCH 15/27] bosh-stemcell: move deps to gemspec remove unused gems - add Rakefile for gem - update testing to use `rake spec` - dev dependency gems are removed from cache - add rake task to cover --tag shellout_types - remove `logger` gem as it is not used - remove vendored gems as the only gem needed now is `rake` --- .bundle/config | 2 -- .gitattributes | 1 - .github/workflows/ruby.yml | 2 +- Gemfile | 12 ++----- Gemfile.lock | 32 ------------------- README.md | 8 ++--- Rakefile | 1 - bosh-stemcell/Gemfile | 3 ++ bosh-stemcell/Rakefile | 11 +++++++ bosh-stemcell/bosh-stemcell.gemspec | 8 +++++ ci/tasks/test-unit.sh | 13 ++++---- vendor/cache/diff-lcs-1.6.2.gem | 3 -- vendor/cache/fakefs-3.2.1.gem | 3 -- vendor/cache/little-plugger-1.1.4.gem | 3 -- vendor/cache/logging-2.4.0.gem | 3 -- vendor/cache/multi_json-1.20.0.gem | 3 -- vendor/cache/rake-13.3.1.gem | Bin 130 -> 86528 bytes vendor/cache/rspec-3.13.2.gem | 3 -- vendor/cache/rspec-core-3.13.6.gem | 3 -- vendor/cache/rspec-expectations-3.13.5.gem | 3 -- vendor/cache/rspec-instafail-1.0.0.gem | 3 -- vendor/cache/rspec-its-2.0.0.gem | 3 -- vendor/cache/rspec-mocks-3.13.8.gem | 3 -- vendor/cache/rspec-support-3.13.7.gem | 3 -- vendor/cache/timecop-0.9.10.gem | 3 -- vendor/package/diff-lcs-1.6.2.gem | Bin 59392 -> 0 bytes vendor/package/fakefs-3.2.1.gem | Bin 32768 -> 0 bytes vendor/package/little-plugger-1.1.4.gem | Bin 10240 -> 0 bytes vendor/package/logging-2.4.0.gem | Bin 89088 -> 0 bytes vendor/package/rake-13.3.1.gem | Bin 86528 -> 0 bytes vendor/package/rspec-3.13.2.gem | Bin 10752 -> 0 bytes vendor/package/rspec-core-3.13.6.gem | Bin 167936 -> 0 bytes vendor/package/rspec-expectations-3.13.5.gem | Bin 89600 -> 0 bytes vendor/package/rspec-instafail-1.0.0.gem | Bin 6144 -> 0 bytes vendor/package/rspec-its-2.0.0.gem | Bin 15360 -> 0 bytes vendor/package/rspec-mocks-3.13.8.gem | Bin 82944 -> 0 bytes vendor/package/rspec-support-3.13.7.gem | Bin 40960 -> 0 bytes vendor/package/timecop-0.9.10.gem | Bin 12800 -> 0 bytes 38 files changed, 35 insertions(+), 97 deletions(-) delete mode 100644 .bundle/config delete mode 100644 .gitattributes create mode 100644 bosh-stemcell/Gemfile create mode 100644 bosh-stemcell/Rakefile delete mode 100644 vendor/cache/diff-lcs-1.6.2.gem delete mode 100644 vendor/cache/fakefs-3.2.1.gem delete mode 100644 vendor/cache/little-plugger-1.1.4.gem delete mode 100644 vendor/cache/logging-2.4.0.gem delete mode 100644 vendor/cache/multi_json-1.20.0.gem delete mode 100644 vendor/cache/rspec-3.13.2.gem delete mode 100644 vendor/cache/rspec-core-3.13.6.gem delete mode 100644 vendor/cache/rspec-expectations-3.13.5.gem delete mode 100644 vendor/cache/rspec-instafail-1.0.0.gem delete mode 100644 vendor/cache/rspec-its-2.0.0.gem delete mode 100644 vendor/cache/rspec-mocks-3.13.8.gem delete mode 100644 vendor/cache/rspec-support-3.13.7.gem delete mode 100644 vendor/cache/timecop-0.9.10.gem delete mode 100644 vendor/package/diff-lcs-1.6.2.gem delete mode 100644 vendor/package/fakefs-3.2.1.gem delete mode 100644 vendor/package/little-plugger-1.1.4.gem delete mode 100644 vendor/package/logging-2.4.0.gem delete mode 100644 vendor/package/rake-13.3.1.gem delete mode 100644 vendor/package/rspec-3.13.2.gem delete mode 100644 vendor/package/rspec-core-3.13.6.gem delete mode 100644 vendor/package/rspec-expectations-3.13.5.gem delete mode 100644 vendor/package/rspec-instafail-1.0.0.gem delete mode 100644 vendor/package/rspec-its-2.0.0.gem delete mode 100644 vendor/package/rspec-mocks-3.13.8.gem delete mode 100644 vendor/package/rspec-support-3.13.7.gem delete mode 100644 vendor/package/timecop-0.9.10.gem diff --git a/.bundle/config b/.bundle/config deleted file mode 100644 index 612e6ae3f3..0000000000 --- a/.bundle/config +++ /dev/null @@ -1,2 +0,0 @@ ---- -BUNDLE_CACHE_ALL: "false" diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 70208f0116..0000000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -/vendor/cache/*.gem filter=lfs diff=lfs merge=lfs -text diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index ad9ec9b22e..93003ceb2d 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -11,5 +11,5 @@ jobs: - name: test-bosh-stemcell run: | bundle install - bundle exec rspec + bundle exec rake working-directory: bosh-stemcell/ diff --git a/Gemfile b/Gemfile index b078f1f3c3..5158c13c83 100644 --- a/Gemfile +++ b/Gemfile @@ -1,12 +1,4 @@ source 'https://rubygems.org' -group :development, :test do - gem 'bosh-stemcell', path: 'bosh-stemcell' - gem 'fakefs' - gem 'logging' - gem 'rake' - gem 'rspec' - gem 'rspec-instafail' - gem 'rspec-its' - gem 'timecop' -end +gem 'rake' +gem 'bosh-stemcell', path: 'bosh-stemcell' diff --git a/Gemfile.lock b/Gemfile.lock index 04958045b2..96830d4736 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -6,46 +6,14 @@ PATH GEM remote: https://rubygems.org/ specs: - diff-lcs (1.6.2) - fakefs (3.2.1) - little-plugger (1.1.4) - logging (2.4.0) - little-plugger (~> 1.1) - multi_json (~> 1.14) - multi_json (1.20.0) rake (13.3.1) - rspec (3.13.2) - rspec-core (~> 3.13.0) - rspec-expectations (~> 3.13.0) - rspec-mocks (~> 3.13.0) - rspec-core (3.13.6) - rspec-support (~> 3.13.0) - rspec-expectations (3.13.5) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.13.0) - rspec-instafail (1.0.0) - rspec - rspec-its (2.0.0) - rspec-core (>= 3.13.0) - rspec-expectations (>= 3.13.0) - rspec-mocks (3.13.8) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.13.0) - rspec-support (3.13.7) - timecop (0.9.10) PLATFORMS ruby DEPENDENCIES bosh-stemcell! - fakefs - logging rake - rspec - rspec-instafail - rspec-its - timecop BUNDLED WITH 2.5.23 diff --git a/README.md b/README.md index ae5715273a..84a7444ed9 100644 --- a/README.md +++ b/README.md @@ -174,13 +174,13 @@ locally, run: ```shell bundle install --local cd /opt/bosh/bosh-stemcell -OS_IMAGE=/opt/bosh/tmp/ubuntu_base_image.tgz bundle exec rspec spec/ --tag shellout_types +OS_IMAGE=/opt/bosh/tmp/ubuntu_base_image.tgz bundle exec rake spec:shellout_types ``` If on macOS, run: ```shell -OSX=true OS_IMAGE=/opt/bosh/tmp/ubuntu_base_image.tgz bundle exec rspec spec/ --tag shellout_types +OSX=true OS_IMAGE=/opt/bosh/tmp/ubuntu_base_image.tgz bundle exec rake spec:shellout_types ``` ### How to run tests for BOSH Linux Stemcell Builder @@ -188,9 +188,9 @@ OSX=true OS_IMAGE=/opt/bosh/tmp/ubuntu_base_image.tgz bundle exec rspec spec/ -- The BOSH Linux Stemcell Builder code itself can be tested with the following command's: ```shell -bundle install --local cd /opt/bosh/bosh-stemcell -bundle exec rspec spec/ +bundle install +bundle exec rake ``` ## Troubleshooting diff --git a/Rakefile b/Rakefile index f668764110..ac59a00fa2 100644 --- a/Rakefile +++ b/Rakefile @@ -1,5 +1,4 @@ require 'json' -require 'logging' namespace :stemcell do desc 'Build a base OS image for use in stemcells' diff --git a/bosh-stemcell/Gemfile b/bosh-stemcell/Gemfile new file mode 100644 index 0000000000..cd8aa9e04c --- /dev/null +++ b/bosh-stemcell/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' + +gemspec \ No newline at end of file diff --git a/bosh-stemcell/Rakefile b/bosh-stemcell/Rakefile new file mode 100644 index 0000000000..77da2a203f --- /dev/null +++ b/bosh-stemcell/Rakefile @@ -0,0 +1,11 @@ +require "rspec/core/rake_task" + +task default: [:spec] + +RSpec::Core::RakeTask.new(:spec) + +namespace :spec do + RSpec::Core::RakeTask.new(:shellout_types) do |t| + t.rspec_opts = "--tag shellout_types" + end +end diff --git a/bosh-stemcell/bosh-stemcell.gemspec b/bosh-stemcell/bosh-stemcell.gemspec index b6e437a96b..c0de257059 100644 --- a/bosh-stemcell/bosh-stemcell.gemspec +++ b/bosh-stemcell/bosh-stemcell.gemspec @@ -19,4 +19,12 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = %w[lib] + + spec.add_development_dependency 'fakefs' + spec.add_development_dependency 'rake' + spec.add_development_dependency 'rspec' + spec.add_development_dependency 'rspec-instafail' + spec.add_development_dependency 'rspec-its' + spec.add_development_dependency 'standard' + spec.add_development_dependency 'timecop' end diff --git a/ci/tasks/test-unit.sh b/ci/tasks/test-unit.sh index 4c29d633a3..edcc624bff 100755 --- a/ci/tasks/test-unit.sh +++ b/ci/tasks/test-unit.sh @@ -10,14 +10,13 @@ if [[ -n "${DEBUG:-}" ]]; then export BOSH_LOG_PATH="${BOSH_LOG_PATH:-${REPO_PARENT}/bosh-debug.log}" fi +os_image="$(readlink -f "${REPO_PARENT}"/os-image-tarball/*.tgz)" + # we need sudo for our chroot operations in the shellout_types tests apt install sudo -pushd "${REPO_PARENT}/bosh-linux-stemcell-builder" - bundle install --local - - pushd bosh-stemcell - bundle exec rspec spec/ - OS_IMAGE="$(readlink -f ../../os-image-tarball/*.tgz)" bundle exec rspec spec/ --tag shellout_types - popd +pushd "${REPO_ROOT}/bosh-stemcell" + bundle install + bundle exec rake spec + OS_IMAGE="${os_image}" bundle exec rake spec:shellout_types popd diff --git a/vendor/cache/diff-lcs-1.6.2.gem b/vendor/cache/diff-lcs-1.6.2.gem deleted file mode 100644 index 3d7b961cd1..0000000000 --- a/vendor/cache/diff-lcs-1.6.2.gem +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 -size 59392 diff --git a/vendor/cache/fakefs-3.2.1.gem b/vendor/cache/fakefs-3.2.1.gem deleted file mode 100644 index 68de5eafee..0000000000 --- a/vendor/cache/fakefs-3.2.1.gem +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ea4cdd9dc891136cf232a7f586defaeb664e7947b0ddde213bf455dc42a4fdea -size 32768 diff --git a/vendor/cache/little-plugger-1.1.4.gem b/vendor/cache/little-plugger-1.1.4.gem deleted file mode 100644 index 3894431553..0000000000 --- a/vendor/cache/little-plugger-1.1.4.gem +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d5f347c00d9d648040ef7c17d6eb09d3d0719adf19ca30d1a3b6fb26d0a631bb -size 10240 diff --git a/vendor/cache/logging-2.4.0.gem b/vendor/cache/logging-2.4.0.gem deleted file mode 100644 index fc1007cdfb..0000000000 --- a/vendor/cache/logging-2.4.0.gem +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ba8893a3c211b836f4131bb93b3eb3137a0c3b1fcd0ec3d570e324d8bdc00ccb -size 89088 diff --git a/vendor/cache/multi_json-1.20.0.gem b/vendor/cache/multi_json-1.20.0.gem deleted file mode 100644 index c36339f481..0000000000 --- a/vendor/cache/multi_json-1.20.0.gem +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c64106fae5114bd7f388d42d7b52ebb83d7726426d47a35ad5099e35bb923e41 -size 35328 diff --git a/vendor/cache/rake-13.3.1.gem b/vendor/cache/rake-13.3.1.gem index a6111dfa3ed88267bf7c87070f3134a7fe0fb1bb..75b4aab47cee66411d79c7f8a36c103dc3f57ac7 100644 GIT binary patch literal 86528 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

_+kG)0`f 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

I*-fW7U~MOFJFAV=OmQJuYG7S~r8U3WF9)Bdg< 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 m&Jue(9y3chLUNiu?tee$;C}%qtGlWI diff --git a/vendor/package/logging-2.4.0.gem b/vendor/package/logging-2.4.0.gem deleted file mode 100644 index b773a51718a26f143b4c363d4ae08111ee6aaea6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89088 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�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

_+kG)0`f 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

I*-fW7U~MOFJFAV=OmQJuYG7S~r8U3WF9)Bdg< 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 diff --git a/vendor/package/rspec-core-3.13.6.gem b/vendor/package/rspec-core-3.13.6.gem deleted file mode 100644 index 98f9a48ce6d1b1fd431f8bedcfa2523ea334a9d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167936 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

&;l`z>!7E|X9z1!;PcuK-hsOJ+Sf(SV*zoZ$ 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¥p_>;3bGvV3bou|^wDuS8fw>; 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 E1={BUjsO4v diff --git a/vendor/package/rspec-instafail-1.0.0.gem b/vendor/package/rspec-instafail-1.0.0.gem deleted file mode 100644 index 7546ec02a6cdb78ca4cc752ee78855d915a166c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6144 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 M0{=qbzb69!11Rd*9{>OV diff --git a/vendor/package/rspec-mocks-3.13.8.gem b/vendor/package/rspec-mocks-3.13.8.gem deleted file mode 100644 index bcfbd7ab42b2a449fd84c07d2529a246c802adb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82944 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%0DFzfl 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

a~pXNO$%!S{y=Rb0fH0hoy+crSv~ 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 K<$?c65Bv?dYTujy diff --git a/vendor/package/timecop-0.9.10.gem b/vendor/package/timecop-0.9.10.gem deleted file mode 100644 index 77235b269fcee1e90671855afebcee3ae6c1a06a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12800 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 XbI|{et@wM6zY+Kwfxi*>w<7Q#GX|V0 From 0806fab646e7fd8cefad439d6f65c0474b9cab2e Mon Sep 17 00:00:00 2001 From: aram price Date: Fri, 10 Apr 2026 18:56:54 -0700 Subject: [PATCH 16/27] Remove OSX spec options as they do not work - remove conditionality for macOS (nee OSX) - add `skip` for tests which are not runnable on macOS - update README --- README.md | 6 ------ bosh-stemcell/spec/bosh/stemcell/helpers_sh_spec.rb | 3 +++ bosh-stemcell/spec/shellout_types/spec_helper.rb | 13 ++++++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 84a7444ed9..2961ee5713 100644 --- a/README.md +++ b/README.md @@ -177,12 +177,6 @@ cd /opt/bosh/bosh-stemcell OS_IMAGE=/opt/bosh/tmp/ubuntu_base_image.tgz bundle exec rake spec:shellout_types ``` -If on macOS, run: - -```shell -OSX=true OS_IMAGE=/opt/bosh/tmp/ubuntu_base_image.tgz bundle exec rake spec:shellout_types -``` - ### How to run tests for BOSH Linux Stemcell Builder The BOSH Linux Stemcell Builder code itself can be tested with the following command's: diff --git a/bosh-stemcell/spec/bosh/stemcell/helpers_sh_spec.rb b/bosh-stemcell/spec/bosh/stemcell/helpers_sh_spec.rb index 2747362df2..65d39bbee6 100644 --- a/bosh-stemcell/spec/bosh/stemcell/helpers_sh_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/helpers_sh_spec.rb @@ -1,6 +1,9 @@ require 'spec_helper' context 'helpers.sh' do + before do + skip "This spec requires linux" unless RUBY_PLATFORM.downcase.include?("linux") + end context 'add_on_exit runs cleanup commands in LIFO order' do describe ShelloutTypes::Command.new( diff --git a/bosh-stemcell/spec/shellout_types/spec_helper.rb b/bosh-stemcell/spec/shellout_types/spec_helper.rb index fe47dc7170..d055da10a8 100644 --- a/bosh-stemcell/spec/shellout_types/spec_helper.rb +++ b/bosh-stemcell/spec/shellout_types/spec_helper.rb @@ -3,9 +3,16 @@ require 'shellout_types/chroot' require 'tmpdir' +def supported_testing_os? + RUBY_PLATFORM.downcase.include?("linux") +end RSpec.configure do |config| if config.inclusion_filter[:shellout_types] + config.before(:suite) do + raise "Running 'shellout_types' specs on '#{RUBY_PLATFORM}' is not supported" unless supported_testing_os? + end + if ENV['OS_IMAGE'] @os_image_dir = Dir.mktmpdir('os-image-rspec') ShelloutTypes::Chroot.chroot_dir = @os_image_dir @@ -15,11 +22,7 @@ Bosh::Core::Shell.new.run("sudo tar zxf #{ENV['OS_IMAGE']} -C #{config.os_image_dir}") Bosh::Core::Shell.new.run("sudo chgrp -Rh $(id -g) #{config.os_image_dir}") Bosh::Core::Shell.new.run("sudo chmod 775 #{config.os_image_dir}") - if ENV['OSX'] - Bosh::Core::Shell.new.run("sudo chroot #{config.os_image_dir} /bin/bash -c \"useradd --uid $(id -u) -G nogroup shellout\"") - else - Bosh::Core::Shell.new.run("sudo chroot #{config.os_image_dir} /bin/bash -c 'useradd -G nogroup shellout'") - end + Bosh::Core::Shell.new.run("sudo chroot #{config.os_image_dir} /bin/bash -c 'useradd -G nogroup shellout'") end config.after(:suite) do From 5bc9f638797eafbbdee6d7aa935bcbf07f9bc939 Mon Sep 17 00:00:00 2001 From: aram price Date: Fri, 10 Apr 2026 19:31:13 -0700 Subject: [PATCH 17/27] Remove unused rubycop config No rubocop gem was present in Gemfile(s) --- .rubocop.yml | 55 --------------------------------- bosh-stemcell/.rubocop.yml | 63 -------------------------------------- 2 files changed, 118 deletions(-) delete mode 100644 .rubocop.yml delete mode 100644 bosh-stemcell/.rubocop.yml diff --git a/.rubocop.yml b/.rubocop.yml deleted file mode 100644 index d92c42104c..0000000000 --- a/.rubocop.yml +++ /dev/null @@ -1,55 +0,0 @@ -AllCops: - TargetRubyVersion: 3.0.1 - Include: - - Rakefile - Exclude: - - tmp/**/* - -Style/FrozenStringLiteralComment: - Enabled: false - -Style/ClassAndModuleChildren: - Enabled: false - -Style/Documentation: - Enabled: false - -Metrics/LineLength: - Max: 130 - -Metrics/ModuleLength: - Enabled: false - -Metrics/ClassLength: - Max: 200 - -Metrics/MethodLength: - Max: 30 - -Metrics/BlockLength: - Max: 25 - ExcludedMethods: [describe, context, let, it] - -Style/TrailingCommaInArrayLiteral: - Enabled: true - EnforcedStyleForMultiline: comma - -Style/TrailingCommaInHashLiteral: - Enabled: true - EnforcedStyleForMultiline: comma - -Style/TrailingCommaInArguments: - Enabled: true - EnforcedStyleForMultiline: comma - -Layout/MultilineMethodCallIndentation: - EnforcedStyle: aligned - -Metrics/AbcSize: - Enabled: false - -Style/BracesAroundHashParameters: - EnforcedStyle: context_dependent - -Layout/IndentHash: - EnforcedStyle: consistent diff --git a/bosh-stemcell/.rubocop.yml b/bosh-stemcell/.rubocop.yml deleted file mode 100644 index 253a6a720e..0000000000 --- a/bosh-stemcell/.rubocop.yml +++ /dev/null @@ -1,63 +0,0 @@ -AllCops: - TargetRubyVersion: 3.2.0 - -# Layout -Layout/IndentHash: - EnforcedStyle: consistent - -Layout/MultilineMethodCallIndentation: - EnforcedStyle: aligned - -# Metrics -Metrics/AbcSize: - Enabled: false - -Metrics/BlockLength: - Max: 25 - ExcludedMethods: [describe, context, let, it] - -Metrics/ClassLength: - Max: 200 - -Metrics/LineLength: - Max: 130 - -Metrics/MethodLength: - Max: 30 - -Metrics/ModuleLength: - Enabled: false - -Metrics/ParameterLists: - CountKeywordArgs: false - -# Style -Style/BracesAroundHashParameters: - EnforcedStyle: context_dependent - -Style/ClassAndModuleChildren: - Enabled: false - -Style/Documentation: - Enabled: false - -Style/FrozenStringLiteralComment: - Enabled: false - -Style/NumericLiterals: - Enabled: false - -Style/TrailingCommaInArrayLiteral: - Enabled: true - EnforcedStyleForMultiline: comma - -Style/TrailingCommaInHashLiteral: - Enabled: true - EnforcedStyleForMultiline: comma - -Style/TrailingCommaInArguments: - Enabled: true - EnforcedStyleForMultiline: comma - -Style/MultilineBlockChain: - Enabled: false From add91a8e2b5e5f90d5c2def1e7d464892c128ae1 Mon Sep 17 00:00:00 2001 From: aram price Date: Fri, 10 Apr 2026 19:41:46 -0700 Subject: [PATCH 18/27] Introduce standardrb; fix linter issues --- bosh-stemcell/Gemfile | 4 +- bosh-stemcell/Rakefile | 3 +- bosh-stemcell/bosh-stemcell.gemspec | 40 +- bosh-stemcell/lib/bosh/core/shell.rb | 10 +- bosh-stemcell/lib/bosh/stemcell/arch.rb | 4 +- bosh-stemcell/lib/bosh/stemcell/archive.rb | 24 +- .../lib/bosh/stemcell/archive_filename.rb | 8 +- bosh-stemcell/lib/bosh/stemcell/aws/region.rb | 8 +- .../lib/bosh/stemcell/build_environment.rb | 136 ++- .../lib/bosh/stemcell/builder_options.rb | 48 +- bosh-stemcell/lib/bosh/stemcell/definition.rb | 12 +- bosh-stemcell/lib/bosh/stemcell/disk_image.rb | 29 +- .../lib/bosh/stemcell/infrastructure.rb | 156 ++-- .../lib/bosh/stemcell/operating_system.rb | 9 +- .../lib/bosh/stemcell/os_image_builder.rb | 2 +- .../lib/bosh/stemcell/stage_collection.rb | 95 ++- .../lib/bosh/stemcell/stage_runner.rb | 23 +- .../lib/bosh/stemcell/stemcell_builder.rb | 6 +- .../lib/bosh/stemcell/stemcell_packager.rb | 66 +- bosh-stemcell/lib/bosh/stemcell/version.rb | 2 +- bosh-stemcell/lib/shellout_types/chroot.rb | 16 +- bosh-stemcell/lib/shellout_types/file.rb | 74 +- bosh-stemcell/lib/shellout_types/group.rb | 2 +- bosh-stemcell/lib/shellout_types/package.rb | 6 +- bosh-stemcell/lib/shellout_types/service.rb | 24 +- bosh-stemcell/lib/shellout_types/user.rb | 2 +- .../bosh/stemcell/archive_filename_spec.rb | 41 +- .../bosh/stemcell/archive_handler_spec.rb | 12 +- .../spec/bosh/stemcell/archive_spec.rb | 76 +- .../bosh/stemcell/build_environment_spec.rb | 235 +++--- .../bosh/stemcell/builder_options_spec.rb | 148 ++-- .../spec/bosh/stemcell/definition_spec.rb | 98 +-- .../spec/bosh/stemcell/disk_image_spec.rb | 169 ++-- .../spec/bosh/stemcell/helpers_sh_spec.rb | 85 +- .../spec/bosh/stemcell/infrastructure_spec.rb | 200 ++--- .../bosh/stemcell/operating_system_spec.rb | 54 +- .../bosh/stemcell/os_image_builder_spec.rb | 38 +- .../bosh/stemcell/stage_collection_spec.rb | 172 ++-- .../spec/bosh/stemcell/stage_runner_spec.rb | 172 ++-- .../bosh/stemcell/stemcell_builder_spec.rb | 44 +- .../bosh/stemcell/stemcell_packager_spec.rb | 203 ++--- bosh-stemcell/spec/bosh/stemcell_spec.rb | 4 +- bosh-stemcell/spec/os_image/ubuntu_spec.rb | 673 ++++++++------- .../spec/shellout_types/chroot_spec.rb | 38 +- .../spec/shellout_types/command_spec.rb | 20 +- .../spec/shellout_types/file_spec.rb | 377 +++++---- .../spec/shellout_types/group_spec.rb | 18 +- .../spec/shellout_types/package_spec.rb | 18 +- .../spec/shellout_types/service_spec.rb | 19 +- .../spec/shellout_types/spec_helper.rb | 18 +- .../spec/shellout_types/user_spec.rb | 52 +- bosh-stemcell/spec/spec_helper.rb | 20 +- bosh-stemcell/spec/stemcells/alicloud_spec.rb | 28 +- bosh-stemcell/spec/stemcells/aws_spec.rb | 34 +- bosh-stemcell/spec/stemcells/azure_spec.rb | 108 +-- bosh-stemcell/spec/stemcells/cis_spec.rb | 108 +-- .../spec/stemcells/cloudstack_spec.rb | 19 +- bosh-stemcell/spec/stemcells/fips_spec.rb | 88 +- bosh-stemcell/spec/stemcells/go_agent_spec.rb | 111 ++- bosh-stemcell/spec/stemcells/google_spec.rb | 106 ++- .../spec/stemcells/openstack_spec.rb | 28 +- .../spec/stemcells/softlayer_spec.rb | 22 +- bosh-stemcell/spec/stemcells/stig_spec.rb | 22 +- bosh-stemcell/spec/stemcells/ubuntu_spec.rb | 473 ++++++----- bosh-stemcell/spec/stemcells/vcloud_spec.rb | 22 +- bosh-stemcell/spec/stemcells/vsphere_spec.rb | 32 +- bosh-stemcell/spec/stemcells/warden_spec.rb | 48 +- .../support/be_valid_json_file_matcher.rb | 16 +- bosh-stemcell/spec/support/cis.rb | 6 +- bosh-stemcell/spec/support/os_image.rb | 24 +- .../os_image_chrony_shared_examples.rb | 8 +- ...ge_linux_kernel_modules_shared_examples.rb | 90 +- .../os_image_linux_kernel_shared_examples.rb | 91 +-- .../spec/support/os_image_shared_examples.rb | 772 +++++++++--------- .../os_image_systemd_shared_examples.rb | 22 +- .../os_image_ubuntu_shared_examples.rb | 6 +- .../os_image_upstart_shared_examples.rb | 16 +- .../spec/support/shellout_type_assertions.rb | 18 +- bosh-stemcell/spec/support/spec_assets.rb | 4 +- bosh-stemcell/spec/support/spec_ordering.rb | 1 - bosh-stemcell/spec/support/stemcell_image.rb | 22 +- .../spec/support/stemcell_shared_examples.rb | 135 ++- .../spec/support/stemcell_tarball.rb | 4 +- bosh-stemcell/spec/support/stig.rb | 6 +- .../spec/support/udf_module_disabled.rb | 9 +- 85 files changed, 3134 insertions(+), 3178 deletions(-) diff --git a/bosh-stemcell/Gemfile b/bosh-stemcell/Gemfile index cd8aa9e04c..b4e2a20bb6 100644 --- a/bosh-stemcell/Gemfile +++ b/bosh-stemcell/Gemfile @@ -1,3 +1,3 @@ -source 'https://rubygems.org' +source "https://rubygems.org" -gemspec \ No newline at end of file +gemspec diff --git a/bosh-stemcell/Rakefile b/bosh-stemcell/Rakefile index 77da2a203f..e812f462ea 100644 --- a/bosh-stemcell/Rakefile +++ b/bosh-stemcell/Rakefile @@ -1,6 +1,7 @@ require "rspec/core/rake_task" +require "standard/rake" -task default: [:spec] +task default: [:standard, :spec] RSpec::Core::RakeTask.new(:spec) diff --git a/bosh-stemcell/bosh-stemcell.gemspec b/bosh-stemcell/bosh-stemcell.gemspec index c0de257059..56f9a22f9f 100644 --- a/bosh-stemcell/bosh-stemcell.gemspec +++ b/bosh-stemcell/bosh-stemcell.gemspec @@ -1,30 +1,28 @@ -# coding: utf-8 -require File.expand_path('../lib/bosh/stemcell/version', __FILE__) +require File.expand_path("../lib/bosh/stemcell/version", __FILE__) version = Bosh::Stemcell::VERSION Gem::Specification.new do |spec| - spec.name = 'bosh-stemcell' - spec.version = version - spec.authors = 'Pivotal' - spec.email = 'support@cloudfoundry.com' - spec.description = 'Bosh::Stemcell provides tools to manage stemcells' - spec.summary = 'Bosh::Stemcell provides tools to manage stemcells' - spec.homepage = 'https://github.com/cloudfoundry/bosh' - spec.license = 'Apache 2.0' + spec.name = "bosh-stemcell" + spec.version = version + spec.authors = "Pivotal" + spec.email = "support@cloudfoundry.com" + spec.description = "Bosh::Stemcell provides tools to manage stemcells" + spec.summary = "Bosh::Stemcell provides tools to manage stemcells" + spec.homepage = "https://github.com/cloudfoundry/bosh" + spec.license = "Apache 2.0" - spec.required_ruby_version = Gem::Requirement.new('>= 1.9.3') + spec.required_ruby_version = Gem::Requirement.new(">= 1.9.3") - spec.files = Dir['README.md', 'lib/**/*'].select{ |f| File.file? f } - spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } - spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) + spec.files = Dir["README.md", "lib/**/*"].select { |f| File.file? f } + spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.require_paths = %w[lib] - spec.add_development_dependency 'fakefs' - spec.add_development_dependency 'rake' - spec.add_development_dependency 'rspec' - spec.add_development_dependency 'rspec-instafail' - spec.add_development_dependency 'rspec-its' - spec.add_development_dependency 'standard' - spec.add_development_dependency 'timecop' + spec.add_development_dependency "fakefs" + spec.add_development_dependency "rake" + spec.add_development_dependency "rspec" + spec.add_development_dependency "rspec-instafail" + spec.add_development_dependency "rspec-its" + spec.add_development_dependency "standard" + spec.add_development_dependency "timecop" end diff --git a/bosh-stemcell/lib/bosh/core/shell.rb b/bosh-stemcell/lib/bosh/core/shell.rb index a28ef23f2c..59a668c112 100644 --- a/bosh-stemcell/lib/bosh/core/shell.rb +++ b/bosh-stemcell/lib/bosh/core/shell.rb @@ -21,12 +21,12 @@ def run_command(command, options) stdout.puts command if options[:output_command] lines = [] - if options[:env] + popen_args = if options[:env] # Wrap in a shell because existing api to Shell#run takes a string # which makes it really hard to pass it to popen with custom environment. - popen_args = [options[:env], ENV['SHELL'] || 'bash', '-c', command] + [options[:env], ENV["SHELL"] || "bash", "-c", command] else - popen_args = command + command end io = IO.popen(popen_args) @@ -50,7 +50,7 @@ def report(cmd, command_output, options) redacted_cmd = cmd if options[:redact] - redacted_cmd = redacted_cmd.gsub(/#{options[:redact].join('|')}/, "[REDACTED]") + redacted_cmd = redacted_cmd.gsub(/#{options[:redact].join("|")}/, "[REDACTED]") end err_msg = "Failed: '#{redacted_cmd}' from #{pwd}, with exit status #{$?.to_i}\n\n #{command_output}" @@ -64,7 +64,7 @@ def command_exited_successfully? def pwd Dir.pwd rescue Errno::ENOENT - 'a deleted directory' + "a deleted directory" end end end diff --git a/bosh-stemcell/lib/bosh/stemcell/arch.rb b/bosh-stemcell/lib/bosh/stemcell/arch.rb index 15a5017ec5..4e91c23b21 100644 --- a/bosh-stemcell/lib/bosh/stemcell/arch.rb +++ b/bosh-stemcell/lib/bosh/stemcell/arch.rb @@ -1,11 +1,11 @@ module Bosh::Stemcell class Arch def self.arch - RbConfig::CONFIG['host_cpu'] + RbConfig::CONFIG["host_cpu"] end def self.x86_64? - arch == 'x86_64' + arch == "x86_64" end end end diff --git a/bosh-stemcell/lib/bosh/stemcell/archive.rb b/bosh-stemcell/lib/bosh/stemcell/archive.rb index 4253da89ce..2e5f790511 100644 --- a/bosh-stemcell/lib/bosh/stemcell/archive.rb +++ b/bosh-stemcell/lib/bosh/stemcell/archive.rb @@ -1,12 +1,12 @@ -require 'yaml' -require 'rake/file_utils_ext' -require 'bosh/stemcell/aws/region' +require "yaml" +require "rake/file_utils_ext" +require "bosh/stemcell/aws/region" module Bosh::Stemcell class Archive attr_reader :path - def initialize(path = '') + def initialize(path = "") @path = path validate_stemcell end @@ -16,25 +16,25 @@ def manifest end def name - manifest.fetch('name') + manifest.fetch("name") end def infrastructure - cloud_properties.fetch('infrastructure') + cloud_properties.fetch("infrastructure") end def version - cloud_properties.fetch('version') + cloud_properties.fetch("version") end def sha1 - sha1 = manifest.fetch('sha1') - raise 'sha1 must not be nil' unless sha1 + sha1 = manifest.fetch("sha1") + raise "sha1 must not be nil" unless sha1 sha1.to_s end def light? - infrastructure == 'aws' && has_ami? + infrastructure == "aws" && has_ami? end def extract(tar_options = {}, &block) @@ -51,11 +51,11 @@ def extract(tar_options = {}, &block) private def has_ami? - cloud_properties.has_key? 'ami' + cloud_properties.has_key? "ami" end def cloud_properties - manifest.fetch('cloud_properties') + manifest.fetch("cloud_properties") end def validate_stemcell diff --git a/bosh-stemcell/lib/bosh/stemcell/archive_filename.rb b/bosh-stemcell/lib/bosh/stemcell/archive_filename.rb index 7006dc5f8d..b15f134ff6 100644 --- a/bosh-stemcell/lib/bosh/stemcell/archive_filename.rb +++ b/bosh-stemcell/lib/bosh/stemcell/archive_filename.rb @@ -1,5 +1,5 @@ -require 'bosh/stemcell/arch' -require 'forwardable' +require "bosh/stemcell/arch" +require "forwardable" module Bosh::Stemcell class ArchiveFilename @@ -19,7 +19,7 @@ def to_s definition.stemcell_name(disk_format) ] - "#{stemcell_filename_parts.join('-')}.tgz" + "#{stemcell_filename_parts.join("-")}.tgz" end private @@ -28,7 +28,7 @@ def to_s :base_name, :version, :definition, - :disk_format, + :disk_format ) end end diff --git a/bosh-stemcell/lib/bosh/stemcell/aws/region.rb b/bosh-stemcell/lib/bosh/stemcell/aws/region.rb index 2301f4a028..c0306824d1 100644 --- a/bosh-stemcell/lib/bosh/stemcell/aws/region.rb +++ b/bosh-stemcell/lib/bosh/stemcell/aws/region.rb @@ -1,15 +1,15 @@ -require 'net/http' +require "net/http" module Bosh module Stemcell module Aws class Region - DEFAULT = 'us-east-1' - REGIONS = %w{ + DEFAULT = "us-east-1" + REGIONS = %w[ us-east-1 us-west-1 us-west-2 eu-west-1 eu-central-1 ap-southeast-1 ap-southeast-2 ap-northeast-1 ap-northeast-2 sa-east-1 - } + ] end end end diff --git a/bosh-stemcell/lib/bosh/stemcell/build_environment.rb b/bosh-stemcell/lib/bosh/stemcell/build_environment.rb index d2f16ce8a8..5bb6375e35 100644 --- a/bosh-stemcell/lib/bosh/stemcell/build_environment.rb +++ b/bosh-stemcell/lib/bosh/stemcell/build_environment.rb @@ -1,15 +1,15 @@ -require 'bosh/core/shell' -require 'bosh/stemcell/builder_options' -require 'bosh/stemcell/stemcell' -require 'forwardable' +require "bosh/core/shell" +require "bosh/stemcell/builder_options" +require "bosh/stemcell/stemcell" +require "forwardable" module Bosh::Stemcell class BuildEnvironment extend Forwardable - BUILD_TIME_MARKER_FILE = File.join(File.expand_path('../../../../..', __FILE__), 'build_time.txt') - STEMCELL_BUILDER_SOURCE_DIR = File.join(File.expand_path('../../../../..', __FILE__), 'stemcell_builder') - STEMCELL_SPECS_DIR = File.expand_path('../../..', File.dirname(__FILE__)) + BUILD_TIME_MARKER_FILE = File.join(File.expand_path("../../../../..", __FILE__), "build_time.txt") + STEMCELL_BUILDER_SOURCE_DIR = File.join(File.expand_path("../../../../..", __FILE__), "stemcell_builder") + STEMCELL_SPECS_DIR = File.expand_path("../../..", File.dirname(__FILE__)) def initialize(env, definition, version, os_image_tarball_path) @environment = env @@ -20,7 +20,7 @@ def initialize(env, definition, version, os_image_tarball_path) env: env, definition: definition, version: version, - os_image_tarball: os_image_tarball_path, + os_image_tarball: os_image_tarball_path ) @shell = Bosh::Core::Shell.new end @@ -28,7 +28,7 @@ def initialize(env, definition, version, os_image_tarball_path) attr_reader :version def prepare_build - if ENV['resume_from'].nil? + if ENV["resume_from"].nil? sanitize prepare_build_path end @@ -43,8 +43,8 @@ def os_image_rspec_command "cd #{STEMCELL_SPECS_DIR};", "OS_IMAGE=#{os_image_tarball_path}", "bundle exec rspec -fd", - "spec/os_image/#{operating_system_spec_name}_spec.rb", - ].join(' ') + "spec/os_image/#{operating_system_spec_name}_spec.rb" + ].join(" ") end def stemcell_rspec_command @@ -59,36 +59,36 @@ def stemcell_rspec_command "bundle exec rspec -fd#{exclude_exclusions}", "spec/os_image/#{operating_system_spec_name}_spec.rb", "spec/stemcells/#{operating_system_spec_name}_spec.rb", - 'spec/stemcells/go_agent_spec.rb', + "spec/stemcells/go_agent_spec.rb", "spec/stemcells/#{infrastructure.name}_spec.rb", - 'spec/stemcells/stig_spec.rb', - 'spec/stemcells/cis_spec.rb' + "spec/stemcells/stig_spec.rb", + "spec/stemcells/cis_spec.rb" ] cmd << "spec/stemcells/#{operating_system.variant}_spec.rb" if operating_system.variant? - cmd.join(' ') + cmd.join(" ") end def build_path - File.join(build_root, 'build') + File.join(build_root, "build") end def stemcell_files definition.disk_formats.map do |disk_format| - stemcell_filename = Stemcell.new(@definition, 'bosh-stemcell', @version, disk_format) + stemcell_filename = Stemcell.new(@definition, "bosh-stemcell", @version, disk_format) File.join(work_path, stemcell_filename.name) end end def chroot_dir - File.join(work_path, 'chroot') + File.join(work_path, "chroot") end def settings_path - File.join(build_path, 'etc', 'settings.bash') + File.join(build_path, "etc", "settings.bash") end def work_path - File.join(work_root, 'work') + File.join(work_root, "work") end def stemcell_tarball_path @@ -109,7 +109,7 @@ def command_env :@definition, :infrastructure, :operating_system, - :agent, + :agent ) attr_reader( @@ -117,31 +117,31 @@ def command_env :environment, :definition, :stemcell_builder_options, - :os_image_tarball_path, + :os_image_tarball_path ) def sanitize - FileUtils.rm(Dir.glob('*.tgz')) + FileUtils.rm(Dir.glob("*.tgz")) - shell.run("sudo umount #{File.join(work_path, 'mnt/tmp/grub', settings['stemcell_image_name'])} 2> /dev/null", - { ignore_failures: true }) + shell.run("sudo umount #{File.join(work_path, "mnt/tmp/grub", settings["stemcell_image_name"])} 2> /dev/null", + {ignore_failures: true}) - shell.run("sudo umount #{image_mount_point} 2> /dev/null", { ignore_failures: true }) + shell.run("sudo umount #{image_mount_point} 2> /dev/null", {ignore_failures: true}) - shell.run("sudo rm -rf #{base_directory}", { ignore_failures: true }) + shell.run("sudo rm -rf #{base_directory}", {ignore_failures: true}) end def build_time_settings if File.exist?(BUILD_TIME_MARKER_FILE) - return { 'BUILD_TIME' => File.read(BUILD_TIME_MARKER_FILE).chomp } - elsif environment['BUILD_TIME'] - return { 'BUILD_TIME' => environment['BUILD_TIME'] } + return {"BUILD_TIME" => File.read(BUILD_TIME_MARKER_FILE).chomp} + elsif environment["BUILD_TIME"] + return {"BUILD_TIME" => environment["BUILD_TIME"]} end {} end def operating_system_spec_name - "#{operating_system.name}" + operating_system.name.to_s end def prepare_build_path @@ -150,7 +150,7 @@ def prepare_build_path end def prepare_stemcell_path - FileUtils.mkdir_p(File.join(work_path, 'stemcell')) + FileUtils.mkdir_p(File.join(work_path, "stemcell")) end def copy_stemcell_builder_to_build_path @@ -162,8 +162,8 @@ def prepare_work_root end def persist_settings_for_bash - File.open(settings_path, 'a') do |f| - f.printf("\n# %s\n\n", '=' * 20) + File.open(settings_path, "a") do |f| + f.printf("\n# %s\n\n", "=" * 20) settings.each do |k, v| f.print "#{k}=#{v}\n" end @@ -172,42 +172,40 @@ def persist_settings_for_bash def exclude_exclusions [ - case infrastructure.name - when 'alicloud' - ' --tag ~exclude_on_alicloud' - when 'vsphere' - ' --tag ~exclude_on_vsphere' - when 'vcloud' - ' --tag ~exclude_on_vcloud' - when 'warden' - ' --tag ~exclude_on_warden' - when 'aws' - ' --tag ~exclude_on_aws' - when 'openstack' - ' --tag ~exclude_on_openstack' - when 'cloudstack' - ' --tag ~exclude_on_cloudstack' - when 'azure' - ' --tag ~exclude_on_azure' - when 'softlayer' - ' --tag ~exclude_on_softlayer' - when 'google' - ' --tag ~exclude_on_google' - else - nil - end, - if operating_system.variant? - " --tag ~exclude_on_#{operating_system.variant}" - end, - ].compact.join(' ').rstrip + case infrastructure.name + when "alicloud" + " --tag ~exclude_on_alicloud" + when "vsphere" + " --tag ~exclude_on_vsphere" + when "vcloud" + " --tag ~exclude_on_vcloud" + when "warden" + " --tag ~exclude_on_warden" + when "aws" + " --tag ~exclude_on_aws" + when "openstack" + " --tag ~exclude_on_openstack" + when "cloudstack" + " --tag ~exclude_on_cloudstack" + when "azure" + " --tag ~exclude_on_azure" + when "softlayer" + " --tag ~exclude_on_softlayer" + when "google" + " --tag ~exclude_on_google" + end, + if operating_system.variant? + " --tag ~exclude_on_#{operating_system.variant}" + end + ].compact.join(" ").rstrip end def image_file_path - File.join(work_path, settings['stemcell_image_name']) + File.join(work_path, settings["stemcell_image_name"]) end def image_mount_point - File.join(work_path, 'mnt') + File.join(work_path, "mnt") end def settings @@ -215,25 +213,25 @@ def settings end def base_directory - File.join('/mnt', 'stemcells', infrastructure.name, infrastructure.hypervisor, operating_system.name) + File.join("/mnt", "stemcells", infrastructure.name, infrastructure.hypervisor, operating_system.name) end def build_root - File.join(base_directory, 'build') + File.join(base_directory, "build") end def work_root - File.join(base_directory, 'work') + File.join(base_directory, "work") end def proxy_settings_from_environment - keep = %w(HTTP_PROXY HTTPS_PROXY NO_PROXY) + keep = %w[HTTP_PROXY HTTPS_PROXY NO_PROXY] environment.select { |k| keep.include?(k.upcase) } end def hash_as_bash_env(env) - env.map { |k, v| "#{k}='#{v}'" }.join(' ') + env.map { |k, v| "#{k}='#{v}'" }.join(" ") end end end diff --git a/bosh-stemcell/lib/bosh/stemcell/builder_options.rb b/bosh-stemcell/lib/bosh/stemcell/builder_options.rb index fd53628ed2..d2712195b8 100644 --- a/bosh-stemcell/lib/bosh/stemcell/builder_options.rb +++ b/bosh-stemcell/lib/bosh/stemcell/builder_options.rb @@ -1,6 +1,6 @@ -require 'rbconfig' -require 'forwardable' -require 'bosh/stemcell/archive_filename' +require "rbconfig" +require "forwardable" +require "bosh/stemcell/archive_filename" module Bosh::Stemcell class BuilderOptions @@ -17,22 +17,22 @@ def initialize(dependencies = {}) def default { - 'stemcell_image_name' => stemcell_image_name, - 'stemcell_version' => stemcell_version, - 'stemcell_hypervisor' => infrastructure.hypervisor, - 'stemcell_infrastructure' => infrastructure.name, - 'stemcell_operating_system' => operating_system.name, - 'stemcell_operating_system_version' => operating_system.version, - 'stemcell_operating_system_variant' => operating_system.variant, - 'ruby_bin' => ruby_bin, - 'image_create_disk_size' => image_create_disk_size, - 'os_image_tgz' => os_image_tgz_path, + "stemcell_image_name" => stemcell_image_name, + "stemcell_version" => stemcell_version, + "stemcell_hypervisor" => infrastructure.hypervisor, + "stemcell_infrastructure" => infrastructure.name, + "stemcell_operating_system" => operating_system.name, + "stemcell_operating_system_version" => operating_system.version, + "stemcell_operating_system_variant" => operating_system.variant, + "ruby_bin" => ruby_bin, + "image_create_disk_size" => image_create_disk_size, + "os_image_tgz" => os_image_tgz_path }.merge(environment_variables).merge(ovf_options) end attr_reader( :stemcell_version, - :image_create_disk_size, + :image_create_disk_size ) private @@ -41,18 +41,18 @@ def default :@definition, :infrastructure, :operating_system, - :agent, + :agent ) attr_reader( :environment, :definition, - :os_image_tgz_path, + :os_image_tgz_path ) def ovf_options - if infrastructure.name == 'vsphere' || infrastructure.name == 'vcloud' - { 'image_ovftool_path' => environment['OVFTOOL'] } + if infrastructure.name == "vsphere" || infrastructure.name == "vcloud" + {"image_ovftool_path" => environment["OVFTOOL"]} else {} end @@ -60,10 +60,10 @@ def ovf_options def environment_variables { - 'UBUNTU_ISO' => environment['UBUNTU_ISO'], - 'UBUNTU_MIRROR' => environment['UBUNTU_MIRROR'], - 'UBUNTU_ADVANTAGE_TOKEN' => environment['UBUNTU_ADVANTAGE_TOKEN'], - 'UBUNTU_FIPS_USE_IAAS_KERNEL' => environment['UBUNTU_FIPS_USE_IAAS_KERNEL'], + "UBUNTU_ISO" => environment["UBUNTU_ISO"], + "UBUNTU_MIRROR" => environment["UBUNTU_MIRROR"], + "UBUNTU_ADVANTAGE_TOKEN" => environment["UBUNTU_ADVANTAGE_TOKEN"], + "UBUNTU_FIPS_USE_IAAS_KERNEL" => environment["UBUNTU_FIPS_USE_IAAS_KERNEL"] } end @@ -72,11 +72,11 @@ def stemcell_image_name end def ruby_bin - environment['RUBY_BIN'] || File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name']) + environment["RUBY_BIN"] || File.join(RbConfig::CONFIG["bindir"], RbConfig::CONFIG["ruby_install_name"]) end def source_root - File.expand_path('../../../../..', __FILE__) + File.expand_path("../../../../..", __FILE__) end end end diff --git a/bosh-stemcell/lib/bosh/stemcell/definition.rb b/bosh-stemcell/lib/bosh/stemcell/definition.rb index 277fcd7607..ac37978ecd 100644 --- a/bosh-stemcell/lib/bosh/stemcell/definition.rb +++ b/bosh-stemcell/lib/bosh/stemcell/definition.rb @@ -1,5 +1,5 @@ -require 'bosh/stemcell/infrastructure' -require 'bosh/stemcell/operating_system' +require "bosh/stemcell/infrastructure" +require "bosh/stemcell/operating_system" module Bosh::Stemcell class Definition @@ -9,7 +9,7 @@ def self.for(infrastructure_name, hypervisor_name, operating_system_name, operat new( Bosh::Stemcell::Infrastructure.for(infrastructure_name), hypervisor_name, - Bosh::Stemcell::OperatingSystem.for(operating_system_name, operating_system_version), + Bosh::Stemcell::OperatingSystem.for(operating_system_name, operating_system_version) ) end @@ -23,14 +23,14 @@ def stemcell_name(disk_format) stemcell_name_parts = [ infrastructure.name, hypervisor_name, - operating_system.name, + operating_system.name ] stemcell_name_parts << operating_system.version if operating_system.version stemcell_name_parts << operating_system.variant if operating_system.variant - stemcell_name_parts << 'go_agent' + stemcell_name_parts << "go_agent" stemcell_name_parts << disk_format unless disk_format == infrastructure.default_disk_format - stemcell_name_parts.join('-') + stemcell_name_parts.join("-") end def disk_formats diff --git a/bosh-stemcell/lib/bosh/stemcell/disk_image.rb b/bosh-stemcell/lib/bosh/stemcell/disk_image.rb index b2ce1c3ac0..4beb10a2f7 100644 --- a/bosh-stemcell/lib/bosh/stemcell/disk_image.rb +++ b/bosh-stemcell/lib/bosh/stemcell/disk_image.rb @@ -1,16 +1,15 @@ -require 'bosh/core/shell' -require 'bosh/stemcell/arch' +require "bosh/core/shell" +require "bosh/stemcell/arch" module Bosh::Stemcell class DiskImage - attr_reader :image_mount_point def initialize(options) - @image_file_path = options.fetch(:image_file_path) + @image_file_path = options.fetch(:image_file_path) @image_mount_point = options.fetch(:image_mount_point, Dir.mktmpdir) - @verbose = options.fetch(:verbose, false) - @shell = Bosh::Core::Shell.new + @verbose = options.fetch(:verbose, false) + @shell = Bosh::Core::Shell.new end def mount @@ -43,24 +42,24 @@ def mount_image end def efi_image - return map_image.lines.length > 1 + map_image.lines.length > 1 end def stemcell_loopback_device_name - split_output = map_image.split(' ') - device_name = split_output[2] + split_output = map_image.split(" ") + device_name = split_output[2] - File.join('/dev/mapper', device_name) + File.join("/dev/mapper", device_name) end def stemcell_loopback_boot_name - efi_partition = map_image.lines.last.split(' ')[2] - File.join('/dev/mapper', efi_partition) + efi_partition = map_image.lines.last.split(" ")[2] + File.join("/dev/mapper", efi_partition) end def stemcell_loopback_efi_name - efi_partition = map_image.lines.first.split(' ')[2] - File.join('/dev/mapper', efi_partition) + efi_partition = map_image.lines.first.split(" ")[2] + File.join("/dev/mapper", efi_partition) end def map_image @@ -75,4 +74,4 @@ def unmap_image shell.run("sudo losetup -v -d #{device}", output_command: verbose) end end -end \ No newline at end of file +end diff --git a/bosh-stemcell/lib/bosh/stemcell/infrastructure.rb b/bosh-stemcell/lib/bosh/stemcell/infrastructure.rb index 5a25231b3b..8ea52a9ceb 100644 --- a/bosh-stemcell/lib/bosh/stemcell/infrastructure.rb +++ b/bosh-stemcell/lib/bosh/stemcell/infrastructure.rb @@ -2,30 +2,30 @@ module Bosh::Stemcell module Infrastructure def self.for(name) case name - when 'openstack' - OpenStack.new - when 'aws' - Aws.new - when 'alicloud' - Alicloud.new - when 'google' - Google.new - when 'vsphere' - Vsphere.new - when 'warden' - Warden.new - when 'vcloud' - Vcloud.new - when 'azure' - Azure.new - when 'softlayer' - Softlayer.new - when 'cloudstack' - CloudStack.new - when 'null' - NullInfrastructure.new - else - raise ArgumentError.new("invalid infrastructure: #{name}") + when "openstack" + OpenStack.new + when "aws" + Aws.new + when "alicloud" + Alicloud.new + when "google" + Google.new + when "vsphere" + Vsphere.new + when "warden" + Warden.new + when "vcloud" + Vcloud.new + when "azure" + Azure.new + when "softlayer" + Softlayer.new + when "cloudstack" + CloudStack.new + when "null" + NullInfrastructure.new + else + raise ArgumentError.new("invalid infrastructure: #{name}") end end @@ -58,8 +58,8 @@ def ==(other) class NullInfrastructure < Base def initialize super( - name: 'null', - hypervisor: 'null', + name: "null", + hypervisor: "null", default_disk_size: -1, disk_formats: [], stemcell_formats: [] @@ -70,158 +70,158 @@ def initialize class OpenStack < Base def initialize super( - name: 'openstack', - hypervisor: 'kvm', + name: "openstack", + hypervisor: "kvm", default_disk_size: 5120, - disk_formats: ['qcow2', 'raw'], - stemcell_formats: ['openstack-qcow2', 'openstack-raw'] + disk_formats: ["qcow2", "raw"], + stemcell_formats: ["openstack-qcow2", "openstack-raw"] ) end def additional_cloud_properties - {'auto_disk_config' => true} + {"auto_disk_config" => true} end end class CloudStack < Base def initialize super( - name: 'cloudstack', - hypervisor: 'xen', + name: "cloudstack", + hypervisor: "xen", default_disk_size: 5120, - disk_formats: ['vhdx'], - stemcell_formats: ['cloudstack-vhdx'] + disk_formats: ["vhdx"], + stemcell_formats: ["cloudstack-vhdx"] ) end def additional_cloud_properties - {'auto_disk_config' => true} + {"auto_disk_config" => true} end end class Vsphere < Base def initialize - super(name: 'vsphere', - hypervisor: 'esxi', - default_disk_size: 5120, - disk_formats: ['ovf'], - stemcell_formats: ['vsphere-ova', 'vsphere-ovf'] + super(name: "vsphere", + hypervisor: "esxi", + default_disk_size: 5120, + disk_formats: ["ovf"], + stemcell_formats: ["vsphere-ova", "vsphere-ovf"] ) end def additional_cloud_properties - {'root_device_name' => '/dev/sda1'} + {"root_device_name" => "/dev/sda1"} end end class Vcloud < Base def initialize super( - name: 'vcloud', - hypervisor: 'esxi', + name: "vcloud", + hypervisor: "esxi", default_disk_size: 5120, - disk_formats: ['ovf'], - stemcell_formats: ['vcloud-ova', 'vcloud-ovf'] + disk_formats: ["ovf"], + stemcell_formats: ["vcloud-ova", "vcloud-ovf"] ) end def additional_cloud_properties - {'root_device_name' => '/dev/sda1'} + {"root_device_name" => "/dev/sda1"} end end class Aws < Base def initialize super( - name: 'aws', - hypervisor: 'xen', + name: "aws", + hypervisor: "xen", default_disk_size: 5120, - disk_formats: ['raw'], - stemcell_formats: ['aws-raw'] + disk_formats: ["raw"], + stemcell_formats: ["aws-raw"] ) end def additional_cloud_properties - {'root_device_name' => '/dev/sda1'} + {"root_device_name" => "/dev/sda1"} end end class Alicloud < Base def initialize super( - name: 'alicloud', - hypervisor: 'kvm', + name: "alicloud", + hypervisor: "kvm", default_disk_size: 5120, - disk_formats: ['raw'], - stemcell_formats: ['alicloud-raw'] + disk_formats: ["raw"], + stemcell_formats: ["alicloud-raw"] ) end def additional_cloud_properties - {'root_device_name' => '/dev/vda1'} + {"root_device_name" => "/dev/vda1"} end end class Google < Base def initialize - super(name: 'google', - hypervisor: 'kvm', - default_disk_size: 5120, - disk_formats: ['rawdisk'], - stemcell_formats: ['google-rawdisk'] + super(name: "google", + hypervisor: "kvm", + default_disk_size: 5120, + disk_formats: ["rawdisk"], + stemcell_formats: ["google-rawdisk"] ) end def additional_cloud_properties - {'root_device_name' => '/dev/sda1'} + {"root_device_name" => "/dev/sda1"} end end class Warden < Base def initialize super( - name: 'warden', - hypervisor: 'boshlite', + name: "warden", + hypervisor: "boshlite", default_disk_size: 5120, - disk_formats: ['files'], - stemcell_formats: ['warden-tar'] + disk_formats: ["files"], + stemcell_formats: ["warden-tar"] ) end def additional_cloud_properties - {'root_device_name' => '/dev/sda1'} + {"root_device_name" => "/dev/sda1"} end end class Azure < Base def initialize super( - name: 'azure', - hypervisor: 'hyperv', + name: "azure", + hypervisor: "hyperv", default_disk_size: 5120, - disk_formats: ['vhd'], - stemcell_formats: ['azure-vhd'] + disk_formats: ["vhd"], + stemcell_formats: ["azure-vhd"] ) end def additional_cloud_properties - {'root_device_name' => '/dev/sda1'} + {"root_device_name" => "/dev/sda1"} end end class Softlayer < Base def initialize super( - name: 'softlayer', - hypervisor: 'esxi', + name: "softlayer", + hypervisor: "esxi", default_disk_size: 25600, - disk_formats: ['ovf'], - stemcell_formats: ['softlayer-ovf'] + disk_formats: ["ovf"], + stemcell_formats: ["softlayer-ovf"] ) end def additional_cloud_properties - {'root_device_name' => '/dev/sda1'} + {"root_device_name" => "/dev/sda1"} end end end diff --git a/bosh-stemcell/lib/bosh/stemcell/operating_system.rb b/bosh-stemcell/lib/bosh/stemcell/operating_system.rb index 3cb9678d6c..7c9e202ea3 100644 --- a/bosh-stemcell/lib/bosh/stemcell/operating_system.rb +++ b/bosh-stemcell/lib/bosh/stemcell/operating_system.rb @@ -1,10 +1,9 @@ module Bosh::Stemcell module OperatingSystem - def self.for(operating_system_name, operating_system_version = nil) case operating_system_name - when 'ubuntu' then Ubuntu.new(operating_system_version) - else raise ArgumentError.new("invalid operating system: #{operating_system_name}") + when "ubuntu" then Ubuntu.new(operating_system_version) + else raise ArgumentError.new("invalid operating system: #{operating_system_name}") end end @@ -25,8 +24,8 @@ def ==(other) class Ubuntu < Base def initialize(version) - (version, variant) = version.split('-') if version - super(name: 'ubuntu', version: version, variant: variant) + (version, variant) = version.split("-") if version + super(name: "ubuntu", version: version, variant: variant) end end end diff --git a/bosh-stemcell/lib/bosh/stemcell/os_image_builder.rb b/bosh-stemcell/lib/bosh/stemcell/os_image_builder.rb index 991f074f5b..b0d4bd546f 100644 --- a/bosh-stemcell/lib/bosh/stemcell/os_image_builder.rb +++ b/bosh-stemcell/lib/bosh/stemcell/os_image_builder.rb @@ -9,7 +9,7 @@ def initialize(dependencies = {}) def build(os_image_path) environment.prepare_build - runner.configure_and_apply(collection.operating_system_stages, ENV['resume_from']) + runner.configure_and_apply(collection.operating_system_stages, ENV["resume_from"]) archive_handler.compress(environment.chroot_dir, os_image_path) end diff --git a/bosh-stemcell/lib/bosh/stemcell/stage_collection.rb b/bosh-stemcell/lib/bosh/stemcell/stage_collection.rb index f15ef17ecb..0330eda35d 100644 --- a/bosh-stemcell/lib/bosh/stemcell/stage_collection.rb +++ b/bosh-stemcell/lib/bosh/stemcell/stage_collection.rb @@ -1,7 +1,7 @@ -require 'bosh/stemcell/definition' -require 'forwardable' +require "bosh/stemcell/definition" +require "forwardable" -# rubocop:disable ClassLength +# rubocop:disable Metrics/ClassLength module Bosh::Stemcell class StageCollection extend Forwardable @@ -31,7 +31,7 @@ def kernel_stages def extract_operating_system_stages [ - :untar_base_os_image, + :untar_base_os_image ] end @@ -47,46 +47,46 @@ def agent_stages def build_stemcell_image_stages stages = case infrastructure - when Infrastructure::Aws then - aws_stages - when Infrastructure::Alicloud then - alicloud_stages - when Infrastructure::CloudStack then - cloudstack_stages - when Infrastructure::Google then - google_stages - when Infrastructure::OpenStack then - openstack_stages - when Infrastructure::Vsphere then - vsphere_vcloud_stages - when Infrastructure::Vcloud then - vsphere_vcloud_stages - when Infrastructure::Warden then - warden_stages - when Infrastructure::Azure then - azure_stages - when Infrastructure::Softlayer then - softlayer_stages - end + when Infrastructure::Aws + aws_stages + when Infrastructure::Alicloud + alicloud_stages + when Infrastructure::CloudStack + cloudstack_stages + when Infrastructure::Google + google_stages + when Infrastructure::OpenStack + openstack_stages + when Infrastructure::Vsphere + vsphere_vcloud_stages + when Infrastructure::Vcloud + vsphere_vcloud_stages + when Infrastructure::Warden + warden_stages + when Infrastructure::Azure + azure_stages + when Infrastructure::Softlayer + softlayer_stages + end stages.concat(finish_stemcell_stages) end def package_stemcell_stages(disk_format) case disk_format - when 'raw' then + when "raw" raw_package_stages - when 'rawdisk' then + when "rawdisk" rawdisk_package_stages - when 'qcow2' then + when "qcow2" qcow2_package_stages - when 'ovf' then + when "ovf" ovf_package_stages - when 'vhd' then + when "vhd" vhd_package_stages - when 'vhdx' then + when "vhdx" vhdx_package_stages - when 'files' then + when "files" files_package_stages end end @@ -131,7 +131,6 @@ def cloudstack_stages ] end - def vsphere_vcloud_stages [ :system_network, @@ -149,7 +148,7 @@ def vsphere_vcloud_stages # filesystem after it won't apply. :image_create_efi, :image_install_grub_efi, - :sbom_create, + :sbom_create ] end @@ -169,7 +168,7 @@ def aws_stages # filesystem after it won't apply. :image_create, :image_install_grub, - :sbom_create, + :sbom_create ] end @@ -205,7 +204,7 @@ def google_stages # filesystem after it won't apply. :image_create, :image_install_grub, - :sbom_create, + :sbom_create ] end @@ -222,7 +221,7 @@ def warden_stages # filesystem after it won't apply. :image_create, :image_install_grub, - :sbom_create, + :sbom_create ] end @@ -243,7 +242,7 @@ def azure_stages # filesystem after it won't apply. :image_create, :image_install_grub, - :sbom_create, + :sbom_create ] end @@ -265,13 +264,13 @@ def softlayer_stages # this line. Image create will make the image so any changes to the # filesystem after it won't apply. :image_create_softlayer_two_partitions, - :image_install_grub_softlayer_two_partitions, + :image_install_grub_softlayer_two_partitions ] end def finish_stemcell_stages [ - :bosh_package_list, + :bosh_package_list ] end @@ -297,7 +296,7 @@ def ubuntu_os_stages :escape_ctrl_alt_del, :bosh_audit_ubuntu, :bosh_log_audit_start, - :clean_machine_id, + :clean_machine_id ].flatten end @@ -316,19 +315,19 @@ def bosh_steps def raw_package_stages [ - :prepare_raw_image_stemcell, + :prepare_raw_image_stemcell ] end def rawdisk_package_stages [ - :prepare_rawdisk_image_stemcell, + :prepare_rawdisk_image_stemcell ] end def qcow2_package_stages [ - :prepare_qcow2_image_stemcell, + :prepare_qcow2_image_stemcell ] end @@ -342,21 +341,21 @@ def ovf_package_stages def vhd_package_stages [ - :prepare_vhd_image_stemcell, + :prepare_vhd_image_stemcell ] end def vhdx_package_stages [ - :prepare_vhdx_image_stemcell, + :prepare_vhdx_image_stemcell ] end def files_package_stages [ - :prepare_files_image_stemcell, + :prepare_files_image_stemcell ] end end end -# rubocop:enable ClassLength +# rubocop:enable Metrics/ClassLength diff --git a/bosh-stemcell/lib/bosh/stemcell/stage_runner.rb b/bosh-stemcell/lib/bosh/stemcell/stage_runner.rb index 056d2cb102..40b0eda6b5 100644 --- a/bosh-stemcell/lib/bosh/stemcell/stage_runner.rb +++ b/bosh-stemcell/lib/bosh/stemcell/stage_runner.rb @@ -1,4 +1,4 @@ -require 'bosh/core/shell' +require "bosh/core/shell" module Bosh::Stemcell class BuildReport @@ -9,7 +9,7 @@ def initialize def measure_configure(name, &block) start = Time.now.utc - puts "== Started configuring '#{name}' at #{start.strftime('%a %b %e %H:%M:%S %Z %Y')} ==" + puts "== Started configuring '#{name}' at #{start.strftime("%a %b %e %H:%M:%S %Z %Y")} ==" yield @stats << {type: "configure", name: name, duration: Time.now.utc - start} end @@ -17,7 +17,7 @@ def measure_configure(name, &block) def measure_apply(name, &block) start = Time.now.utc - puts "== Started applying '#{name}' at #{start.strftime('%a %b %e %H:%M:%S %Z %Y')} ==" + puts "== Started applying '#{name}' at #{start.strftime("%a %b %e %H:%M:%S %Z %Y")} ==" yield @stats << {type: "apply", name: name, duration: Time.now.utc - start} end @@ -31,8 +31,7 @@ def print_report end class StageRunner - - REQUIRED_UID=1000 + REQUIRED_UID = 1000 def initialize(options) @build_path = options.fetch(:build_path) @@ -52,7 +51,7 @@ def configure_and_apply(stages, resume_from_stage = nil) def configure(stages) stages.each do |stage| - stage_config_script = File.join(build_path, 'stages', stage.to_s, 'config.sh') + stage_config_script = File.join(build_path, "stages", stage.to_s, "config.sh") @report.measure_configure(stage) do if File.exist?(stage_config_script) && File.executable?(stage_config_script) @@ -67,14 +66,12 @@ def apply(stages) FileUtils.mkdir_p(work_path) @report.measure_apply(stage) do - begin - stage_apply_script = File.join(build_path, 'stages', stage.to_s, 'apply.sh') + stage_apply_script = File.join(build_path, "stages", stage.to_s, "apply.sh") - run_sudo_with_command_env("#{stage_apply_script} #{work_path}") - rescue => _ - puts "=== You can resume_from the '#{stage}' stage by using resume_from=#{stage} ===" - raise - end + run_sudo_with_command_env("#{stage_apply_script} #{work_path}") + rescue => _ + puts "=== You can resume_from the '#{stage}' stage by using resume_from=#{stage} ===" + raise end end end diff --git a/bosh-stemcell/lib/bosh/stemcell/stemcell_builder.rb b/bosh-stemcell/lib/bosh/stemcell/stemcell_builder.rb index ac815e1e7c..aecd63ae06 100644 --- a/bosh-stemcell/lib/bosh/stemcell/stemcell_builder.rb +++ b/bosh-stemcell/lib/bosh/stemcell/stemcell_builder.rb @@ -1,5 +1,5 @@ -require 'fileutils' -require 'bosh/stemcell/stage_collection' +require "fileutils" +require "bosh/stemcell/stage_collection" module Bosh::Stemcell class StemcellBuilder @@ -16,7 +16,7 @@ def build collection.kernel_stages + collection.agent_stages + collection.build_stemcell_image_stages - runner.configure_and_apply(stemcell_stages, ENV['resume_from']) + runner.configure_and_apply(stemcell_stages, ENV["resume_from"]) end private diff --git a/bosh-stemcell/lib/bosh/stemcell/stemcell_packager.rb b/bosh-stemcell/lib/bosh/stemcell/stemcell_packager.rb index a9d99e9fcb..2e339caf77 100644 --- a/bosh-stemcell/lib/bosh/stemcell/stemcell_packager.rb +++ b/bosh-stemcell/lib/bosh/stemcell/stemcell_packager.rb @@ -1,5 +1,5 @@ -require 'psych' -require 'open3' +require "psych" +require "open3" module Bosh module Stemcell @@ -7,7 +7,7 @@ class StemcellPackager def initialize(options = {}) @definition = options.fetch(:definition) @version = options.fetch(:version) - @stemcell_build_path = File.join(options.fetch(:work_path), 'stemcell') + @stemcell_build_path = File.join(options.fetch(:work_path), "stemcell") @tarball_path = options.fetch(:tarball_path) @disk_size = options.fetch(:disk_size) @runner = options.fetch(:runner) @@ -28,10 +28,8 @@ def package(disk_format) attr_reader :definition, :version, :stemcell_build_path, :tarball_path, :disk_size, :runner, :collection def write_manifest(disk_format) - manifest_filename = File.join(stemcell_build_path, 'stemcell.MF') - File.open(manifest_filename, 'w') do |f| - f.write(Psych.dump(manifest(disk_format))) - end + manifest_filename = File.join(stemcell_build_path, "stemcell.MF") + File.write(manifest_filename, Psych.dump(manifest(disk_format))) end def manifest(disk_format) @@ -39,51 +37,51 @@ def manifest(disk_format) stemcell_name = "bosh-#{definition.stemcell_name(disk_format)}" { - 'name' => stemcell_name, - 'version' => version.to_s, - 'bosh_protocol' => 1, - 'api_version' => 3, - 'sha1' => image_checksum, - 'operating_system' => "#{definition.operating_system.name}-#{definition.operating_system.version}", - 'stemcell_formats' => infrastructure.stemcell_formats, - 'cloud_properties' => manifest_cloud_properties(disk_format, infrastructure, stemcell_name) + "name" => stemcell_name, + "version" => version.to_s, + "bosh_protocol" => 1, + "api_version" => 3, + "sha1" => image_checksum, + "operating_system" => "#{definition.operating_system.name}-#{definition.operating_system.version}", + "stemcell_formats" => infrastructure.stemcell_formats, + "cloud_properties" => manifest_cloud_properties(disk_format, infrastructure, stemcell_name) } end def manifest_cloud_properties(disk_format, infrastructure, stemcell_name) - architecture = 'x86_64' + architecture = "x86_64" { - 'name' => stemcell_name, - 'version' => version.to_s, - 'infrastructure' => infrastructure.name, - 'hypervisor' => infrastructure.hypervisor, - 'disk' => disk_size, - 'disk_format' => disk_format, - 'container_format' => 'bare', - 'os_type' => 'linux', - 'os_distro' => definition.operating_system.name, - 'architecture' => architecture, + "name" => stemcell_name, + "version" => version.to_s, + "infrastructure" => infrastructure.name, + "hypervisor" => infrastructure.hypervisor, + "disk" => disk_size, + "disk_format" => disk_format, + "container_format" => "bare", + "os_type" => "linux", + "os_distro" => definition.operating_system.name, + "architecture" => architecture }.merge(infrastructure.additional_cloud_properties) end def create_tarball(disk_format) - stemcell_name = ArchiveFilename.new(version, definition, 'bosh-stemcell', disk_format).to_s + stemcell_name = ArchiveFilename.new(version, definition, "bosh-stemcell", disk_format).to_s tarball_name = File.join(tarball_path, stemcell_name) - expected = ['stemcell.MF', 'packages.txt', 'dev_tools_file_list.txt', 'image', 'sbom.spdx.json', 'sbom.cdx.json'] + expected = ["stemcell.MF", "packages.txt", "dev_tools_file_list.txt", "image", "sbom.spdx.json", "sbom.cdx.json"] Dir.chdir(stemcell_build_path) do - stdout, stderr, status = Open3.capture3('ls') + stdout, stderr, status = Open3.capture3("ls") raise stderr unless status.success? - actual = stdout.split(' ') + actual = stdout.split(" ") missing = expected.reject { |f| actual.include?(f) } - raise "Files are missing from stemcell directory: #{missing.join(' ')}" unless missing.empty? + raise "Files are missing from stemcell directory: #{missing.join(" ")}" unless missing.empty? extra = actual.reject { |f| expected.include?(f) } - raise "Extra files found in stemcell directory: #{extra.join(' ')}" unless extra.empty? + raise "Extra files found in stemcell directory: #{extra.join(" ")}" unless extra.empty? - _, stderr, status = Open3.capture3("tar zcf #{tarball_name} #{expected.join(' ')}") + _, stderr, status = Open3.capture3("tar zcf #{tarball_name} #{expected.join(" ")}") raise stderr unless status.success? end @@ -95,7 +93,7 @@ def image_checksum end def stemcell_image_path - File.join(stemcell_build_path, 'image') + File.join(stemcell_build_path, "image") end end end diff --git a/bosh-stemcell/lib/bosh/stemcell/version.rb b/bosh-stemcell/lib/bosh/stemcell/version.rb index 35b9980ebf..a2fcd0ad4f 100644 --- a/bosh-stemcell/lib/bosh/stemcell/version.rb +++ b/bosh-stemcell/lib/bosh/stemcell/version.rb @@ -1,5 +1,5 @@ module Bosh module Stemcell - VERSION = '0.0.0' + VERSION = "0.0.0" end end diff --git a/bosh-stemcell/lib/shellout_types/chroot.rb b/bosh-stemcell/lib/shellout_types/chroot.rb index 1691eee302..fd9c928c10 100644 --- a/bosh-stemcell/lib/shellout_types/chroot.rb +++ b/bosh-stemcell/lib/shellout_types/chroot.rb @@ -1,9 +1,9 @@ -require 'open3' -require 'shellwords' +require "open3" +require "shellwords" module ShelloutTypes class Chroot - @@chroot_dir = '' + @@chroot_dir = "" def self.chroot_dir=(dir) @@chroot_dir = dir @@ -12,7 +12,7 @@ def self.chroot_dir=(dir) def self.unmount_proc dir = @@chroot_dir return if dir.empty? - system('sudo', 'umount', "#{dir}/proc", [:out, :err] => '/dev/null') + system("sudo", "umount", "#{dir}/proc", [:out, :err] => "/dev/null") end def initialize(dir = nil) @@ -20,9 +20,9 @@ def initialize(dir = nil) end def run(*cmd) - cmd.unshift('mknod -m 666 /dev/urandom c 1 9 2>/dev/null;') - cmd.unshift('mknod -m 666 /dev/random c 1 8 2>/dev/null;') - inner = cmd.join(' ') + cmd.unshift("mknod -m 666 /dev/urandom c 1 9 2>/dev/null;") + cmd.unshift("mknod -m 666 /dev/random c 1 8 2>/dev/null;") + inner = cmd.join(" ") wrapper = <<~SH.strip if ! mountpoint -q #{chroot_dir}/proc 2>/dev/null; then mkdir -p #{chroot_dir}/proc @@ -30,7 +30,7 @@ def run(*cmd) fi chroot #{chroot_dir} /bin/bash -c #{inner.shellescape} SH - stdout, stderr, status = Open3.capture3('sudo', '/bin/bash', '-c', wrapper) + stdout, stderr, status = Open3.capture3("sudo", "/bin/bash", "-c", wrapper) [stdout, stderr, status.exitstatus] end diff --git a/bosh-stemcell/lib/shellout_types/file.rb b/bosh-stemcell/lib/shellout_types/file.rb index bbafc90ce1..eb833077db 100644 --- a/bosh-stemcell/lib/shellout_types/file.rb +++ b/bosh-stemcell/lib/shellout_types/file.rb @@ -10,15 +10,15 @@ def to_s end def file? - stdout, _, _ = @chroot.run('stat', '-c', '%F', true_path_in_chroot) + stdout, _, _ = @chroot.run("stat", "-c", "%F", true_path_in_chroot) !stdout.strip.match(/\Aregular (empty )?file\z/).nil? rescue RuntimeError - return false + false end def owner - stdout, stderr, status = @chroot.run('stat', '-c', '%u', @path) + stdout, stderr, status = @chroot.run("stat", "-c", "%u", @path) stdout.strip! raise stderr if status != 0 @@ -27,7 +27,7 @@ def owner raise "user for file #{filepath} does not exist" if status == 2 raise stderr if status != 0 - passwd_split = stdout.split(':', -1) + passwd_split = stdout.split(":", -1) raise "passwd has an invalid format: #{stdout}" if passwd_split.size != 7 passwd_split.first @@ -39,9 +39,9 @@ def owned_by?(username) def content stdout, stderr, status = @chroot.run("cat", @path) - raise RuntimeError, stderr if status != 0 + raise stderr.to_s if status != 0 - return stdout + stdout end def content_as_lines @@ -53,10 +53,10 @@ def mode?(expected_mode) end def mode - stdout, stderr, status = @chroot.run('stat', '-c', '%a', @path) - raise RuntimeError, stderr if status != 0 + stdout, stderr, status = @chroot.run("stat", "-c", "%a", @path) + raise stderr.to_s if status != 0 - stdout.strip.to_i(8) & 0777 + stdout.strip.to_i(8) & 0o777 end def group @@ -64,50 +64,50 @@ def group end def executable? - stdout, stderr, status = @chroot.run('stat', '-c', '%a', @path) - raise RuntimeError, stderr if status != 0 + stdout, stderr, status = @chroot.run("stat", "-c", "%a", @path) + raise stderr.to_s if status != 0 - (stdout.strip.to_i(8) & 0111) != 0 + (stdout.strip.to_i(8) & 0o111) != 0 end def directory? - stdout, _, _ = @chroot.run('stat', '-c', '%F', true_path_in_chroot) - stdout.strip == 'directory' + stdout, _, _ = @chroot.run("stat", "-c", "%F", true_path_in_chroot) + stdout.strip == "directory" end def readable_by_user?(username) this_mode = mode if owned_by?(username) - return (this_mode & 0400) != 0 + return (this_mode & 0o400) != 0 end - members = group_entry.last.split(',') + members = group_entry.last.split(",") stdout, stderr, status = @chroot.run("getent passwd #{username}") - raise RuntimeError, "user #{username} does not exist" if status == 2 - raise RuntimeError, stderr if status != 0 + raise "user #{username} does not exist" if status == 2 + raise stderr.to_s if status != 0 - passwd_split = stdout.strip.split(':', -1) - raise RuntimeError, "passwd has an invalid format: #{stdout}" if passwd_split.size != 7 + passwd_split = stdout.strip.split(":", -1) + raise "passwd has an invalid format: #{stdout}" if passwd_split.size != 7 gid_for_username = passwd_split[3] members.map!(&:strip) if members.include?(username) || (gid == gid_for_username) - return (this_mode & 0040) != 0 + return (this_mode & 0o040) != 0 end - (mode & 0004) != 0 + (mode & 0o004) != 0 end def writable_by?(by_whom) case by_whom - when 'group' - (mode & 0020) != 0 - when 'other' - (mode & 0002) != 0 - else - raise "#{by_whom} is an invalid input to writable_by?, please specify one of: ['group', 'other']" + when "group" + (mode & 0o020) != 0 + when "other" + (mode & 0o002) != 0 + else + raise "#{by_whom} is an invalid input to writable_by?, please specify one of: ['group', 'other']" end end @@ -118,8 +118,8 @@ def linked_to?(target) private def true_path_in_chroot - stdout, stderr, status = @chroot.run('readlink', '-m', @path) - raise RuntimeError, stderr if status != 0 + stdout, stderr, status = @chroot.run("readlink", "-m", @path) + raise stderr.to_s if status != 0 stdout.strip end @@ -129,8 +129,8 @@ def filepath end def gid - stdout, stderr, status = @chroot.run('stat', '-c', '%g', @path) - raise RuntimeError, stderr if status != 0 + stdout, stderr, status = @chroot.run("stat", "-c", "%g", @path) + raise stderr.to_s if status != 0 stdout.strip end @@ -141,12 +141,12 @@ def group_entry def fetch_and_validate_group_entry_for_gid(group_id) stdout, stderr, status = @chroot.run("getent group #{group_id}") - raise RuntimeError, "group #{group_id} does not exist" if status == 2 - raise RuntimeError, stderr if status != 0 + raise "group #{group_id} does not exist" if status == 2 + raise stderr.to_s if status != 0 - group_split = stdout.split(':', -1) - raise RuntimeError, "group entry is an invalid format: #{stdout}" if group_split.size != 4 - return group_split + group_split = stdout.split(":", -1) + raise "group entry is an invalid format: #{stdout}" if group_split.size != 4 + group_split end end end diff --git a/bosh-stemcell/lib/shellout_types/group.rb b/bosh-stemcell/lib/shellout_types/group.rb index 5fe554f267..cfa324659c 100644 --- a/bosh-stemcell/lib/shellout_types/group.rb +++ b/bosh-stemcell/lib/shellout_types/group.rb @@ -10,7 +10,7 @@ def to_s end def exists? - _, _, status = @chroot.run('getent', 'group', @group) + _, _, status = @chroot.run("getent", "group", @group) status == 0 end end diff --git a/bosh-stemcell/lib/shellout_types/package.rb b/bosh-stemcell/lib/shellout_types/package.rb index f064204cfd..fcee58d946 100644 --- a/bosh-stemcell/lib/shellout_types/package.rb +++ b/bosh-stemcell/lib/shellout_types/package.rb @@ -19,9 +19,9 @@ def installed? private def pkg_query - stdout, _, _ = @chroot_cmd_runner.run('cat /etc/*release') - if stdout.match /Ubuntu/ - return 'dpkg -s' + stdout, _, _ = @chroot_cmd_runner.run("cat /etc/*release") + if stdout.match?(/Ubuntu/) + "dpkg -s" else raise "Cannot determine Linux distribution: #{stdout}" end diff --git a/bosh-stemcell/lib/shellout_types/service.rb b/bosh-stemcell/lib/shellout_types/service.rb index 098539e3ea..ef80fa174d 100644 --- a/bosh-stemcell/lib/shellout_types/service.rb +++ b/bosh-stemcell/lib/shellout_types/service.rb @@ -1,4 +1,4 @@ -require 'shellout_types/file' +require "shellout_types/file" module ShelloutTypes class Service @@ -24,20 +24,20 @@ def enabled_for_level?(runlevel) private def check_service_enabled(runlevel) - stdout, stderr, status = @chroot.run('cat', '/etc/*release') - raise RuntimeError, stderr if status != 0 + stdout, stderr, status = @chroot.run("cat", "/etc/*release") + raise stderr.to_s if status != 0 - raise "Cannot determine Linux distribution: #{stdout}" unless stdout.match(/Ubuntu|CentOS|openSUSE/) + raise "Cannot determine Linux distribution: #{stdout}" unless /Ubuntu|CentOS|openSUSE/.match?(stdout) check_is_enabled_systemctl end def check_upstart_links(runlevel) - scripts_list, stderr, status = @chroot.run('ls', '-1', "/etc/rc#{runlevel}.d") - raise RuntimeError, stderr if status != 0 + scripts_list, stderr, status = @chroot.run("ls", "-1", "/etc/rc#{runlevel}.d") + raise stderr.to_s if status != 0 script_links = scripts_list.split("\n") - script_for_service = script_links.select { |link| link.match(/^S\d\d#{@service}$/) }.first + script_for_service = script_links.find { |link| link.match(/^S\d\d#{@service}$/) } !script_for_service.nil? end @@ -46,17 +46,17 @@ def check_init_conf(runlevel) return false unless conf_file.file? start_on_block = conf_file.content.match(/^start on .*(\n[\t ]+.*)*/)[0] - if start_on_block.match(/runlevel \[\d*#{runlevel}\d*\]/) || start_on_block.match('startup') - return true + if start_on_block.match(/runlevel \[\d*#{runlevel}\d*\]/) || start_on_block.match("startup") + true else - return false + false end end def check_is_enabled_systemctl - stdout, _, _ = @chroot.run('systemctl', 'is-enabled', @service) + stdout, _, _ = @chroot.run("systemctl", "is-enabled", @service) - return stdout.match(/^enabled$/) ? true : false + /^enabled$/.match?(stdout) || false end end end diff --git a/bosh-stemcell/lib/shellout_types/user.rb b/bosh-stemcell/lib/shellout_types/user.rb index dba25b03e4..03ff2c2391 100644 --- a/bosh-stemcell/lib/shellout_types/user.rb +++ b/bosh-stemcell/lib/shellout_types/user.rb @@ -18,7 +18,7 @@ def in_group?(group_name) return false unless exists? stdout, _, status = @chroot_cmd_runner.run("id -Gn #{@user_name}") return false unless status == 0 - groups_for_user = stdout.split(' ') + groups_for_user = stdout.split(" ") groups_for_user.include?(group_name) end end diff --git a/bosh-stemcell/spec/bosh/stemcell/archive_filename_spec.rb b/bosh-stemcell/spec/bosh/stemcell/archive_filename_spec.rb index 619d3cafa0..7f5ac4c74c 100644 --- a/bosh-stemcell/spec/bosh/stemcell/archive_filename_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/archive_filename_spec.rb @@ -1,43 +1,42 @@ -require 'spec_helper' -require 'bosh/stemcell/archive_filename' -require 'bosh/stemcell/definition' +require "spec_helper" +require "bosh/stemcell/archive_filename" +require "bosh/stemcell/definition" module Bosh::Stemcell describe ArchiveFilename do - let(:version) { '007' } + let(:version) { "007" } let(:infrastructure) do - instance_double('Bosh::Stemcell::Infrastructure::Base', - name: 'INFRASTRUCTURE', - hypervisor: 'HYPERVISOR') + instance_double("Bosh::Stemcell::Infrastructure::Base", + name: "INFRASTRUCTURE", + hypervisor: "HYPERVISOR") end let(:operating_system) do - instance_double('Bosh::Stemcell::OperatingSystem::Base', - name: 'OPERATING_SYSTEM', - version: 'OPERATING_SYSTEM_VERSION', - ) + instance_double("Bosh::Stemcell::OperatingSystem::Base", + name: "OPERATING_SYSTEM", + version: "OPERATING_SYSTEM_VERSION") end let(:agent) do instance_double( - 'Bosh::Stemcell::Agent::Go', - name: 'go' + "Bosh::Stemcell::Agent::Go", + name: "go" ) end let(:definition) do instance_double( - 'Bosh::Stemcell::Definition', - stemcell_name: 'fake-stemcell-name', - infrastructure: instance_double('Bosh::Stemcell::Infrastructure::Base', default_disk_format: 'iso'), + "Bosh::Stemcell::Definition", + stemcell_name: "fake-stemcell-name", + infrastructure: instance_double("Bosh::Stemcell::Infrastructure::Base", default_disk_format: "iso") ) end - let(:disk_format) { 'iso' } + let(:disk_format) { "iso" } subject(:archive_filename) do - ArchiveFilename.new(version, definition, 'FAKE_NAME', disk_format) + ArchiveFilename.new(version, definition, "FAKE_NAME", disk_format) end - describe '#to_s' do - it 'includes name, version, stemcell name' do - expect(archive_filename.to_s).to eq ("FAKE_NAME-007-fake-stemcell-name.tgz") + describe "#to_s" do + it "includes name, version, stemcell name" do + expect(archive_filename.to_s).to eq("FAKE_NAME-007-fake-stemcell-name.tgz") end end end diff --git a/bosh-stemcell/spec/bosh/stemcell/archive_handler_spec.rb b/bosh-stemcell/spec/bosh/stemcell/archive_handler_spec.rb index e8aaf528d2..95add62383 100644 --- a/bosh-stemcell/spec/bosh/stemcell/archive_handler_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/archive_handler_spec.rb @@ -1,5 +1,5 @@ -require 'spec_helper' -require 'bosh/stemcell/archive_handler' +require "spec_helper" +require "bosh/stemcell/archive_handler" module Bosh::Stemcell describe ArchiveHandler do @@ -11,11 +11,11 @@ module Bosh::Stemcell allow(Bosh::Core::Shell).to receive(:new).and_return(shell) end - describe 'compress' do - it 'compresses the given directory' do - expect(shell).to receive(:run).with('sudo tar -cz -f some.tar.gz -C some_dir .') + describe "compress" do + it "compresses the given directory" do + expect(shell).to receive(:run).with("sudo tar -cz -f some.tar.gz -C some_dir .") - archiver.compress('some_dir', 'some.tar.gz') + archiver.compress("some_dir", "some.tar.gz") end end end diff --git a/bosh-stemcell/spec/bosh/stemcell/archive_spec.rb b/bosh-stemcell/spec/bosh/stemcell/archive_spec.rb index b1d66e6110..6791a96bab 100644 --- a/bosh-stemcell/spec/bosh/stemcell/archive_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/archive_spec.rb @@ -1,104 +1,104 @@ -require 'spec_helper' -require 'bosh/stemcell/archive' +require "spec_helper" +require "bosh/stemcell/archive" module Bosh::Stemcell describe Archive do subject { described_class.new(stemcell_path) } - let(:stemcell_path) { spec_asset('fake-stemcell-aws-xen-ubuntu.tgz') } + let(:stemcell_path) { spec_asset("fake-stemcell-aws-xen-ubuntu.tgz") } - describe '#initialize' do - it 'errors if path does not exist' do + describe "#initialize" do + it "errors if path does not exist" do expect { - described_class.new('/not/found/stemcell.tgz') + described_class.new("/not/found/stemcell.tgz") }.to raise_error("Cannot find file '/not/found/stemcell.tgz'") end end - describe '#manifest' do - it 'has a manifest' do + describe "#manifest" do + it "has a manifest" do expect(subject.manifest).to be_a(Hash) end end - describe '#name' do - it 'has a name' do - expect(subject.name).to eq('fake-stemcell') + describe "#name" do + it "has a name" do + expect(subject.name).to eq("fake-stemcell") end end - describe '#infrastructure' do - it 'has an infrastructure' do - expect(subject.infrastructure).to eq('aws') + describe "#infrastructure" do + it "has an infrastructure" do + expect(subject.infrastructure).to eq("aws") end end - describe '#path' do - it 'has a path' do + describe "#path" do + it "has a path" do expect(subject.path).to eq(stemcell_path) end end - describe '#version' do - it 'has a version' do - expect(subject.version).to eq('007') + describe "#version" do + it "has a version" do + expect(subject.version).to eq("007") end end - describe '#sha1' do - context 'when sha1 is just a string (from fake-stemcell-aws-xen-ubuntu.tgz)' do - it 'returns a sha1 as a string' do - expect(subject.sha1).to eq('fake-stemcell-sha1') + describe "#sha1" do + context "when sha1 is just a string (from fake-stemcell-aws-xen-ubuntu.tgz)" do + it "returns a sha1 as a string" do + expect(subject.sha1).to eq("fake-stemcell-sha1") end end - context 'when sha1 happens to be a number' do - before { subject.manifest['sha1'] = 123 } + context "when sha1 happens to be a number" do + before { subject.manifest["sha1"] = 123 } - it 'returns a sha1 as a string' do - expect(subject.sha1).to eq('123') + it "returns a sha1 as a string" do + expect(subject.sha1).to eq("123") end end - context 'when the sha1 is nil' do - before { subject.manifest['sha1'] = nil } + context "when the sha1 is nil" do + before { subject.manifest["sha1"] = nil } - it 'raises an error' do + it "raises an error" do expect { subject.sha1 - }.to raise_error(RuntimeError, 'sha1 must not be nil') + }.to raise_error(RuntimeError, "sha1 must not be nil") end end end - describe '#light?' do + describe "#light?" do context 'when infrastructure is "aws"' do context 'when there is not an "ami" key in the "cloud_properties" section of the manifest' do it { should_not be_light } end context 'when there is an "ami" key in the "cloud_properties" section of the manifest' do - let(:stemcell_path) { spec_asset('light-fake-stemcell-aws-xen-ubuntu.tgz') } + let(:stemcell_path) { spec_asset("light-fake-stemcell-aws-xen-ubuntu.tgz") } it { should be_light } end end context 'when infrastructure is anything but "aws"' do - let(:stemcell_path) { spec_asset('fake-stemcell-vsphere.tgz') } + let(:stemcell_path) { spec_asset("fake-stemcell-vsphere.tgz") } it { should_not be_light } end end - describe '#extract' do - it 'extracts stemcell' do + describe "#extract" do + it "extracts stemcell" do expect(Rake::FileUtilsExt).to receive(:sh).with(/tar xzf .*#{stemcell_path} --directory/) subject.extract {} end - it 'extracts stemcell and excludes files' do + it "extracts stemcell and excludes files" do expect(Rake::FileUtilsExt).to receive(:sh).with(/tar xzf .*#{stemcell_path} --directory .* --exclude=image/) - subject.extract(exclude: 'image') {} + subject.extract(exclude: "image") {} end end end diff --git a/bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb b/bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb index 786a218a58..c0437c9f5b 100644 --- a/bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb @@ -1,8 +1,8 @@ -require 'spec_helper' -require 'bosh/stemcell/build_environment' -require 'bosh/stemcell/infrastructure' -require 'bosh/stemcell/operating_system' -require 'bosh/stemcell/definition' +require "spec_helper" +require "bosh/stemcell/build_environment" +require "bosh/stemcell/infrastructure" +require "bosh/stemcell/operating_system" +require "bosh/stemcell/definition" module Bosh::Stemcell describe BuildEnvironment do @@ -14,78 +14,77 @@ module Bosh::Stemcell let(:definition) do instance_double( - 'Bosh::Stemcell::Definition', + "Bosh::Stemcell::Definition", infrastructure: infrastructure, - operating_system: operating_system, + operating_system: operating_system ) end - let(:version) { '1234' } - let(:os_image_tarball_path) { '/some/os_image.tgz' } + let(:version) { "1234" } + let(:os_image_tarball_path) { "/some/os_image.tgz" } - let(:build_time_marker_file) { '/fake/path/to/build/time/marker/file' } - let(:stemcell_builder_source_dir) { '/fake/path/to/stemcell_builder' } - let(:stemcell_specs_dir) { '/fake/path/to/stemcell/specs/dir' } + let(:build_time_marker_file) { "/fake/path/to/build/time/marker/file" } + let(:stemcell_builder_source_dir) { "/fake/path/to/stemcell_builder" } + let(:stemcell_specs_dir) { "/fake/path/to/stemcell/specs/dir" } - let(:version) { '007' } + let(:version) { "007" } let(:root_dir) do - File.join('/mnt/stemcells', infrastructure.name, infrastructure.hypervisor, operating_system.name) + File.join("/mnt/stemcells", infrastructure.name, infrastructure.hypervisor, operating_system.name) end - let(:build_path) { File.join(root_dir, 'build', 'build') } - let(:settings_file) { File.join(build_path, 'etc', 'settings.bash') } - let(:work_root) { File.join(root_dir, 'work') } - let(:work_path) { File.join(work_root, 'work') } + let(:build_path) { File.join(root_dir, "build", "build") } + let(:settings_file) { File.join(build_path, "etc", "settings.bash") } + let(:work_root) { File.join(root_dir, "work") } + let(:work_path) { File.join(work_root, "work") } let(:infrastructure) do - instance_double('Bosh::Stemcell::Infrastructure::Base', - name: 'fake-infrastructure-name', - hypervisor: 'fake-hypervisor', - default_disk_size: -1, - ) + instance_double("Bosh::Stemcell::Infrastructure::Base", + name: "fake-infrastructure-name", + hypervisor: "fake-hypervisor", + default_disk_size: -1) end let(:stemcell_builder_options) do - instance_double('Bosh::Stemcell::BuilderOptions', default: options) + instance_double("Bosh::Stemcell::BuilderOptions", default: options) end let(:options) do { - 'hello' => 'world', - 'stemcell_tgz' => 'fake-stemcell.tgz', - 'stemcell_image_name' => 'fake-root-disk-image.raw' + "hello" => "world", + "stemcell_tgz" => "fake-stemcell.tgz", + "stemcell_image_name" => "fake-root-disk-image.raw" } end let(:operating_system) do - instance_double('Bosh::Stemcell::OperatingSystem::Base', - name: 'fake-operating-system-name') + instance_double("Bosh::Stemcell::OperatingSystem::Base", + name: "fake-operating-system-name") end let(:shell) { instance_double(Bosh::Core::Shell) } - let(:run_options) { { ignore_failures: true } } + let(:run_options) { {ignore_failures: true} } before do allow(Bosh::Core::Shell).to receive(:new).and_return(shell) allow(BuilderOptions).to receive(:new).and_return(stemcell_builder_options) - stub_const('Bosh::Stemcell::BuildEnvironment::BUILD_TIME_MARKER_FILE', build_time_marker_file) - stub_const('Bosh::Stemcell::BuildEnvironment::STEMCELL_BUILDER_SOURCE_DIR', stemcell_builder_source_dir) - stub_const('Bosh::Stemcell::BuildEnvironment::STEMCELL_SPECS_DIR', stemcell_specs_dir) + stub_const("Bosh::Stemcell::BuildEnvironment::BUILD_TIME_MARKER_FILE", build_time_marker_file) + stub_const("Bosh::Stemcell::BuildEnvironment::STEMCELL_BUILDER_SOURCE_DIR", stemcell_builder_source_dir) + stub_const("Bosh::Stemcell::BuildEnvironment::STEMCELL_SPECS_DIR", stemcell_specs_dir) end - it 'constructs stemcell builder options' do + it "constructs stemcell builder options" do expect(BuilderOptions).to receive(:new).with( env: env, definition: definition, version: version, - os_image_tarball: os_image_tarball_path, + os_image_tarball: os_image_tarball_path ) subject end - describe '#prepare_build' do + describe "#prepare_build" do before do allow(shell).to receive(:run) @@ -94,16 +93,16 @@ module Bosh::Stemcell original_cp_r.call(src, dst) end - stemcell_builder_etc_dir = File.join(stemcell_builder_source_dir, 'etc') + stemcell_builder_etc_dir = File.join(stemcell_builder_source_dir, "etc") FileUtils.mkdir_p(stemcell_builder_etc_dir) - File.open(File.join(stemcell_builder_etc_dir, 'settings.bash'), 'w') { |file| file.puts('some=var') } + File.open(File.join(stemcell_builder_etc_dir, "settings.bash"), "w") { |file| file.puts("some=var") } end - it 'cleans and prepares the environment' do - image_path = File.join(root_dir, 'work/work/mnt/tmp/grub/fake-root-disk-image.raw') + it "cleans and prepares the environment" do + image_path = File.join(root_dir, "work/work/mnt/tmp/grub/fake-root-disk-image.raw") unmount_img_command = "sudo umount #{image_path} 2> /dev/null" expect(shell).to receive(:run).with(unmount_img_command, run_options).ordered - unmount_dir_command = "sudo umount #{File.join(root_dir, 'work/work/mnt')} 2> /dev/null" + unmount_dir_command = "sudo umount #{File.join(root_dir, "work/work/mnt")} 2> /dev/null" expect(shell).to receive(:run).with(unmount_dir_command, run_options).ordered expect(shell).to receive(:run).with("sudo rm -rf #{root_dir}", run_options).ordered @@ -114,16 +113,16 @@ module Bosh::Stemcell expect(File.read(settings_file)).to match(/hello=world/) end - it 'removes any tgz files from current working directory' do - FileUtils.touch('leftover.tgz') + it "removes any tgz files from current working directory" do + FileUtils.touch("leftover.tgz") expect { subject.prepare_build - }.to change { Dir.glob('*.tgz').size }.to(0) + }.to change { Dir.glob("*.tgz").size }.to(0) end - it 'cleans the build path' do + it "cleans the build path" do FileUtils.mkdir_p(build_path) - leftover_file = File.join(build_path, 'some_file') + leftover_file = File.join(build_path, "some_file") FileUtils.touch(leftover_file) expect { @@ -131,30 +130,30 @@ module Bosh::Stemcell }.to change { File.exist?(leftover_file) }.from(true).to(false) end - it 'creates the work root' do + it "creates the work root" do expect { subject.prepare_build }.to change { Dir.exist?(work_root) }.from(false).to(true) end - it 'creates the stemcell path' do + it "creates the stemcell path" do expect { subject.prepare_build - }.to change { Dir.exist?(File.join(root_dir, 'work/work/stemcell')) }.from(false).to(true) + }.to change { Dir.exist?(File.join(root_dir, "work/work/stemcell")) }.from(false).to(true) end - context 'when resume_from is set' do + context "when resume_from is set" do before do - ENV['resume_from'] = 'stage_1' + ENV["resume_from"] = "stage_1" FileUtils.mkdir_p(build_path) end after do - ENV['resume_from'] = nil + ENV["resume_from"] = nil end - it 'does not run sanitize' do + it "does not run sanitize" do expect(shell).to_not receive(:run) subject.prepare_build @@ -162,15 +161,15 @@ module Bosh::Stemcell expect(Dir.exist?(build_path)).to be(true) end - it 'does not run prepare_build_path' do - leftover_file = File.join(build_path, 'some_file') + it "does not run prepare_build_path" do + leftover_file = File.join(build_path, "some_file") FileUtils.touch(leftover_file) subject.prepare_build expect(File.exist?(leftover_file)).to be(true) end - it 'still updates the settings file' do + it "still updates the settings file" do subject.prepare_build expect(File.read(settings_file)).to match(/some=var/) @@ -179,32 +178,32 @@ module Bosh::Stemcell end end - describe '#os_image_rspec_command' do - context 'when operating system has version' do - before { allow(operating_system).to receive(:version).and_return('fake-version') } + describe "#os_image_rspec_command" do + context "when operating system has version" do + before { allow(operating_system).to receive(:version).and_return("fake-version") } - it 'returns the correct command' do + it "returns the correct command" do expected_rspec_command = [ "cd #{stemcell_specs_dir};", - 'OS_IMAGE=/some/os_image.tgz', + "OS_IMAGE=/some/os_image.tgz", "bundle exec rspec -fd", - "spec/os_image/#{operating_system.name}_spec.rb", - ].join(' ') + "spec/os_image/#{operating_system.name}_spec.rb" + ].join(" ") expect(subject.os_image_rspec_command).to eq(expected_rspec_command) end end end - describe '#stemcell_rspec_command' do - before { allow(operating_system).to receive(:version).and_return('fake-version') } + describe "#stemcell_rspec_command" do + before { allow(operating_system).to receive(:version).and_return("fake-version") } before { allow(operating_system).to receive(:variant?).and_return(true) } - before { allow(operating_system).to receive(:variant).and_return('fips') } + before { allow(operating_system).to receive(:variant).and_return("fips") } - it 'returns the correct command' do + it "returns the correct command" do expected_rspec_command = [ "cd #{stemcell_specs_dir};", - "STEMCELL_IMAGE=#{File.join(work_path, 'fake-root-disk-image.raw')}", + "STEMCELL_IMAGE=#{File.join(work_path, "fake-root-disk-image.raw")}", "STEMCELL_WORKDIR=#{work_path}", "STEMCELL_INFRASTRUCTURE=#{infrastructure.name}", "OS_NAME=#{operating_system.name}", @@ -217,140 +216,140 @@ module Bosh::Stemcell "spec/stemcells/#{infrastructure.name}_spec.rb", "spec/stemcells/stig_spec.rb", "spec/stemcells/cis_spec.rb", - "spec/stemcells/fips_spec.rb", - ].join(' ') + "spec/stemcells/fips_spec.rb" + ].join(" ") expect(subject.stemcell_rspec_command).to eq(expected_rspec_command) end end - describe '#build_path' do - it 'returns the build path' do + describe "#build_path" do + it "returns the build path" do expect(subject.build_path).to eq(build_path) end end - describe '#chroot_dir' do - it 'returns the right directory' do - expect(subject.chroot_dir).to eq(File.join(work_path, 'chroot')) + describe "#chroot_dir" do + it "returns the right directory" do + expect(subject.chroot_dir).to eq(File.join(work_path, "chroot")) end end - describe '#stemcell_files' do - it 'returns the right file path' do - allow(definition).to receive(:disk_formats) { ['disk-format-1', 'disk-format-2'] } - allow(definition).to receive(:stemcell_name).with('disk-format-1') { 'infra-hypervisor-os-version' } - allow(definition).to receive(:stemcell_name). - with('disk-format-2') { 'infra-hypervisor-os-version-disk-format-2' } + describe "#stemcell_files" do + it "returns the right file path" do + allow(definition).to receive(:disk_formats) { ["disk-format-1", "disk-format-2"] } + allow(definition).to receive(:stemcell_name).with("disk-format-1") { "infra-hypervisor-os-version" } + allow(definition).to receive(:stemcell_name) + .with("disk-format-2") { "infra-hypervisor-os-version-disk-format-2" } expect(subject.stemcell_files).to eq([ File.join(work_path, "bosh-stemcell-007-infra-hypervisor-os-version.tgz"), - File.join(work_path, "bosh-stemcell-007-infra-hypervisor-os-version-disk-format-2.tgz"), + File.join(work_path, "bosh-stemcell-007-infra-hypervisor-os-version-disk-format-2.tgz") ]) end end - describe '#settings_path' do - it 'returns the settings path' do + describe "#settings_path" do + it "returns the settings path" do expect(subject.settings_path).to eq(settings_file) end end - describe '#work_path' do - it 'returns the work path' do + describe "#work_path" do + it "returns the work path" do expect(subject.work_path).to eq(work_path) end end - describe '#command_env' do - context 'when the environment does not have HTTP_PROXY, HTTPS_PROXY or NO_PROXY variables' do - it 'includes no variables' do - expect(subject.command_env).to eq('env ') + describe "#command_env" do + context "when the environment does not have HTTP_PROXY, HTTPS_PROXY or NO_PROXY variables" do + it "includes no variables" do + expect(subject.command_env).to eq("env ") end end - context 'when the environment has HTTP_PROXY and NO_PROXY variables' do + context "when the environment has HTTP_PROXY and NO_PROXY variables" do let(:env) do { - 'HTTP_PROXY' => 'some_proxy', - 'NO_PROXY' => 'no_proxy', - 'SOME_PROXY' => 'other_proxy', + "HTTP_PROXY" => "some_proxy", + "NO_PROXY" => "no_proxy", + "SOME_PROXY" => "other_proxy" } end - it 'includes those variables' do + it "includes those variables" do expect(subject.command_env).to eq("env HTTP_PROXY='some_proxy' NO_PROXY='no_proxy'") end end - context 'when the environment has http_proxy and no_proxy variables' do + context "when the environment has http_proxy and no_proxy variables" do let(:env) do { - 'http_proxy' => 'some_proxy', - 'no_proxy' => 'no_proxy', - 'some_proxy' => 'other_proxy', + "http_proxy" => "some_proxy", + "no_proxy" => "no_proxy", + "some_proxy" => "other_proxy" } end - it 'includes those variables' do + it "includes those variables" do expect(subject.command_env).to eq("env http_proxy='some_proxy' no_proxy='no_proxy'") end end - context 'when the environment has HTTP_PROXY, HTTPS_PROXY and NO_PROXY variables' do + context "when the environment has HTTP_PROXY, HTTPS_PROXY and NO_PROXY variables" do let(:env) do { - 'HTTP_PROXY' => 'fake-http-proxy', - 'HTTPS_PROXY' => 'fake-https-proxy', - 'NO_PROXY' => 'fake-no-proxy', - 'SOME_PROXY' => 'fake-other-proxy', + "HTTP_PROXY" => "fake-http-proxy", + "HTTPS_PROXY" => "fake-https-proxy", + "NO_PROXY" => "fake-no-proxy", + "SOME_PROXY" => "fake-other-proxy" } end - it 'includes those variables' do + it "includes those variables" do expect(subject.command_env).to eq( "env HTTP_PROXY='fake-http-proxy' HTTPS_PROXY='fake-https-proxy' NO_PROXY='fake-no-proxy'" ) end end - context 'when the environment has http_proxy, https_proxy and no_proxy variables' do + context "when the environment has http_proxy, https_proxy and no_proxy variables" do let(:env) do { - 'http_proxy' => 'fake-http-proxy', - 'https_proxy' => 'fake-https-proxy', - 'no_proxy' => 'fake-no-proxy', - 'some_proxy' => 'fake-other-proxy', + "http_proxy" => "fake-http-proxy", + "https_proxy" => "fake-https-proxy", + "no_proxy" => "fake-no-proxy", + "some_proxy" => "fake-other-proxy" } end - it 'includes those variables' do + it "includes those variables" do expect(subject.command_env).to eq( "env http_proxy='fake-http-proxy' https_proxy='fake-https-proxy' no_proxy='fake-no-proxy'" ) end end - context 'when a build time env var is configured' do + context "when a build time env var is configured" do let(:env) do { - 'BUILD_TIME' => 'timestamp_from_env', + "BUILD_TIME" => "timestamp_from_env" } end - it 'includes the timestamp from env' do + it "includes the timestamp from env" do expect(subject.command_env).to eq( "env BUILD_TIME='timestamp_from_env'" ) end - context 'when a build time marker file exists' do + context "when a build time marker file exists" do before do allow(File).to receive(:exist?).with(build_time_marker_file).and_return(true) - allow(File).to receive(:read).with(build_time_marker_file).and_return('timestamp_from_file') + allow(File).to receive(:read).with(build_time_marker_file).and_return("timestamp_from_file") end - it 'includes the timestamp from the file' do + it "includes the timestamp from the file" do expect(subject.command_env).to eq( "env BUILD_TIME='timestamp_from_file'" ) diff --git a/bosh-stemcell/spec/bosh/stemcell/builder_options_spec.rb b/bosh-stemcell/spec/bosh/stemcell/builder_options_spec.rb index 3f1426aebb..24839b0c7a 100644 --- a/bosh-stemcell/spec/bosh/stemcell/builder_options_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/builder_options_spec.rb @@ -1,6 +1,6 @@ -require 'spec_helper' -require 'bosh/stemcell/builder_options' -require 'bosh/stemcell/definition' +require "spec_helper" +require "bosh/stemcell/builder_options" +require "bosh/stemcell/definition" module Bosh::Stemcell describe BuilderOptions do @@ -9,8 +9,8 @@ module Bosh::Stemcell { env: env, definition: definition, - version: '007', - os_image_tarball: 'fake/os_image.tgz', + version: "007", + os_image_tarball: "fake/os_image.tgz" } end @@ -18,131 +18,131 @@ module Bosh::Stemcell let(:definition) { instance_double( - 'Bosh::Stemcell::Definition', + "Bosh::Stemcell::Definition", infrastructure: infrastructure, - operating_system: operating_system, + operating_system: operating_system ) } - let(:infrastructure) { Infrastructure.for('aws') } - let(:operating_system) { OperatingSystem.for('ubuntu', 'penguin-bear') } - let(:expected_source_root) { File.expand_path('../../../../..', __FILE__) } - let(:archive_filename) { instance_double('Bosh::Stemcell::ArchiveFilename', to_s: 'FAKE_STEMCELL.tgz') } + let(:infrastructure) { Infrastructure.for("aws") } + let(:operating_system) { OperatingSystem.for("ubuntu", "penguin-bear") } + let(:expected_source_root) { File.expand_path("../../../../..", __FILE__) } + let(:archive_filename) { instance_double("Bosh::Stemcell::ArchiveFilename", to_s: "FAKE_STEMCELL.tgz") } before do allow(ArchiveFilename).to receive(:new).and_return(archive_filename) end - describe '#default' do + describe "#default" do let(:default_disk_size) { 2048 } let(:rake_args) { {} } - it 'sets stemcell_image_name' do + it "sets stemcell_image_name" do result = stemcell_builder_options.default expected_image_name = "#{infrastructure.name}-#{infrastructure.hypervisor}-#{operating_system.name}.raw" - expect(result['stemcell_image_name']).to eq(expected_image_name) + expect(result["stemcell_image_name"]).to eq(expected_image_name) end - it 'sets stemcell_version' do + it "sets stemcell_version" do result = stemcell_builder_options.default - expect(result['stemcell_version']).to eq('007') + expect(result["stemcell_version"]).to eq("007") end - it 'sets stemcell operating system version' do + it "sets stemcell operating system version" do result = stemcell_builder_options.default - expect(result['stemcell_operating_system_version']).to eq('penguin') + expect(result["stemcell_operating_system_version"]).to eq("penguin") end - it 'sets stemcell operating system variant' do + it "sets stemcell operating system variant" do result = stemcell_builder_options.default - expect(result['stemcell_operating_system_variant']).to eq('bear') + expect(result["stemcell_operating_system_variant"]).to eq("bear") end - # rubocop:disable MethodLength + # rubocop:disable Metrics/MethodLength def self.it_sets_correct_environment_variables - describe 'setting enviroment variables' do + describe "setting enviroment variables" do let(:env) do { - 'UBUNTU_ISO' => 'fake_ubuntu_iso', - 'UBUNTU_MIRROR' => 'fake_ubuntu_mirror', - 'RUBY_BIN' => 'fake_ruby_bin', + "UBUNTU_ISO" => "fake_ubuntu_iso", + "UBUNTU_MIRROR" => "fake_ubuntu_mirror", + "RUBY_BIN" => "fake_ruby_bin" } end - it 'sets default values for options based in hash' do + it "sets default values for options based in hash" do result = stemcell_builder_options.default - expect(result['stemcell_operating_system']).to eq(operating_system.name) - expect(result['stemcell_infrastructure']).to eq(infrastructure.name) - expect(result['stemcell_hypervisor']).to eq(infrastructure.hypervisor) - expect(result['UBUNTU_ISO']).to eq('fake_ubuntu_iso') - expect(result['UBUNTU_MIRROR']).to eq('fake_ubuntu_mirror') - expect(result['ruby_bin']).to eq('fake_ruby_bin') - expect(result['image_create_disk_size']).to eq(default_disk_size) - expect(result['os_image_tgz']).to eq('fake/os_image.tgz') + expect(result["stemcell_operating_system"]).to eq(operating_system.name) + expect(result["stemcell_infrastructure"]).to eq(infrastructure.name) + expect(result["stemcell_hypervisor"]).to eq(infrastructure.hypervisor) + expect(result["UBUNTU_ISO"]).to eq("fake_ubuntu_iso") + expect(result["UBUNTU_MIRROR"]).to eq("fake_ubuntu_mirror") + expect(result["ruby_bin"]).to eq("fake_ruby_bin") + expect(result["image_create_disk_size"]).to eq(default_disk_size) + expect(result["os_image_tgz"]).to eq("fake/os_image.tgz") end - context 'when RUBY_BIN is not set' do - before { env.delete('RUBY_BIN') } + context "when RUBY_BIN is not set" do + before { env.delete("RUBY_BIN") } before do - allow(RbConfig::CONFIG).to receive(:[]).with('bindir').and_return('/a/path/to/') - allow(RbConfig::CONFIG).to receive(:[]).with('ruby_install_name').and_return('ruby') + allow(RbConfig::CONFIG).to receive(:[]).with("bindir").and_return("/a/path/to/") + allow(RbConfig::CONFIG).to receive(:[]).with("ruby_install_name").and_return("ruby") end - it 'uses the RbConfig values' do + it "uses the RbConfig values" do result = stemcell_builder_options.default - expect(result['ruby_bin']).to eq('/a/path/to/ruby') + expect(result["ruby_bin"]).to eq("/a/path/to/ruby") end end - context 'when disk_size is not passed' do - it 'defaults to default disk size for infrastructure' do + context "when disk_size is not passed" do + it "defaults to default disk size for infrastructure" do result = stemcell_builder_options.default - expect(result['image_create_disk_size']).to eq(default_disk_size) + expect(result["image_create_disk_size"]).to eq(default_disk_size) end end - context 'when disk_size is passed' do + context "when disk_size is passed" do before { dependencies[:disk_size] = 1234 } - it 'allows user to override default disk_size' do + it "allows user to override default disk_size" do result = stemcell_builder_options.default - expect(result['image_create_disk_size']).to eq(1234) + expect(result["image_create_disk_size"]).to eq(1234) end end end end - # rubocop:enable MethodLength + # rubocop:enable Metrics/MethodLength - describe 'infrastructure variation' do - context 'when infrastruture is aws' do - let(:infrastructure) { Infrastructure.for('aws') } + describe "infrastructure variation" do + context "when infrastruture is aws" do + let(:infrastructure) { Infrastructure.for("aws") } let(:default_disk_size) { 5120 } it_sets_correct_environment_variables it 'has no "image_ovftool_path" key' do - expect(stemcell_builder_options.default).not_to have_key('image_ovftool_path') + expect(stemcell_builder_options.default).not_to have_key("image_ovftool_path") end end - context 'when infrastruture is google' do - let(:infrastructure) { Infrastructure.for('google') } + context "when infrastruture is google" do + let(:infrastructure) { Infrastructure.for("google") } let(:default_disk_size) { 5120 } it_sets_correct_environment_variables it 'has no "image_ovftool_path" key' do - expect(stemcell_builder_options.default).not_to have_key('image_ovftool_path') + expect(stemcell_builder_options.default).not_to have_key("image_ovftool_path") end end - context 'when infrastruture is vsphere' do - let(:infrastructure) { Infrastructure.for('vsphere') } + context "when infrastruture is vsphere" do + let(:infrastructure) { Infrastructure.for("vsphere") } let(:default_disk_size) { 5120 } it_sets_correct_environment_variables @@ -150,22 +150,22 @@ def self.it_sets_correct_environment_variables it 'has an "image_ovftool_path" key' do result = stemcell_builder_options.default - expect(result['image_ovftool_path']).to be_nil + expect(result["image_ovftool_path"]).to be_nil end - context 'if you have OVFTOOL set in the environment' do - let(:env) { { 'OVFTOOL' => 'fake_ovf_tool_path' } } + context "if you have OVFTOOL set in the environment" do + let(:env) { {"OVFTOOL" => "fake_ovf_tool_path"} } - it 'sets image_ovftool_path' do + it "sets image_ovftool_path" do result = stemcell_builder_options.default - expect(result['image_ovftool_path']).to eq('fake_ovf_tool_path') + expect(result["image_ovftool_path"]).to eq("fake_ovf_tool_path") end end end - context 'when infrastruture is vcloud' do - let(:infrastructure) { Infrastructure.for('vcloud') } + context "when infrastruture is vcloud" do + let(:infrastructure) { Infrastructure.for("vcloud") } let(:default_disk_size) { 5120 } it_sets_correct_environment_variables @@ -173,39 +173,39 @@ def self.it_sets_correct_environment_variables it 'has an "image_ovftool_path" key' do result = stemcell_builder_options.default - expect(result['image_ovftool_path']).to be_nil + expect(result["image_ovftool_path"]).to be_nil end - context 'if you have OVFTOOL set in the environment' do - let(:env) { { 'OVFTOOL' => 'fake_ovf_tool_path' } } + context "if you have OVFTOOL set in the environment" do + let(:env) { {"OVFTOOL" => "fake_ovf_tool_path"} } - it 'sets image_ovftool_path' do + it "sets image_ovftool_path" do result = stemcell_builder_options.default - expect(result['image_ovftool_path']).to eq('fake_ovf_tool_path') + expect(result["image_ovftool_path"]).to eq("fake_ovf_tool_path") end end end - context 'when infrastructure is openstack' do - let(:infrastructure) { Infrastructure.for('openstack') } + context "when infrastructure is openstack" do + let(:infrastructure) { Infrastructure.for("openstack") } let(:default_disk_size) { 5120 } it_sets_correct_environment_variables it 'has no "image_ovftool_path" key' do - expect(stemcell_builder_options.default).not_to have_key('image_ovftool_path') + expect(stemcell_builder_options.default).not_to have_key("image_ovftool_path") end end - context 'when infrastruture is azure' do - let(:infrastructure) { Infrastructure.for('azure') } + context "when infrastruture is azure" do + let(:infrastructure) { Infrastructure.for("azure") } let(:default_disk_size) { 5120 } it_sets_correct_environment_variables it 'has no "image_ovftool_path" key' do - expect(stemcell_builder_options.default).not_to have_key('image_ovftool_path') + expect(stemcell_builder_options.default).not_to have_key("image_ovftool_path") end end end diff --git a/bosh-stemcell/spec/bosh/stemcell/definition_spec.rb b/bosh-stemcell/spec/bosh/stemcell/definition_spec.rb index 7552d48850..e6c0788c6f 100644 --- a/bosh-stemcell/spec/bosh/stemcell/definition_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/definition_spec.rb @@ -1,5 +1,5 @@ -require 'spec_helper' -require 'bosh/stemcell/definition' +require "spec_helper" +require "bosh/stemcell/definition" module Bosh::Stemcell describe Definition do @@ -7,63 +7,63 @@ module Bosh::Stemcell let(:infrastructure) do instance_double( - 'Bosh::Stemcell::Infrastructure::Base', - name: 'infrastructure-name', - hypervisor: 'hypervisor-name', - default_disk_format: 'default-disk-format' + "Bosh::Stemcell::Infrastructure::Base", + name: "infrastructure-name", + hypervisor: "hypervisor-name", + default_disk_format: "default-disk-format" ) end let(:hypervisor) { "hypervisor" } - let(:operating_system_version) { 'operating_system_version' } + let(:operating_system_version) { "operating_system_version" } let(:operating_system_variant) { nil } let(:operating_system) do instance_double( - 'Bosh::Stemcell::OperatingSystem::Base', - name: 'operating-system-name', + "Bosh::Stemcell::OperatingSystem::Base", + name: "operating-system-name", version: operating_system_version, - variant: operating_system_variant, + variant: operating_system_variant ) end - describe '.for' do - it 'sets the infrastructure, hypervisor, os, and os version' do + describe ".for" do + it "sets the infrastructure, hypervisor, os, and os version" do expect(Bosh::Stemcell::Infrastructure) .to receive(:for) - .with('infrastructure-name') - .and_return(infrastructure) + .with("infrastructure-name") + .and_return(infrastructure) expect(Bosh::Stemcell::OperatingSystem) .to receive(:for) - .with('operating-system-name', 'operating-system-version') - .and_return(operating_system) + .with("operating-system-name", "operating-system-version") + .and_return(operating_system) - definition = instance_double('Bosh::Stemcell::Definition') + definition = instance_double("Bosh::Stemcell::Definition") expect(Bosh::Stemcell::Definition) .to receive(:new) - .with(infrastructure, hypervisor, operating_system) - .and_return(definition) + .with(infrastructure, hypervisor, operating_system) + .and_return(definition) Bosh::Stemcell::Definition.for( - 'infrastructure-name', + "infrastructure-name", hypervisor, - 'operating-system-name', - 'operating-system-version' + "operating-system-name", + "operating-system-version" ) end end - describe '#initialize' do + describe "#initialize" do its(:infrastructure) { should == infrastructure } its(:operating_system) { should == operating_system } its(:hypervisor_name) { should == hypervisor } end - describe '#==' do - it 'compares by value instead of reference' do + describe "#==" do + it "compares by value instead of reference" do expect_eq = [ - %w(aws xen ubuntu 7), - %w(vsphere esxi ubuntu penguin), + %w[aws xen ubuntu 7], + %w[vsphere esxi ubuntu penguin] ] expect_eq.each do |tuple| @@ -71,7 +71,7 @@ module Bosh::Stemcell end expect_not_equal = [ - [['aws', 'xen', 'ubuntu', 'version'], ['vsphere', 'xen', 'ubuntu', 'version']], + [["aws", "xen", "ubuntu", "version"], ["vsphere", "xen", "ubuntu", "version"]] ] expect_not_equal.each do |left, right| expect(Definition.for(*left)).to_not eq(Definition.for(*right)) @@ -79,47 +79,47 @@ module Bosh::Stemcell end end - describe '#stemcell_name' do - it 'builds a name from the infrastructure, hypervisor, os, and disk format' do - expect(definition.stemcell_name('disk-format')).to eq( - 'infrastructure-name-hypervisor-operating-system-name-operating_system_version-go_agent-disk-format' + describe "#stemcell_name" do + it "builds a name from the infrastructure, hypervisor, os, and disk format" do + expect(definition.stemcell_name("disk-format")).to eq( + "infrastructure-name-hypervisor-operating-system-name-operating_system_version-go_agent-disk-format" ) end - context 'the os doesnt have a version' do + context "the os doesnt have a version" do let(:operating_system_version) { nil } - it 'leaves off the os version' do - expect(definition.stemcell_name('disk-format')).to eq( - 'infrastructure-name-hypervisor-operating-system-name-go_agent-disk-format' + it "leaves off the os version" do + expect(definition.stemcell_name("disk-format")).to eq( + "infrastructure-name-hypervisor-operating-system-name-go_agent-disk-format" ) end end - context 'the os has a variant' do - let(:operating_system_variant) { 'variant' } + context "the os has a variant" do + let(:operating_system_variant) { "variant" } - it 'leaves off the os version' do - expect(definition.stemcell_name('disk-format')).to eq( - 'infrastructure-name-hypervisor-operating-system-name-operating_system_version-variant-go_agent-disk-format' + it "leaves off the os version" do + expect(definition.stemcell_name("disk-format")).to eq( + "infrastructure-name-hypervisor-operating-system-name-operating_system_version-variant-go_agent-disk-format" ) end end - context 'the disk format is the default' do - it 'leaves it off' do - expect(definition.stemcell_name('default-disk-format')).to eq( - 'infrastructure-name-hypervisor-operating-system-name-operating_system_version-go_agent' + context "the disk format is the default" do + it "leaves it off" do + expect(definition.stemcell_name("default-disk-format")).to eq( + "infrastructure-name-hypervisor-operating-system-name-operating_system_version-go_agent" ) end end end - describe 'disk_formats' do - it 'delegates to infrastructure#disk_formats' do - expect(infrastructure).to receive(:disk_formats).and_return(['format1', 'format2']) + describe "disk_formats" do + it "delegates to infrastructure#disk_formats" do + expect(infrastructure).to receive(:disk_formats).and_return(["format1", "format2"]) - expect(definition.disk_formats).to eq(['format1', 'format2']) + expect(definition.disk_formats).to eq(["format1", "format2"]) end end end diff --git a/bosh-stemcell/spec/bosh/stemcell/disk_image_spec.rb b/bosh-stemcell/spec/bosh/stemcell/disk_image_spec.rb index 3f2013b890..e9d94a5975 100644 --- a/bosh-stemcell/spec/bosh/stemcell/disk_image_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/disk_image_spec.rb @@ -1,17 +1,17 @@ -require 'spec_helper' -require 'bosh/stemcell/disk_image' +require "spec_helper" +require "bosh/stemcell/disk_image" module Bosh::Stemcell describe DiskImage do - let(:shell) { instance_double('Bosh::Core::Shell', run: nil) } - let(:kpartx_map_output) { 'add map FAKE_LOOP1p1 (252:3): 0 3997984 linear /dev/loop1 63' } + let(:shell) { instance_double("Bosh::Core::Shell", run: nil) } + let(:kpartx_map_output) { "add map FAKE_LOOP1p1 (252:3): 0 3997984 linear /dev/loop1 63" } let(:kpartx_map_output_efi) { "add map FAKE_LOOP1p1 (252:3): 0 3997984 linear /dev/loop1 63\nadd map FAKE_LOOP1p2 (252:3): 0 3997984 linear /dev/loop1 63" } let(:options) do { - image_file_path: '/path/to/FAKE_IMAGE', - image_mount_point: '/fake/mnt' + image_file_path: "/path/to/FAKE_IMAGE", + image_mount_point: "/fake/mnt" } end @@ -21,56 +21,55 @@ module Bosh::Stemcell allow(Bosh::Core::Shell).to receive(:new).and_return(shell) end - describe '#initialize' do - it 'requires an image_file_path' do + describe "#initialize" do + it "requires an image_file_path" do options.delete(:image_file_path) expect { DiskImage.new(options) }.to raise_error(/key not found: :image_file_path/) end - it 'requires an mount_point' do + it "requires an mount_point" do options.delete(:image_mount_point) - dir_mock = class_double('Dir').as_stubbed_const - expect(dir_mock).to receive(:mktmpdir).and_return('/fake/tmpdir') + dir_mock = class_double("Dir").as_stubbed_const + expect(dir_mock).to receive(:mktmpdir).and_return("/fake/tmpdir") - expect(DiskImage.new(options).image_mount_point).to eq('/fake/tmpdir') + expect(DiskImage.new(options).image_mount_point).to eq("/fake/tmpdir") end end - describe '#mount' do - it 'maps the file to a loop device' do - losetup_commad = 'sudo losetup --show --find /path/to/FAKE_IMAGE' - allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return('/dev/loop0') - expect(shell).to receive(:run). - with('sudo kpartx -sav /dev/loop0', output_command: false).and_return(kpartx_map_output) + describe "#mount" do + it "maps the file to a loop device" do + losetup_commad = "sudo losetup --show --find /path/to/FAKE_IMAGE" + allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return("/dev/loop0") + expect(shell).to receive(:run) + .with("sudo kpartx -sav /dev/loop0", output_command: false).and_return(kpartx_map_output) disk_image.mount end - it 'mounts the loop device' do - losetup_commad = 'sudo losetup --show --find /path/to/FAKE_IMAGE' - allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return('/dev/loop0') - allow(shell).to receive(:run). - with('sudo kpartx -sav /dev/loop0', output_command: false).and_return(kpartx_map_output) - expect(shell).to receive(:run).with('sudo mount /dev/mapper/FAKE_LOOP1p1 /fake/mnt', output_command: false) + it "mounts the loop device" do + losetup_commad = "sudo losetup --show --find /path/to/FAKE_IMAGE" + allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return("/dev/loop0") + allow(shell).to receive(:run) + .with("sudo kpartx -sav /dev/loop0", output_command: false).and_return(kpartx_map_output) + expect(shell).to receive(:run).with("sudo mount /dev/mapper/FAKE_LOOP1p1 /fake/mnt", output_command: false) disk_image.mount end - - it 'mounts efi image on the loop device' do - losetup_commad = 'sudo losetup --show --find /path/to/FAKE_IMAGE' - allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return('/dev/loop0') - allow(shell).to receive(:run). - with('sudo kpartx -sav /dev/loop0', output_command: false).and_return(kpartx_map_output_efi) - expect(shell).to receive(:run).with('sudo mount /dev/mapper/FAKE_LOOP1p2 /fake/mnt', output_command: false) - expect(shell).to receive(:run).with('sudo mount -o umask=0177 /dev/mapper/FAKE_LOOP1p1 /fake/mnt/boot/efi', output_command: false) + it "mounts efi image on the loop device" do + losetup_commad = "sudo losetup --show --find /path/to/FAKE_IMAGE" + allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return("/dev/loop0") + allow(shell).to receive(:run) + .with("sudo kpartx -sav /dev/loop0", output_command: false).and_return(kpartx_map_output_efi) + expect(shell).to receive(:run).with("sudo mount /dev/mapper/FAKE_LOOP1p2 /fake/mnt", output_command: false) + expect(shell).to receive(:run).with("sudo mount -o umask=0177 /dev/mapper/FAKE_LOOP1p1 /fake/mnt/boot/efi", output_command: false) disk_image.mount end - context 'when the device does not exist' do - let(:mount_command) { 'sudo mount /dev/mapper/FAKE_LOOP1p1 /fake/mnt' } + context "when the device does not exist" do + let(:mount_command) { "sudo mount /dev/mapper/FAKE_LOOP1p1 /fake/mnt" } let(:mount_error) do "Failed: '#{mount_command}' from /fake/mnt/blah/blah/bosh-stemcell, with exit status 8192\n\n" end @@ -79,11 +78,11 @@ module Bosh::Stemcell allow(disk_image).to receive(:sleep) end - it 'runs mount a second time after sleeping long enough for the device node to be created' do - losetup_commad = 'sudo losetup --show --find /path/to/FAKE_IMAGE' - allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return('/dev/loop0') - allow(shell).to receive(:run). - with('sudo kpartx -sav /dev/loop0', output_command: false).and_return(kpartx_map_output) + it "runs mount a second time after sleeping long enough for the device node to be created" do + losetup_commad = "sudo losetup --show --find /path/to/FAKE_IMAGE" + allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return("/dev/loop0") + allow(shell).to receive(:run) + .with("sudo kpartx -sav /dev/loop0", output_command: false).and_return(kpartx_map_output) expect(shell).to receive(:run).with(mount_command, output_command: false).ordered.and_raise(mount_error) expect(disk_image).to receive(:sleep).with(0.5) expect(shell).to receive(:run).with(mount_command, output_command: false).ordered @@ -91,75 +90,75 @@ module Bosh::Stemcell disk_image.mount end - context 'when the second mount command fails' do - it 'raises an error' do - losetup_commad = 'sudo losetup --show --find /path/to/FAKE_IMAGE' - allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return('/dev/loop0') - allow(shell).to receive(:run). - with('sudo kpartx -sav /dev/loop0', output_command: false).and_return(kpartx_map_output) - expect(shell).to receive(:run). - with(mount_command, output_command: false).ordered.twice.and_raise(mount_error) + context "when the second mount command fails" do + it "raises an error" do + losetup_commad = "sudo losetup --show --find /path/to/FAKE_IMAGE" + allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return("/dev/loop0") + allow(shell).to receive(:run) + .with("sudo kpartx -sav /dev/loop0", output_command: false).and_return(kpartx_map_output) + expect(shell).to receive(:run) + .with(mount_command, output_command: false).ordered.twice.and_raise(mount_error) expect { disk_image.mount }.to raise_error(mount_error) end end end - context 'when the mount command fails' do - it 'runs mount a second time' do - losetup_commad = 'sudo losetup --show --find /path/to/FAKE_IMAGE' - allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return('/dev/loop0') - allow(shell).to receive(:run). - with('sudo kpartx -sav /dev/loop0', output_command: false).and_return(kpartx_map_output) - expect(shell).to receive(:run). - with('sudo mount /dev/mapper/FAKE_LOOP1p1 /fake/mnt', output_command: false).ordered. - and_raise(RuntimeError, 'UNEXEPECTED') - - expect { disk_image.mount }.to raise_error(RuntimeError, 'UNEXEPECTED') + context "when the mount command fails" do + it "runs mount a second time" do + losetup_commad = "sudo losetup --show --find /path/to/FAKE_IMAGE" + allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return("/dev/loop0") + allow(shell).to receive(:run) + .with("sudo kpartx -sav /dev/loop0", output_command: false).and_return(kpartx_map_output) + expect(shell).to receive(:run) + .with("sudo mount /dev/mapper/FAKE_LOOP1p1 /fake/mnt", output_command: false).ordered + .and_raise(RuntimeError, "UNEXEPECTED") + + expect { disk_image.mount }.to raise_error(RuntimeError, "UNEXEPECTED") end end end - describe '#unmount' do + describe "#unmount" do before do - allow(disk_image).to receive(:device).and_return('/dev/loop0') # pretend we've mounted + allow(disk_image).to receive(:device).and_return("/dev/loop0") # pretend we've mounted end - it 'unmounts the loop device and then unmaps the file' do - losetup_commad = 'sudo losetup --show --find /path/to/FAKE_IMAGE' - allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return('/dev/loop0') - expect(shell).to receive(:run). - with('sudo kpartx -sav /dev/loop0', output_command: false).and_return(kpartx_map_output) - expect(shell).to receive(:run).with('sudo umount /fake/mnt', output_command: false).ordered - expect(shell).to receive(:run).with('sudo kpartx -dv /dev/loop0', output_command: false).ordered - expect(shell).to receive(:run).with('sudo losetup -v -d /dev/loop0', output_command: false).ordered + it "unmounts the loop device and then unmaps the file" do + losetup_commad = "sudo losetup --show --find /path/to/FAKE_IMAGE" + allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return("/dev/loop0") + expect(shell).to receive(:run) + .with("sudo kpartx -sav /dev/loop0", output_command: false).and_return(kpartx_map_output) + expect(shell).to receive(:run).with("sudo umount /fake/mnt", output_command: false).ordered + expect(shell).to receive(:run).with("sudo kpartx -dv /dev/loop0", output_command: false).ordered + expect(shell).to receive(:run).with("sudo losetup -v -d /dev/loop0", output_command: false).ordered disk_image.unmount end - it 'unmounts efi image on the loop device and then unmaps the file' do - losetup_commad = 'sudo losetup --show --find /path/to/FAKE_IMAGE' - allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return('/dev/loop0') - expect(shell).to receive(:run). - with('sudo kpartx -sav /dev/loop0', output_command: false).and_return(kpartx_map_output_efi) - expect(shell).to receive(:run).with('sudo umount /fake/mnt', output_command: false).ordered - expect(shell).to receive(:run).with('sudo kpartx -dv /dev/loop0', output_command: false).ordered - expect(shell).to receive(:run).with('sudo losetup -v -d /dev/loop0', output_command: false).ordered + it "unmounts efi image on the loop device and then unmaps the file" do + losetup_commad = "sudo losetup --show --find /path/to/FAKE_IMAGE" + allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return("/dev/loop0") + expect(shell).to receive(:run) + .with("sudo kpartx -sav /dev/loop0", output_command: false).and_return(kpartx_map_output_efi) + expect(shell).to receive(:run).with("sudo umount /fake/mnt", output_command: false).ordered + expect(shell).to receive(:run).with("sudo kpartx -dv /dev/loop0", output_command: false).ordered + expect(shell).to receive(:run).with("sudo losetup -v -d /dev/loop0", output_command: false).ordered disk_image.unmount end - it 'unmaps the file even if unmounting the device fails' do - losetup_commad = 'sudo losetup --show --find /path/to/FAKE_IMAGE' - allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return('/dev/loop0') - expect(shell).to receive(:run). - with('sudo kpartx -sav /dev/loop0', output_command: false).and_return(kpartx_map_output) - expect(shell).to receive(:run).with('sudo umount /fake/mnt', output_command: false).and_raise - expect(shell).to receive(:run).with('sudo kpartx -dv /dev/loop0', output_command: false).ordered - expect(shell).to receive(:run).with('sudo losetup -v -d /dev/loop0', output_command: false).ordered + it "unmaps the file even if unmounting the device fails" do + losetup_commad = "sudo losetup --show --find /path/to/FAKE_IMAGE" + allow(shell).to receive(:run).with(losetup_commad, output_command: false).and_return("/dev/loop0") + expect(shell).to receive(:run) + .with("sudo kpartx -sav /dev/loop0", output_command: false).and_return(kpartx_map_output) + expect(shell).to receive(:run).with("sudo umount /fake/mnt", output_command: false).and_raise + expect(shell).to receive(:run).with("sudo kpartx -dv /dev/loop0", output_command: false).ordered + expect(shell).to receive(:run).with("sudo losetup -v -d /dev/loop0", output_command: false).ordered expect { disk_image.unmount }.to raise_error RuntimeError end end end -end \ No newline at end of file +end diff --git a/bosh-stemcell/spec/bosh/stemcell/helpers_sh_spec.rb b/bosh-stemcell/spec/bosh/stemcell/helpers_sh_spec.rb index 65d39bbee6..8268e8c47d 100644 --- a/bosh-stemcell/spec/bosh/stemcell/helpers_sh_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/helpers_sh_spec.rb @@ -1,70 +1,69 @@ -require 'spec_helper' +require "spec_helper" -context 'helpers.sh' do +context "helpers.sh" do before do skip "This spec requires linux" unless RUBY_PLATFORM.downcase.include?("linux") end - context 'add_on_exit runs cleanup commands in LIFO order' do + context "add_on_exit runs cleanup commands in LIFO order" do describe ShelloutTypes::Command.new( File.expand_path( - '../../../assets/on_exit_with_normal_completion.sh', + "../../../assets/on_exit_with_normal_completion.sh", __FILE__ ), - ShelloutTypes::Chroot.new('/') + ShelloutTypes::Chroot.new("/") ) do - it('describes the on_exit actions in that order') { expect(subject.stdout).to match < '/dev/sda1'}) + it "has aws specific additional cloud properties" do + expect(subject.additional_cloud_properties).to eq({"root_device_name" => "/dev/sda1"}) end end describe Infrastructure::Google do - its(:name) { should eq('google') } - its(:hypervisor) { should eq('kvm') } + its(:name) { should eq("google") } + its(:hypervisor) { should eq("kvm") } its(:default_disk_size) { should eq(5120) } - its(:disk_formats) { should eq(['rawdisk']) } - its(:stemcell_formats) { should eq(['google-rawdisk']) } + its(:disk_formats) { should eq(["rawdisk"]) } + its(:stemcell_formats) { should eq(["google-rawdisk"]) } - it { should eq Infrastructure.for('google') } - it { should_not eq Infrastructure.for('openstack') } + it { should eq Infrastructure.for("google") } + it { should_not eq Infrastructure.for("openstack") } - it 'has google specific additional cloud properties' do - expect(subject.additional_cloud_properties).to eq({'root_device_name' => '/dev/sda1'}) + it "has google specific additional cloud properties" do + expect(subject.additional_cloud_properties).to eq({"root_device_name" => "/dev/sda1"}) end end describe Infrastructure::OpenStack do - its(:name) { should eq('openstack') } - its(:hypervisor) { should eq('kvm') } + its(:name) { should eq("openstack") } + its(:hypervisor) { should eq("kvm") } its(:default_disk_size) { should eq(5120) } - its(:disk_formats) { should eq(['qcow2', 'raw']) } - its(:stemcell_formats) { should eq(['openstack-qcow2', 'openstack-raw']) } + its(:disk_formats) { should eq(["qcow2", "raw"]) } + its(:stemcell_formats) { should eq(["openstack-qcow2", "openstack-raw"]) } - it { should eq Infrastructure.for('openstack') } - it { should_not eq Infrastructure.for('vsphere') } + it { should eq Infrastructure.for("openstack") } + it { should_not eq Infrastructure.for("vsphere") } - it 'has openstack specific additional cloud properties' do - expect(subject.additional_cloud_properties).to eq({'auto_disk_config' => true}) + it "has openstack specific additional cloud properties" do + expect(subject.additional_cloud_properties).to eq({"auto_disk_config" => true}) end end describe Infrastructure::CloudStack do - its(:name) { should eq('cloudstack') } - its(:hypervisor) { should eq('xen') } + its(:name) { should eq("cloudstack") } + its(:hypervisor) { should eq("xen") } its(:default_disk_size) { should eq(5120) } - its(:disk_formats) {should eq(['vhdx'])} - its(:stemcell_formats) { should eq(['cloudstack-vhdx']) } + its(:disk_formats) { should eq(["vhdx"]) } + its(:stemcell_formats) { should eq(["cloudstack-vhdx"]) } - it { should eq Infrastructure.for('cloudstack') } - it { should_not eq Infrastructure.for('vsphere') } + it { should eq Infrastructure.for("cloudstack") } + it { should_not eq Infrastructure.for("vsphere") } - it 'has cloudstack specific additional cloud properties' do - expect(subject.additional_cloud_properties).to eq({'auto_disk_config' => true}) + it "has cloudstack specific additional cloud properties" do + expect(subject.additional_cloud_properties).to eq({"auto_disk_config" => true}) end end describe Infrastructure::Vsphere do - its(:name) { should eq('vsphere') } - its(:hypervisor) { should eq('esxi') } + its(:name) { should eq("vsphere") } + its(:hypervisor) { should eq("esxi") } its(:default_disk_size) { should eq(5120) } - its(:disk_formats) { should eq(['ovf']) } - its(:stemcell_formats) { should eq(['vsphere-ova', 'vsphere-ovf']) } + its(:disk_formats) { should eq(["ovf"]) } + its(:stemcell_formats) { should eq(["vsphere-ova", "vsphere-ovf"]) } - it { should eq Infrastructure.for('vsphere') } - it { should_not eq Infrastructure.for('aws') } + it { should eq Infrastructure.for("vsphere") } + it { should_not eq Infrastructure.for("aws") } - it 'has vsphere specific additional cloud properties' do - expect(subject.additional_cloud_properties).to eq({'root_device_name' => '/dev/sda1'}) + it "has vsphere specific additional cloud properties" do + expect(subject.additional_cloud_properties).to eq({"root_device_name" => "/dev/sda1"}) end end describe Infrastructure::Vcloud do - its(:name) { should eq('vcloud') } - its(:hypervisor) { should eq('esxi') } + its(:name) { should eq("vcloud") } + its(:hypervisor) { should eq("esxi") } its(:default_disk_size) { should eq(5120) } - its(:disk_formats) { should eq(['ovf']) } - its(:stemcell_formats) { should eq(['vcloud-ova', 'vcloud-ovf']) } + its(:disk_formats) { should eq(["ovf"]) } + its(:stemcell_formats) { should eq(["vcloud-ova", "vcloud-ovf"]) } - it { should eq Infrastructure.for('vcloud') } - it { should_not eq Infrastructure.for('vsphere') } + it { should eq Infrastructure.for("vcloud") } + it { should_not eq Infrastructure.for("vsphere") } - it 'has vcloud specific additional cloud properties' do - expect(subject.additional_cloud_properties).to eq({'root_device_name' => '/dev/sda1'}) + it "has vcloud specific additional cloud properties" do + expect(subject.additional_cloud_properties).to eq({"root_device_name" => "/dev/sda1"}) end end describe Infrastructure::Azure do - its(:name) { should eq('azure') } - its(:hypervisor) { should eq('hyperv') } + its(:name) { should eq("azure") } + its(:hypervisor) { should eq("hyperv") } its(:default_disk_size) { should eq(5120) } - its(:disk_formats) { should eq(['vhd']) } - its(:stemcell_formats) { should eq(['azure-vhd']) } + its(:disk_formats) { should eq(["vhd"]) } + its(:stemcell_formats) { should eq(["azure-vhd"]) } - it { should eq Infrastructure.for('azure') } - it { should_not eq Infrastructure.for('vcloud') } + it { should eq Infrastructure.for("azure") } + it { should_not eq Infrastructure.for("vcloud") } - it 'has azure specific additional cloud properties' do - expect(subject.additional_cloud_properties).to eq({'root_device_name' => '/dev/sda1'}) + it "has azure specific additional cloud properties" do + expect(subject.additional_cloud_properties).to eq({"root_device_name" => "/dev/sda1"}) end end describe Infrastructure::Softlayer do - its(:name) { should eq('softlayer') } - its(:hypervisor) { should eq('esxi') } + its(:name) { should eq("softlayer") } + its(:hypervisor) { should eq("esxi") } its(:default_disk_size) { should eq(25600) } - its(:disk_formats) { should eq(['ovf']) } - its(:stemcell_formats) { should eq(['softlayer-ovf']) } + its(:disk_formats) { should eq(["ovf"]) } + its(:stemcell_formats) { should eq(["softlayer-ovf"]) } - it { should eq Infrastructure.for('softlayer') } - it { should_not eq Infrastructure.for('vsphere') } + it { should eq Infrastructure.for("softlayer") } + it { should_not eq Infrastructure.for("vsphere") } - it 'has softlayer specific additional cloud properties' do - expect(subject.additional_cloud_properties).to eq({'root_device_name' => '/dev/sda1'}) + it "has softlayer specific additional cloud properties" do + expect(subject.additional_cloud_properties).to eq({"root_device_name" => "/dev/sda1"}) end end end diff --git a/bosh-stemcell/spec/bosh/stemcell/operating_system_spec.rb b/bosh-stemcell/spec/bosh/stemcell/operating_system_spec.rb index 2cf495e0ad..fba9bc768d 100644 --- a/bosh-stemcell/spec/bosh/stemcell/operating_system_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/operating_system_spec.rb @@ -1,61 +1,61 @@ -require 'spec_helper' -require 'bosh/stemcell/operating_system' +require "spec_helper" +require "bosh/stemcell/operating_system" module Bosh::Stemcell describe OperatingSystem do - describe '.for' do - it 'returns the correct infrastrcture' do - expect(OperatingSystem.for('ubuntu', 'penguin')).to be_a(OperatingSystem::Ubuntu) + describe ".for" do + it "returns the correct infrastrcture" do + expect(OperatingSystem.for("ubuntu", "penguin")).to be_a(OperatingSystem::Ubuntu) end - it 'raises for unknown operating system' do + it "raises for unknown operating system" do expect { - OperatingSystem.for('BAD_OPERATING_SYSTEM', 'BAD_OS_VERSION') + OperatingSystem.for("BAD_OPERATING_SYSTEM", "BAD_OS_VERSION") }.to raise_error(ArgumentError, /invalid operating system: BAD_OPERATING_SYSTEM/) end end end describe OperatingSystem::Base do - describe '#initialize' do - it 'requires :name to be specified' do + describe "#initialize" do + it "requires :name to be specified" do expect { OperatingSystem::Base.new - }.to raise_error /key not found: :name/ + }.to raise_error(/key not found: :name/) end - it 'requires :version to be specified' do + it "requires :version to be specified" do expect { - OperatingSystem::Base.new(name: 'CLOUDY_PONY_OS') - }.to raise_error /key not found: :version/ + OperatingSystem::Base.new(name: "CLOUDY_PONY_OS") + }.to raise_error(/key not found: :version/) end end - describe '#name' do - subject { OperatingSystem::Base.new(name: 'CLOUDY_PONY_OS', version: 'HORSESHOE') } + describe "#name" do + subject { OperatingSystem::Base.new(name: "CLOUDY_PONY_OS", version: "HORSESHOE") } - its(:name) { should eq('CLOUDY_PONY_OS') } + its(:name) { should eq("CLOUDY_PONY_OS") } end - describe '#version' do - subject { OperatingSystem::Base.new(name: 'CLOUDY_PONY_OS', version: 'HORSESHOE') } + describe "#version" do + subject { OperatingSystem::Base.new(name: "CLOUDY_PONY_OS", version: "HORSESHOE") } - its(:version) { should eq('HORSESHOE') } + its(:version) { should eq("HORSESHOE") } end - describe '#variant' do - subject { OperatingSystem::Base.new(name: 'CLOUDY_PONY_OS', version: 'HORSESHOE', variant: 'DONKYTAIL') } + describe "#variant" do + subject { OperatingSystem::Base.new(name: "CLOUDY_PONY_OS", version: "HORSESHOE", variant: "DONKYTAIL") } - its(:variant) { should eq('DONKYTAIL') } + its(:variant) { should eq("DONKYTAIL") } end end describe OperatingSystem::Ubuntu do - subject { OperatingSystem::Ubuntu.new('penguin-gentoo') } + subject { OperatingSystem::Ubuntu.new("penguin-gentoo") } - its(:name) { should eq('ubuntu') } - its(:version) { should eq('penguin') } - its(:variant) { should eq('gentoo') } - it { should eq OperatingSystem.for('ubuntu', 'penguin-gentoo') } + its(:name) { should eq("ubuntu") } + its(:version) { should eq("penguin") } + its(:variant) { should eq("gentoo") } + it { should eq OperatingSystem.for("ubuntu", "penguin-gentoo") } end end diff --git a/bosh-stemcell/spec/bosh/stemcell/os_image_builder_spec.rb b/bosh-stemcell/spec/bosh/stemcell/os_image_builder_spec.rb index c4ccc11284..e5d0575244 100644 --- a/bosh-stemcell/spec/bosh/stemcell/os_image_builder_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/os_image_builder_spec.rb @@ -1,9 +1,9 @@ -require 'spec_helper' -require 'bosh/stemcell/archive_handler' -require 'bosh/stemcell/build_environment' -require 'bosh/stemcell/stage_collection' -require 'bosh/stemcell/stage_runner' -require 'bosh/stemcell/os_image_builder' +require "spec_helper" +require "bosh/stemcell/archive_handler" +require "bosh/stemcell/build_environment" +require "bosh/stemcell/stage_collection" +require "bosh/stemcell/stage_runner" +require "bosh/stemcell/os_image_builder" describe Bosh::Stemcell::OsImageBuilder do subject(:builder) do @@ -11,32 +11,32 @@ environment: environment, collection: collection, runner: runner, - archive_handler: archive_handler, + archive_handler: archive_handler ) end - let(:environment) { instance_double('Bosh::Stemcell::BuildEnvironment', prepare_build: nil, chroot_dir: '/chroot') } - let(:collection) { instance_double('Bosh::Stemcell::StageCollection', operating_system_stages: nil) } - let(:runner) { instance_double('Bosh::Stemcell::StageRunner', configure_and_apply: nil) } - let(:archive_handler) { instance_double('Bosh::Stemcell::ArchiveHandler', compress: nil) } + let(:environment) { instance_double("Bosh::Stemcell::BuildEnvironment", prepare_build: nil, chroot_dir: "/chroot") } + let(:collection) { instance_double("Bosh::Stemcell::StageCollection", operating_system_stages: nil) } + let(:runner) { instance_double("Bosh::Stemcell::StageRunner", configure_and_apply: nil) } + let(:archive_handler) { instance_double("Bosh::Stemcell::ArchiveHandler", compress: nil) } - describe '#build' do - it 'prepares the build environment' do + describe "#build" do + it "prepares the build environment" do expect(environment).to receive(:prepare_build) - builder.build('/some/os_image_path.tgz') + builder.build("/some/os_image_path.tgz") end - it 'runs the operating system stages' do + it "runs the operating system stages" do allow(collection).to receive(:operating_system_stages).and_return([:some_stage]) expect(runner).to receive(:configure_and_apply).with([:some_stage], nil) - builder.build('/some/os_image_path.tgz') + builder.build("/some/os_image_path.tgz") end - it 'tars up the chroot dir' do - expect(archive_handler).to receive(:compress).with('/chroot', '/some/os_image_path.tgz') + it "tars up the chroot dir" do + expect(archive_handler).to receive(:compress).with("/chroot", "/some/os_image_path.tgz") - builder.build('/some/os_image_path.tgz') + builder.build("/some/os_image_path.tgz") end end end diff --git a/bosh-stemcell/spec/bosh/stemcell/stage_collection_spec.rb b/bosh-stemcell/spec/bosh/stemcell/stage_collection_spec.rb index 570ae19a2f..2375e003e9 100644 --- a/bosh-stemcell/spec/bosh/stemcell/stage_collection_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/stage_collection_spec.rb @@ -1,25 +1,25 @@ -require 'spec_helper' -require 'bosh/stemcell/arch' -require 'bosh/stemcell/stage_collection' +require "spec_helper" +require "bosh/stemcell/arch" +require "bosh/stemcell/stage_collection" module Bosh::Stemcell describe StageCollection do subject(:stage_collection) { StageCollection.new(definition) } let(:definition) do instance_double( - 'Bosh::Stemcell::Definition', + "Bosh::Stemcell::Definition", infrastructure: infrastructure, - operating_system: operating_system, + operating_system: operating_system ) end let(:agent) { double } let(:infrastructure) { double } let(:operating_system) { double } - describe '#operating_system_stages' do - let(:operating_system) { OperatingSystem.for('ubuntu') } + describe "#operating_system_stages" do + let(:operating_system) { OperatingSystem.for("ubuntu") } - it 'has the correct stages' do + it "has the correct stages" do expect(stage_collection.operating_system_stages).to eq( [ :base_debootstrap, @@ -49,39 +49,39 @@ module Bosh::Stemcell :escape_ctrl_alt_del, :bosh_audit_ubuntu, :bosh_log_audit_start, - :clean_machine_id, + :clean_machine_id ] ) end end - describe '#agent_stages' do + describe "#agent_stages" do let(:agent_stages) do [ :bosh_go_agent, :blobstore_clis, :logrotate_config, :dev_tools_config, - :static_libraries_config, + :static_libraries_config ] end - it 'returns the correct stages' do + it "returns the correct stages" do expect(stage_collection.agent_stages).to eq(agent_stages) end end - describe '#build_stemcell_image_stages' do + describe "#build_stemcell_image_stages" do let(:vmware_package_stemcell_steps) { [ :image_ovf_vmx, :image_ovf_generate, - :prepare_ovf_image_stemcell, + :prepare_ovf_image_stemcell ] } - context 'when using AWS' do - let(:infrastructure) { Infrastructure.for('aws') } + context "when using AWS" do + let(:infrastructure) { Infrastructure.for("aws") } let(:aws_build_stemcell_image_stages) { [ :system_network, @@ -96,24 +96,24 @@ module Bosh::Stemcell :image_create, :image_install_grub, :sbom_create, - :bosh_package_list, + :bosh_package_list ] } let(:aws_package_stemcell_stages) { [ - :prepare_raw_image_stemcell, + :prepare_raw_image_stemcell ] } - let(:operating_system) { OperatingSystem.for('ubuntu') } + let(:operating_system) { OperatingSystem.for("ubuntu") } - it 'returns the correct stages' do + it "returns the correct stages" do expect(stage_collection.build_stemcell_image_stages).to eq(aws_build_stemcell_image_stages) - expect(stage_collection.package_stemcell_stages('raw')).to eq(aws_package_stemcell_stages) + expect(stage_collection.package_stemcell_stages("raw")).to eq(aws_package_stemcell_stages) end end - context 'when using Alicloud' do - let(:infrastructure) { Infrastructure.for('alicloud') } + context "when using Alicloud" do + let(:infrastructure) { Infrastructure.for("alicloud") } let(:alicloud_build_stemcell_image_stages) { [ @@ -128,25 +128,25 @@ module Bosh::Stemcell :image_create, :image_install_grub, :sbom_create, - :bosh_package_list, + :bosh_package_list ] } let(:alicloud_package_stemcell_stages) { [ - :prepare_raw_image_stemcell, + :prepare_raw_image_stemcell ] } - let(:operating_system) { OperatingSystem.for('ubuntu') } + let(:operating_system) { OperatingSystem.for("ubuntu") } - it 'returns the correct stages' do + it "returns the correct stages" do expect(stage_collection.build_stemcell_image_stages).to eq(alicloud_build_stemcell_image_stages) - expect(stage_collection.package_stemcell_stages('raw')).to eq(alicloud_package_stemcell_stages) + expect(stage_collection.package_stemcell_stages("raw")).to eq(alicloud_package_stemcell_stages) end end - context 'when using Google' do - let(:infrastructure) { Infrastructure.for('google') } + context "when using Google" do + let(:infrastructure) { Infrastructure.for("google") } let(:google_build_stemcell_image_stages) { [ @@ -162,29 +162,29 @@ module Bosh::Stemcell :image_create, :image_install_grub, :sbom_create, - :bosh_package_list, + :bosh_package_list ] } let(:google_package_stemcell_stages) { [ - :prepare_rawdisk_image_stemcell, + :prepare_rawdisk_image_stemcell ] } - let(:operating_system) { OperatingSystem.for('ubuntu') } + let(:operating_system) { OperatingSystem.for("ubuntu") } - it 'returns the correct stages' do + it "returns the correct stages" do expect(stage_collection.build_stemcell_image_stages).to eq(google_build_stemcell_image_stages) - expect(stage_collection.package_stemcell_stages('rawdisk')).to eq(google_package_stemcell_stages) + expect(stage_collection.package_stemcell_stages("rawdisk")).to eq(google_package_stemcell_stages) end end - context 'when using OpenStack' do - let(:infrastructure) { Infrastructure.for('openstack') } - let(:operating_system) { OperatingSystem.for('ubuntu') } + context "when using OpenStack" do + let(:infrastructure) { Infrastructure.for("openstack") } + let(:operating_system) { OperatingSystem.for("ubuntu") } - it 'has the correct stages' do + it "has the correct stages" do expect(stage_collection.build_stemcell_image_stages).to eq( [ :system_network, @@ -199,22 +199,22 @@ module Bosh::Stemcell :image_create, :image_install_grub, :sbom_create, - :bosh_package_list, + :bosh_package_list ] ) - expect(stage_collection.package_stemcell_stages('qcow2')).to eq( + expect(stage_collection.package_stemcell_stages("qcow2")).to eq( [ - :prepare_qcow2_image_stemcell, + :prepare_qcow2_image_stemcell ] - ) + ) end end - context 'when using CloudStack' do - let(:infrastructure) { Infrastructure.for('cloudstack') } - let(:operating_system) { OperatingSystem.for('ubuntu') } + context "when using CloudStack" do + let(:infrastructure) { Infrastructure.for("cloudstack") } + let(:operating_system) { OperatingSystem.for("ubuntu") } - it 'has the correct stages' do + it "has the correct stages" do expect(stage_collection.build_stemcell_image_stages).to eq( [ :system_network, @@ -231,22 +231,22 @@ module Bosh::Stemcell :image_create, :image_install_grub, :sbom_create, - :bosh_package_list, + :bosh_package_list ] ) - expect(stage_collection.package_stemcell_stages('qcow2')).to eq( + expect(stage_collection.package_stemcell_stages("qcow2")).to eq( [ - :prepare_qcow2_image_stemcell, + :prepare_qcow2_image_stemcell ] - ) + ) end end - context 'when using vSphere' do - let(:infrastructure) { Infrastructure.for('vsphere') } - let(:operating_system) { OperatingSystem.for('ubuntu') } + context "when using vSphere" do + let(:infrastructure) { Infrastructure.for("vsphere") } + let(:operating_system) { OperatingSystem.for("ubuntu") } - it 'has the correct stages' do + it "has the correct stages" do expect(stage_collection.build_stemcell_image_stages).to eq( [ :system_network, @@ -262,20 +262,20 @@ module Bosh::Stemcell :image_create_efi, :image_install_grub_efi, :sbom_create, - :bosh_package_list, + :bosh_package_list ] ) - expect(stage_collection.package_stemcell_stages('ovf')).to eq(vmware_package_stemcell_steps) + expect(stage_collection.package_stemcell_stages("ovf")).to eq(vmware_package_stemcell_steps) end end - context 'when using vCloud' do - let(:infrastructure) { Infrastructure.for('vcloud') } + context "when using vCloud" do + let(:infrastructure) { Infrastructure.for("vcloud") } - context 'when operating system is Ubuntu' do - let(:operating_system) { OperatingSystem.for('ubuntu') } + context "when operating system is Ubuntu" do + let(:operating_system) { OperatingSystem.for("ubuntu") } - it 'has the correct stages' do + it "has the correct stages" do expect(stage_collection.build_stemcell_image_stages).to eq( [ :system_network, @@ -291,16 +291,16 @@ module Bosh::Stemcell :image_create_efi, :image_install_grub_efi, :sbom_create, - :bosh_package_list, - ] + :bosh_package_list + ] ) - expect(stage_collection.package_stemcell_stages('ovf')).to eq(vmware_package_stemcell_steps) + expect(stage_collection.package_stemcell_stages("ovf")).to eq(vmware_package_stemcell_steps) end end end - context 'when using Azure' do - let(:infrastructure) { Infrastructure.for('azure') } + context "when using Azure" do + let(:infrastructure) { Infrastructure.for("azure") } let(:azure_build_stemcell_image_stages) { [ @@ -317,30 +317,30 @@ module Bosh::Stemcell :image_create, :image_install_grub, :sbom_create, - :bosh_package_list, + :bosh_package_list ] } let(:azure_package_stemcell_stages) { [ - :prepare_vhd_image_stemcell, + :prepare_vhd_image_stemcell ] } - let(:operating_system) { OperatingSystem.for('ubuntu') } + let(:operating_system) { OperatingSystem.for("ubuntu") } - it 'returns the correct stages' do + it "returns the correct stages" do expect(stage_collection.build_stemcell_image_stages).to eq(azure_build_stemcell_image_stages) - expect(stage_collection.package_stemcell_stages('vhd')).to eq(azure_package_stemcell_stages) + expect(stage_collection.package_stemcell_stages("vhd")).to eq(azure_package_stemcell_stages) end end - context 'when using softlayer' do - let(:infrastructure) { Infrastructure.for('softlayer') } + context "when using softlayer" do + let(:infrastructure) { Infrastructure.for("softlayer") } - context 'when the operating system is Ubuntu' do - let(:operating_system) { OperatingSystem.for('ubuntu') } + context "when the operating system is Ubuntu" do + let(:operating_system) { OperatingSystem.for("ubuntu") } - it 'has the correct stages' do + it "has the correct stages" do expect(stage_collection.build_stemcell_image_stages).to eq( [ :system_network, @@ -357,16 +357,16 @@ module Bosh::Stemcell :restore_apt_sources, :image_create_softlayer_two_partitions, :image_install_grub_softlayer_two_partitions, - :bosh_package_list, + :bosh_package_list ] ) - expect(stage_collection.package_stemcell_stages('ovf')).to eq(vmware_package_stemcell_steps) + expect(stage_collection.package_stemcell_stages("ovf")).to eq(vmware_package_stemcell_steps) end end end - context 'when using Warden' do - let(:infrastructure) { Infrastructure.for('warden') } + context "when using Warden" do + let(:infrastructure) { Infrastructure.for("warden") } let(:build_stemcell_image_stages) { [ :system_parameters, @@ -378,19 +378,19 @@ module Bosh::Stemcell :image_create, :image_install_grub, :sbom_create, - :bosh_package_list, + :bosh_package_list ] } let(:package_stemcell_stages) { [ - :prepare_files_image_stemcell, + :prepare_files_image_stemcell ] } - let(:operating_system) { OperatingSystem.for('ubuntu') } + let(:operating_system) { OperatingSystem.for("ubuntu") } - it 'returns the correct stages' do + it "returns the correct stages" do expect(stage_collection.build_stemcell_image_stages).to eq(build_stemcell_image_stages) - expect(stage_collection.package_stemcell_stages('files')).to eq(package_stemcell_stages) + expect(stage_collection.package_stemcell_stages("files")).to eq(package_stemcell_stages) end end end diff --git a/bosh-stemcell/spec/bosh/stemcell/stage_runner_spec.rb b/bosh-stemcell/spec/bosh/stemcell/stage_runner_spec.rb index 27e227cdcd..9aade7c61e 100644 --- a/bosh-stemcell/spec/bosh/stemcell/stage_runner_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/stage_runner_spec.rb @@ -1,24 +1,24 @@ -require 'spec_helper' -require 'timecop' -require 'bosh/stemcell/stage_runner' +require "spec_helper" +require "timecop" +require "bosh/stemcell/stage_runner" module Bosh::Stemcell describe StageRunner do include FakeFS::SpecHelpers - let(:shell) { instance_double('Bosh::Core::Shell', run: nil) } + let(:shell) { instance_double("Bosh::Core::Shell", run: nil) } let(:stages) { [:stage_0, :stage_1] } - let(:build_path) { '/fake/path/to/build_dir' } - let(:command_env) { 'env FOO=bar' } - let(:settings_file) { '/fake/path/to/settings.bash' } - let(:work_path) { '/fake/path/to/work_dir/work' } + let(:build_path) { "/fake/path/to/build_dir" } + let(:command_env) { "env FOO=bar" } + let(:settings_file) { "/fake/path/to/settings.bash" } + let(:work_path) { "/fake/path/to/work_dir/work" } subject(:stage_runner) do described_class.new(build_path: build_path, - command_env: command_env, - settings_file: settings_file, - work_path: work_path) + command_env: command_env, + settings_file: settings_file, + work_path: work_path) end before do @@ -27,117 +27,117 @@ module Bosh::Stemcell allow(stage_runner).to receive(:puts) end - describe '#initialize' do - it 'requires :build_path' do + describe "#initialize" do + it "requires :build_path" do expect { - StageRunner.new(stages: 'FAKE', command_env: 'FAKE', settings_file: 'FAKE', work_path: 'FAKE') - }.to raise_error('key not found: :build_path') + StageRunner.new(stages: "FAKE", command_env: "FAKE", settings_file: "FAKE", work_path: "FAKE") + }.to raise_error("key not found: :build_path") end - it 'requires :command_env' do + it "requires :command_env" do expect { - StageRunner.new(stages: 'FAKE', build_path: 'FAKE', settings_file: 'FAKE', work_path: 'FAKE') - }.to raise_error('key not found: :command_env') + StageRunner.new(stages: "FAKE", build_path: "FAKE", settings_file: "FAKE", work_path: "FAKE") + }.to raise_error("key not found: :command_env") end - it 'requires :settings_file' do + it "requires :settings_file" do expect { - StageRunner.new(stages: 'FAKE', build_path: 'FAKE', command_env: 'FAKE', work_path: 'FAKE') - }.to raise_error('key not found: :settings_file') + StageRunner.new(stages: "FAKE", build_path: "FAKE", command_env: "FAKE", work_path: "FAKE") + }.to raise_error("key not found: :settings_file") end - it 'requires :work_path' do + it "requires :work_path" do expect { - StageRunner.new(stages: 'FAKE', build_path: 'FAKE', command_env: 'FAKE', settings_file: 'FAKE') - }.to raise_error('key not found: :work_path') + StageRunner.new(stages: "FAKE", build_path: "FAKE", command_env: "FAKE", settings_file: "FAKE") + }.to raise_error("key not found: :work_path") end end - describe '#configure' do + describe "#configure" do before do stages.each do |stage| - stage_dir = File.join(File.join(build_path, 'stages'), stage.to_s) + stage_dir = File.join(File.join(build_path, "stages"), stage.to_s) FileUtils.mkdir_p(stage_dir) - config_script = File.join(stage_dir, 'config.sh') + config_script = File.join(stage_dir, "config.sh") FileUtils.touch(config_script) - File.chmod(0700, config_script) + File.chmod(0o700, config_script) end allow(File).to receive(:executable?).and_return(true) # because FakeFs does not support :executable? end - it 'runs the configure script for each stage in order' do - expect(shell).to receive(:run). - with('sudo env FOO=bar /fake/path/to/build_dir/stages/stage_0/config.sh /fake/path/to/settings.bash 2>&1', - { output_command: true }) - expect(shell).to receive(:run). - with('sudo env FOO=bar /fake/path/to/build_dir/stages/stage_1/config.sh /fake/path/to/settings.bash 2>&1', - { output_command: true }) + it "runs the configure script for each stage in order" do + expect(shell).to receive(:run) + .with("sudo env FOO=bar /fake/path/to/build_dir/stages/stage_0/config.sh /fake/path/to/settings.bash 2>&1", + {output_command: true}) + expect(shell).to receive(:run) + .with("sudo env FOO=bar /fake/path/to/build_dir/stages/stage_1/config.sh /fake/path/to/settings.bash 2>&1", + {output_command: true}) stage_runner.configure(stages) end - context 'when a stage does not have a config.sh file' do + context "when a stage does not have a config.sh file" do before do - FileUtils.rm('/fake/path/to/build_dir/stages/stage_0/config.sh') + FileUtils.rm("/fake/path/to/build_dir/stages/stage_0/config.sh") end - it 'does not attempt to run the configure step which is missing a config.sh' do - expect(shell).not_to receive(:run). - with('sudo env FOO=bar /fake/path/to/build_dir/stages/stage_0/config.sh /fake/path/to/settings.bash 2>&1', - { output_command: true }) - expect(shell).to receive(:run). - with('sudo env FOO=bar /fake/path/to/build_dir/stages/stage_1/config.sh /fake/path/to/settings.bash 2>&1', - { output_command: true }) + it "does not attempt to run the configure step which is missing a config.sh" do + expect(shell).not_to receive(:run) + .with("sudo env FOO=bar /fake/path/to/build_dir/stages/stage_0/config.sh /fake/path/to/settings.bash 2>&1", + {output_command: true}) + expect(shell).to receive(:run) + .with("sudo env FOO=bar /fake/path/to/build_dir/stages/stage_1/config.sh /fake/path/to/settings.bash 2>&1", + {output_command: true}) stage_runner.configure(stages) end end - context 'when a stage has config.sh file which is not executable' do + context "when a stage has config.sh file which is not executable" do before do - allow(File).to receive(:executable?). - with('/fake/path/to/build_dir/stages/stage_1/config.sh').and_return(false) + allow(File).to receive(:executable?) + .with("/fake/path/to/build_dir/stages/stage_1/config.sh").and_return(false) end - it 'does not attempt to run the configure step which has a non-executable config.sh' do - expect(shell).to receive(:run). - with('sudo env FOO=bar /fake/path/to/build_dir/stages/stage_0/config.sh /fake/path/to/settings.bash 2>&1', - { output_command: true }) - expect(shell).not_to receive(:run). - with('sudo env FOO=bar /fake/path/to/build_dir/stages/stage_1/config.sh /fake/path/to/settings.bash 2>&1', - { output_command: true }) + it "does not attempt to run the configure step which has a non-executable config.sh" do + expect(shell).to receive(:run) + .with("sudo env FOO=bar /fake/path/to/build_dir/stages/stage_0/config.sh /fake/path/to/settings.bash 2>&1", + {output_command: true}) + expect(shell).not_to receive(:run) + .with("sudo env FOO=bar /fake/path/to/build_dir/stages/stage_1/config.sh /fake/path/to/settings.bash 2>&1", + {output_command: true}) stage_runner.configure(stages) end end end - describe '#apply' do - it 'runs the apply script for each stage in order' do + describe "#apply" do + it "runs the apply script for each stage in order" do expect(FileUtils).to receive(:mkdir_p).with(work_path).exactly(2).times - expect(shell).to receive(:run). - with('sudo env FOO=bar /fake/path/to/build_dir/stages/stage_0/apply.sh /fake/path/to/work_dir/work 2>&1', - { output_command: true }) - expect(shell).to receive(:run). - with('sudo env FOO=bar /fake/path/to/build_dir/stages/stage_1/apply.sh /fake/path/to/work_dir/work 2>&1', - { output_command: true }) + expect(shell).to receive(:run) + .with("sudo env FOO=bar /fake/path/to/build_dir/stages/stage_0/apply.sh /fake/path/to/work_dir/work 2>&1", + {output_command: true}) + expect(shell).to receive(:run) + .with("sudo env FOO=bar /fake/path/to/build_dir/stages/stage_1/apply.sh /fake/path/to/work_dir/work 2>&1", + {output_command: true}) stage_runner.apply(stages) end end - describe '#configure_and_apply' do + describe "#configure_and_apply" do before do stages.each do |stage| - stage_dir = File.join(File.join(build_path, 'stages'), stage.to_s) + stage_dir = File.join(File.join(build_path, "stages"), stage.to_s) FileUtils.mkdir_p(stage_dir) - config_script = File.join(stage_dir, 'config.sh') + config_script = File.join(stage_dir, "config.sh") FileUtils.touch(config_script) - File.chmod(0700, config_script) + File.chmod(0o700, config_script) end allow(File).to receive(:executable?).and_return(true) # because FakeFs does not support :executable? @@ -146,32 +146,32 @@ module Bosh::Stemcell allow(Process).to receive(:euid).and_return(1000) end - context 'when resume_from is set' do - it 'skips stages before resume_from ' do + context "when resume_from is set" do + it "skips stages before resume_from " do expect(FileUtils).to receive(:mkdir_p).with(work_path).exactly(1).times - expect(shell).to_not receive(:run). - with('sudo env FOO=bar /fake/path/to/build_dir/stages/stage_0/config.sh /fake/path/to/settings.bash 2>&1', - { output_command: true }) - expect(shell).to receive(:run). - with('sudo env FOO=bar /fake/path/to/build_dir/stages/stage_1/config.sh /fake/path/to/settings.bash 2>&1', - { output_command: true }) - - expect(shell).to_not receive(:run). - with('sudo env FOO=bar /fake/path/to/build_dir/stages/stage_0/apply.sh /fake/path/to/work_dir/work 2>&1', - { output_command: true }) - expect(shell).to receive(:run). - with('sudo env FOO=bar /fake/path/to/build_dir/stages/stage_1/apply.sh /fake/path/to/work_dir/work 2>&1', - { output_command: true }) - - stage_runner.configure_and_apply(stages, 'stage_1') + expect(shell).to_not receive(:run) + .with("sudo env FOO=bar /fake/path/to/build_dir/stages/stage_0/config.sh /fake/path/to/settings.bash 2>&1", + {output_command: true}) + expect(shell).to receive(:run) + .with("sudo env FOO=bar /fake/path/to/build_dir/stages/stage_1/config.sh /fake/path/to/settings.bash 2>&1", + {output_command: true}) + + expect(shell).to_not receive(:run) + .with("sudo env FOO=bar /fake/path/to/build_dir/stages/stage_0/apply.sh /fake/path/to/work_dir/work 2>&1", + {output_command: true}) + expect(shell).to receive(:run) + .with("sudo env FOO=bar /fake/path/to/build_dir/stages/stage_1/apply.sh /fake/path/to/work_dir/work 2>&1", + {output_command: true}) + + stage_runner.configure_and_apply(stages, "stage_1") end end - context 'when resume_from is set to an unknown stage name' do - it 'raises an error' do + context "when resume_from is set to an unknown stage name" do + it "raises an error" do expect { - stage_runner.configure_and_apply(stages, 'this_stage_totally_doesnt_exist') + stage_runner.configure_and_apply(stages, "this_stage_totally_doesnt_exist") }.to raise_error("Can't find stage 'this_stage_totally_doesnt_exist' to resume from. Aborting.") end end diff --git a/bosh-stemcell/spec/bosh/stemcell/stemcell_builder_spec.rb b/bosh-stemcell/spec/bosh/stemcell/stemcell_builder_spec.rb index ff8216b635..013ea462e4 100644 --- a/bosh-stemcell/spec/bosh/stemcell/stemcell_builder_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/stemcell_builder_spec.rb @@ -1,10 +1,10 @@ -require 'spec_helper' -require 'bosh/stemcell/stemcell_builder' -require 'bosh/stemcell/build_environment' -require 'bosh/stemcell/stage_collection' -require 'bosh/stemcell/stage_runner' -require 'bosh/stemcell/stemcell_packager' -require 'yaml' +require "spec_helper" +require "bosh/stemcell/stemcell_builder" +require "bosh/stemcell/build_environment" +require "bosh/stemcell/stage_collection" +require "bosh/stemcell/stage_runner" +require "bosh/stemcell/stemcell_packager" +require "yaml" describe Bosh::Stemcell::StemcellBuilder do subject(:builder) do @@ -16,30 +16,30 @@ ) end - let(:packager) { instance_double('Bosh::Stemcell::StemcellPackager') } + let(:packager) { instance_double("Bosh::Stemcell::StemcellPackager") } let(:env) { {} } let(:infrastructure) do Bosh::Stemcell::Infrastructure::Base.new( - name: 'fake_infra', - hypervisor: 'fake_hypervisor', + name: "fake_infra", + hypervisor: "fake_hypervisor", default_disk_size: -1, - disk_formats: ['qcow2', 'raw'], - stemcell_formats: ['stemcell-format-a', 'stemcell-format-b'], + disk_formats: ["qcow2", "raw"], + stemcell_formats: ["stemcell-format-a", "stemcell-format-b"] ) end - let(:operating_system) { Bosh::Stemcell::OperatingSystem.for('ubuntu') } + let(:operating_system) { Bosh::Stemcell::OperatingSystem.for("ubuntu") } let(:definition) do Bosh::Stemcell::Definition.new( infrastructure, - 'fake_hypervisor', + "fake_hypervisor", operating_system ) end let(:version) { 1234 } - let(:os_image_tarball_path) { '/path/to/os-img.tgz' } - let(:gem_components) { double('Bosh::Dev::GemComponents', build_release_gems: nil) } + let(:os_image_tarball_path) { "/path/to/os-img.tgz" } + let(:gem_components) { double("Bosh::Dev::GemComponents", build_release_gems: nil) } let(:environment) do Bosh::Stemcell::BuildEnvironment.new( env, @@ -51,14 +51,14 @@ let(:collection) do instance_double( - 'Bosh::Stemcell::StageCollection', + "Bosh::Stemcell::StageCollection", extract_operating_system_stages: [:extract_stage], build_stemcell_image_stages: [:build_stage], package_stemcell_stages: [:package_stage], - agent_stages: [:agent_stage], + agent_stages: [:agent_stage] ) end - let(:runner) { instance_double('Bosh::Stemcell::StageRunner', configure_and_apply: nil) } + let(:runner) { instance_double("Bosh::Stemcell::StageRunner", configure_and_apply: nil) } let(:tmp_dir) { Dir.mktmpdir } before do allow(environment).to receive(:prepare_build) @@ -66,16 +66,16 @@ end after { FileUtils.rm_rf(tmp_dir) } - describe '#build' do + describe "#build" do before { allow(packager).to receive(:package) } before { allow(collection).to receive(:kernel_stages).and_return([]) } - it 'prepares the build environment' do + it "prepares the build environment" do expect(environment).to receive(:prepare_build) builder.build end - it 'runs the extract OS, agent, and infrastructure stages' do + it "runs the extract OS, agent, and infrastructure stages" do expect(runner).to receive(:configure_and_apply).with([:extract_stage, :agent_stage, :build_stage], nil) builder.build diff --git a/bosh-stemcell/spec/bosh/stemcell/stemcell_packager_spec.rb b/bosh-stemcell/spec/bosh/stemcell/stemcell_packager_spec.rb index 496fe0f590..a7edc31c90 100644 --- a/bosh-stemcell/spec/bosh/stemcell/stemcell_packager_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/stemcell_packager_spec.rb @@ -1,168 +1,169 @@ -require 'spec_helper' -require 'bosh/stemcell/stemcell_packager' -require 'bosh/stemcell/stage_collection' -require 'bosh/stemcell/stage_runner' -require 'bosh/stemcell/definition' -require 'bosh/stemcell/archive_filename' -require 'yaml' +require "spec_helper" +require "bosh/stemcell/stemcell_packager" +require "bosh/stemcell/stage_collection" +require "bosh/stemcell/stage_runner" +require "bosh/stemcell/definition" +require "bosh/stemcell/archive_filename" +require "yaml" + +class FakeInfrastructure < Bosh::Stemcell::Infrastructure::Base + def additional_cloud_properties + {"fake_infra_specific_property" => "some_value"} + end +end describe Bosh::Stemcell::StemcellPackager do subject(:packager) do Bosh::Stemcell::StemcellPackager.new( - definition: definition, - version: version, - work_path: work_dir, - tarball_path: tarball_dir, - disk_size: disk_size, - runner: runner, - collection: collection, + definition: definition, + version: version, + work_path: work_dir, + tarball_path: tarball_dir, + disk_size: disk_size, + runner: runner, + collection: collection ) end - class FakeInfrastructure < Bosh::Stemcell::Infrastructure::Base - def additional_cloud_properties - { 'fake_infra_specific_property' => 'some_value'} - end - end - - let(:runner) { instance_double('Bosh::Stemcell::StageRunner') } + let(:runner) { instance_double("Bosh::Stemcell::StageRunner") } let(:collection) { Bosh::Stemcell::StageCollection.new(definition) } let(:env) { {} } let(:infrastructure) do FakeInfrastructure.new( - name: 'fake_infra', - hypervisor: 'fake_hypervisor', + name: "fake_infra", + hypervisor: "fake_hypervisor", default_disk_size: -1, - disk_formats: ['qcow2', 'raw'], - stemcell_formats: ['stemcell-format-a', 'stemcell-format-b'] + disk_formats: ["qcow2", "raw"], + stemcell_formats: ["stemcell-format-a", "stemcell-format-b"] ) end - let(:operating_system) { Bosh::Stemcell::OperatingSystem.for('ubuntu', 'jammy') } + let(:operating_system) { Bosh::Stemcell::OperatingSystem.for("ubuntu", "jammy") } let(:definition) do Bosh::Stemcell::Definition.new( infrastructure, - 'fake_hypervisor', + "fake_hypervisor", operating_system ) end let(:version) { 1234 } - let(:release_tarball_path) { '/path/to/release.tgz' } - let(:os_image_tarball_path) { '/path/to/os-img.tgz' } - let(:gem_components) { double('Bosh::Dev::GemComponents', build_release_gems: nil) } + let(:release_tarball_path) { "/path/to/release.tgz" } + let(:os_image_tarball_path) { "/path/to/os-img.tgz" } + let(:gem_components) { double("Bosh::Dev::GemComponents", build_release_gems: nil) } let(:collection) do instance_double( - 'Bosh::Stemcell::StageCollection', + "Bosh::Stemcell::StageCollection", extract_operating_system_stages: [:extract_stage], build_stemcell_image_stages: [:build_stage], package_stemcell_stages: [:package_stage], - agent_stages: [:agent_stage], + agent_stages: [:agent_stage] ) end let(:tmp_dir) { Dir.mktmpdir } - let(:work_dir) { File.join(tmp_dir, 'stemcell-work').tap {|f| FileUtils.mkdir_p(f)} } - let(:tarball_dir) { File.join(tmp_dir, 'tarballs').tap {|f| FileUtils.mkdir_p(f)} } + let(:work_dir) { File.join(tmp_dir, "stemcell-work").tap { |f| FileUtils.mkdir_p(f) } } + let(:tarball_dir) { File.join(tmp_dir, "tarballs").tap { |f| FileUtils.mkdir_p(f) } } let(:disk_size) { 4096 } before do - FileUtils.mkdir_p(File.join(work_dir, 'stemcell')) + FileUtils.mkdir_p(File.join(work_dir, "stemcell")) allow(runner).to receive(:configure_and_apply) do - image_file = File.join(work_dir, 'stemcell/image') - raise 'this step fails if the image already exists!' if File.exist?(image_file) + image_file = File.join(work_dir, "stemcell/image") + raise "this step fails if the image already exists!" if File.exist?(image_file) File.write(image_file, "i'm an image!") end - packages = File.join(work_dir, 'stemcell/packages.txt') - File.write(packages, 'i am stemcell dpkg_l') - dev_tools_file_list = File.join(work_dir, 'stemcell/dev_tools_file_list.txt') - File.write(dev_tools_file_list, 'i am dev_tools_file_list') - spdx_sbom = File.join(work_dir, 'stemcell/sbom.spdx.json') - File.write(spdx_sbom, 'i am spdx sbom') - cyclonedx_sbom = File.join(work_dir, 'stemcell/sbom.cdx.json') - File.write(cyclonedx_sbom, 'i am cyclonedx sbom') + packages = File.join(work_dir, "stemcell/packages.txt") + File.write(packages, "i am stemcell dpkg_l") + dev_tools_file_list = File.join(work_dir, "stemcell/dev_tools_file_list.txt") + File.write(dev_tools_file_list, "i am dev_tools_file_list") + spdx_sbom = File.join(work_dir, "stemcell/sbom.spdx.json") + File.write(spdx_sbom, "i am spdx sbom") + cyclonedx_sbom = File.join(work_dir, "stemcell/sbom.cdx.json") + File.write(cyclonedx_sbom, "i am cyclonedx sbom") end after { FileUtils.rm_rf(tmp_dir) } - describe '#package' do - let(:disk_format) { 'qcow2' } + describe "#package" do + let(:disk_format) { "qcow2" } - it 'invokes packaging stages appropriate for the disk format' do - allow(collection).to receive(:package_stemcell_stages).with('qcow2').and_return([:package_qcow2]) + it "invokes packaging stages appropriate for the disk format" do + allow(collection).to receive(:package_stemcell_stages).with("qcow2").and_return([:package_qcow2]) expect(runner).to receive(:configure_and_apply).with([:package_qcow2]) packager.package(disk_format) end - it 'writes a stemcell.MF containing metadata' do - packager.package('raw') + it "writes a stemcell.MF containing metadata" do + packager.package("raw") - actual_manifest = YAML.load_file(File.join(work_dir, 'stemcell/stemcell.MF')) + actual_manifest = YAML.load_file(File.join(work_dir, "stemcell/stemcell.MF")) - architecture = 'x86_64' + architecture = "x86_64" expect(actual_manifest).to eq({ - 'name' => 'bosh-fake_infra-fake_hypervisor-ubuntu-jammy-go_agent-raw', - 'version' => '1234', - 'bosh_protocol' => 1, - 'api_version' => 3, - 'sha1' => 'c1ebdefc3f8282a9d7d47803fb5030b61ffc793d', # SHA-1 of image above - 'operating_system' => 'ubuntu-jammy', - 'stemcell_formats' => ['stemcell-format-a', 'stemcell-format-b'], - 'cloud_properties' => { - 'name' => 'bosh-fake_infra-fake_hypervisor-ubuntu-jammy-go_agent-raw', - 'version' => '1234', - 'infrastructure' => 'fake_infra', - 'hypervisor' => 'fake_hypervisor', - 'disk' => 4096, - 'disk_format' => 'raw', - 'container_format' => 'bare', - 'os_type' => 'linux', - 'os_distro' => 'ubuntu', - 'architecture' => architecture, - 'fake_infra_specific_property' => 'some_value' + "name" => "bosh-fake_infra-fake_hypervisor-ubuntu-jammy-go_agent-raw", + "version" => "1234", + "bosh_protocol" => 1, + "api_version" => 3, + "sha1" => "c1ebdefc3f8282a9d7d47803fb5030b61ffc793d", # SHA-1 of image above + "operating_system" => "ubuntu-jammy", + "stemcell_formats" => ["stemcell-format-a", "stemcell-format-b"], + "cloud_properties" => { + "name" => "bosh-fake_infra-fake_hypervisor-ubuntu-jammy-go_agent-raw", + "version" => "1234", + "infrastructure" => "fake_infra", + "hypervisor" => "fake_hypervisor", + "disk" => 4096, + "disk_format" => "raw", + "container_format" => "bare", + "os_type" => "linux", + "os_distro" => "ubuntu", + "architecture" => architecture, + "fake_infra_specific_property" => "some_value" } }) end - it 'returns the path of the created tarball' do + it "returns the path of the created tarball" do expect(packager.package(disk_format)).to eq( - File.join(tarball_dir, "bosh-stemcell-1234-fake_infra-fake_hypervisor-ubuntu-jammy-go_agent.tgz")) + File.join(tarball_dir, "bosh-stemcell-1234-fake_infra-fake_hypervisor-ubuntu-jammy-go_agent.tgz") + ) end - context 'if an image already exist in the stemcell dir' do + context "if an image already exist in the stemcell dir" do before do - FileUtils.mkdir_p(File.join(work_dir, 'stemcell')) - File.write(File.join(work_dir, 'stemcell/image'), 'bad image!') + FileUtils.mkdir_p(File.join(work_dir, "stemcell")) + File.write(File.join(work_dir, "stemcell/image"), "bad image!") end - it 'deletes it first so that applying the package_stemcell_stages doesnt blow up' do + it "deletes it first so that applying the package_stemcell_stages doesnt blow up" do expect { packager.package(disk_format) }.not_to raise_error end end - it 'archives the working dir' do + it "archives the working dir" do packager.package(disk_format) tarball_path = File.join(tarball_dir, "bosh-stemcell-1234-fake_infra-fake_hypervisor-ubuntu-jammy-go_agent.tgz") expect(File.exist?(tarball_path)).to eq(true) - stemcell_contents_path = File.join(tmp_dir, 'stemcell-contents') + stemcell_contents_path = File.join(tmp_dir, "stemcell-contents") FileUtils.mkdir_p(stemcell_contents_path) Dir.chdir(stemcell_contents_path) do Open3.capture3("tar xfz #{tarball_path}") end - extracted_image_path = File.join(stemcell_contents_path, 'image') + extracted_image_path = File.join(stemcell_contents_path, "image") expect(File.exist?(extracted_image_path)).to eq(true) expect(File.read(extracted_image_path)).to eq("i'm an image!") - actual_manifest = File.read(File.join(work_dir, 'stemcell/stemcell.MF')) - extracted_stemcell_mf = File.join(stemcell_contents_path, 'stemcell.MF') + actual_manifest = File.read(File.join(work_dir, "stemcell/stemcell.MF")) + extracted_stemcell_mf = File.join(stemcell_contents_path, "stemcell.MF") expect(File.exist?(extracted_stemcell_mf)).to eq(true) expect(File.read(extracted_stemcell_mf)).to eq(actual_manifest) end - it 'stemcell tarball contains files in proper order' do + it "stemcell tarball contains files in proper order" do packager.package(disk_format) tarball_path = File.join(tarball_dir, "bosh-stemcell-1234-fake_infra-fake_hypervisor-ubuntu-jammy-go_agent.tgz") @@ -177,26 +178,26 @@ def additional_cloud_properties sbom.spdx.json sbom.cdx.json ' - ) +) end - it 'fails if necessary files are not found in the stemcell working directory' do + it "fails if necessary files are not found in the stemcell working directory" do _, _, status = Open3.capture3("rm -f #{work_dir}/stemcell/dev_tools_file_list.txt #{work_dir}/stemcell/packages.txt") expect(status.success?).to be(true) - expect{ packager.package(disk_format) }.to raise_error(/Files are missing from stemcell directory: packages.txt dev_tools_file_list.txt/) + expect { packager.package(disk_format) }.to raise_error(/Files are missing from stemcell directory: packages.txt dev_tools_file_list.txt/) end - it 'fails if additional files are found in the stemcell working director' do - File.open("#{work_dir}/stemcell/my-extra-file", 'w') {} + it "fails if additional files are found in the stemcell working director" do + File.open("#{work_dir}/stemcell/my-extra-file", "w") {} - expect{ packager.package(disk_format) }.to raise_error(/Extra files found in stemcell directory: my-extra-file/) + expect { packager.package(disk_format) }.to raise_error(/Extra files found in stemcell directory: my-extra-file/) end - context 'when disk format is not the default for the infrastructure' do - let(:disk_format) { 'raw' } + context "when disk format is not the default for the infrastructure" do + let(:disk_format) { "raw" } - it 'archives the working dir with a different tarball name' do + it "archives the working dir with a different tarball name" do packager.package(disk_format) tarball_path = File.join(tarball_dir, "bosh-stemcell-1234-fake_infra-fake_hypervisor-ubuntu-jammy-go_agent-raw.tgz") @@ -204,22 +205,22 @@ def additional_cloud_properties end end - context 'when packaging a non standard os variant' do - let(:operating_system) { Bosh::Stemcell::OperatingSystem.for('ubuntu', 'FOO-fips') } + context "when packaging a non standard os variant" do + let(:operating_system) { Bosh::Stemcell::OperatingSystem.for("ubuntu", "FOO-fips") } - it 'archives the working dir with a different tarball name' do + it "archives the working dir with a different tarball name" do packager.package(disk_format) tarball_path = File.join(tarball_dir, "bosh-stemcell-1234-fake_infra-fake_hypervisor-ubuntu-FOO-fips-go_agent.tgz") expect(File.exist?(tarball_path)).to eq(true) end - it 'writes the variant into the stemcell.MF' do - packager.package('raw') + it "writes the variant into the stemcell.MF" do + packager.package("raw") - actual_manifest = YAML.load_file(File.join(work_dir, 'stemcell/stemcell.MF')) + actual_manifest = YAML.load_file(File.join(work_dir, "stemcell/stemcell.MF")) - expect(actual_manifest['name']).to eq('bosh-fake_infra-fake_hypervisor-ubuntu-FOO-fips-go_agent-raw') - expect(actual_manifest['operating_system']).to eq('ubuntu-FOO') + expect(actual_manifest["name"]).to eq("bosh-fake_infra-fake_hypervisor-ubuntu-FOO-fips-go_agent-raw") + expect(actual_manifest["operating_system"]).to eq("ubuntu-FOO") end end end diff --git a/bosh-stemcell/spec/bosh/stemcell_spec.rb b/bosh-stemcell/spec/bosh/stemcell_spec.rb index b442d8f463..0128d26ea4 100644 --- a/bosh-stemcell/spec/bosh/stemcell_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell_spec.rb @@ -1,5 +1,5 @@ -require 'spec_helper' -require 'bosh/stemcell' +require "spec_helper" +require "bosh/stemcell" describe Bosh::Stemcell do it { should be_a(Module) } diff --git a/bosh-stemcell/spec/os_image/ubuntu_spec.rb b/bosh-stemcell/spec/os_image/ubuntu_spec.rb index 50989653f1..73164ce945 100644 --- a/bosh-stemcell/spec/os_image/ubuntu_spec.rb +++ b/bosh-stemcell/spec/os_image/ubuntu_spec.rb @@ -1,58 +1,58 @@ -require 'bosh/stemcell/arch' -require 'spec_helper' -require 'shellout_types/file' +require "bosh/stemcell/arch" +require "spec_helper" +require "shellout_types/file" -describe 'Ubuntu 22.04 OS image', os_image: true do - it_behaves_like 'every OS image' do - let (:syslog_config) { file('/etc/audit/plugins.d/syslog.conf') } +describe "Ubuntu 22.04 OS image", os_image: true do + it_behaves_like "every OS image" do + let(:syslog_config) { file("/etc/audit/plugins.d/syslog.conf") } end - it_behaves_like 'an os with chrony' - it_behaves_like 'a systemd-based OS image' - it_behaves_like 'an Ubuntu-based OS image' + it_behaves_like "an os with chrony" + it_behaves_like "a systemd-based OS image" + it_behaves_like "an Ubuntu-based OS image" - describe package('rpm') do + describe package("rpm") do it { should_not be_installed } end - context 'The system must limit the ability of processes to have simultaneous write and execute access to memory. (stig: V-38597)' do + context "The system must limit the ability of processes to have simultaneous write and execute access to memory. (stig: V-38597)" do # Ubuntu relies on the system's hardware NX capabilities, or emulates NX if the hardware does not support it. # Ubuntu has had this capability since v 11.04 # https://wiki.ubuntu.com/Security/Features#nx - describe command('lsb_release -r') do - it 'should run an os that emulates or uses things' do + describe command("lsb_release -r") do + it "should run an os that emulates or uses things" do major_version = subject.stdout.match(/Release:\s+(\d+)(\.\d+)?/)[1].to_i expect(major_version).to be > 11 end end end - describe service('systemd-networkd') do + describe service("systemd-networkd") do it { should be_enabled } end - describe 'base_apt' do - describe file('/etc/apt/sources.list') do + describe "base_apt" do + describe file("/etc/apt/sources.list") do its(:content) { should match 'deb http:\/\/(archive|snapshot).ubuntu.com\/ubuntu(|\/\d*T\d*Z) jammy main universe multiverse' } its(:content) { should match 'deb http:\/\/(archive|snapshot).ubuntu.com\/ubuntu(|\/\d*T\d*Z) jammy-updates main universe multiverse' } its(:content) { should match 'deb http:\/\/(security|snapshot).ubuntu.com\/ubuntu(|\/\d*T\d*Z) jammy-security main universe multiverse' } end - describe file('/lib/systemd/system/runit.service') do + describe file("/lib/systemd/system/runit.service") do it { should be_file } - its(:content) { should match 'Restart=always' } - its(:content) { should match 'KillMode=process' } + its(:content) { should match "Restart=always" } + its(:content) { should match "KillMode=process" } end end - context 'installed by base_ubuntu_packages' do - describe file('/sbin/rescan-scsi-bus') do + context "installed by base_ubuntu_packages" do + describe file("/sbin/rescan-scsi-bus") do it { should be_file } it { should be_executable } end - context 'zfs' do + context "zfs" do %w[ - /lib/modules/*/kernel/zfs/ + /lib/modules/*/kernel/zfs/ /usr/src/linux-headers-*/zfs ].each do |folder| describe file(folder) do @@ -62,21 +62,21 @@ end end - context 'installed by base_ssh' do - subject(:sshd_config) { file('/etc/ssh/sshd_config') } + context "installed by base_ssh" do + subject(:sshd_config) { file("/etc/ssh/sshd_config") } - it 'only allow 3DES and AES series ciphers (stig: V-38617)' do + it "only allow 3DES and AES series ciphers (stig: V-38617)" do ciphers = %w[ aes256-gcm@openssh.com aes128-gcm@openssh.com aes256-ctr aes192-ctr aes128-ctr - ].join(',') + ].join(",") expect(sshd_config.content).to match(/^Ciphers #{ciphers}$/) end - it 'allows only secure HMACs', exclude_on_fips: true do + it "allows only secure HMACs", exclude_on_fips: true do macs = %w[ hmac-sha2-512-etm@openssh.com hmac-sha2-256-etm@openssh.com @@ -84,12 +84,12 @@ hmac-sha2-512 hmac-sha2-256 umac-128@openssh.com - ].join(',') + ].join(",") expect(sshd_config.content).to match(/^MACs #{macs}$/) end end - context 'installed by system_grub' do + context "installed by system_grub" do %w[ grub2 ].each do |pkg| @@ -104,443 +104,442 @@ end end - context 'installed by bosh_user' do - describe file('/etc/passwd') do + context "installed by bosh_user" do + describe file("/etc/passwd") do it { should be_file } - its(:content) { should match '/home/vcap:/bin/bash' } + its(:content) { should match "/home/vcap:/bin/bash" } end end - context 'symlinked by vim_tiny' do - describe file('/usr/bin/vim') do - it { should be_linked_to '/usr/bin/vim.tiny' } + context "symlinked by vim_tiny" do + describe file("/usr/bin/vim") do + it { should be_linked_to "/usr/bin/vim.tiny" } end end - context 'configured by cron_config' do - describe file '/etc/cron.daily/man-db' do + context "configured by cron_config" do + describe file "/etc/cron.daily/man-db" do it { should_not be_file } end - describe file '/etc/cron.weekly/man-db' do + describe file "/etc/cron.weekly/man-db" do it { should_not be_file } end - describe file '/etc/apt/apt.conf.d/02periodic' do + describe file "/etc/apt/apt.conf.d/02periodic" do its(:content) { should match <<~EOF } APT::Periodic { Enable "0"; } -EOF + EOF end end - context 'created image should not contain machine id' do - describe file('/etc/machine-id') do - it { should be_file} - its(:content) { should match '' } + context "created image should not contain machine id" do + describe file("/etc/machine-id") do + it { should be_file } + its(:content) { should match "" } end - describe file('/var/lib/dbus/machine-id') do + describe file("/var/lib/dbus/machine-id") do it { should_not be_file } end end - context 'overriding control alt delete (stig: V-38668)' do - describe file('/etc/init/control-alt-delete.override') do + context "overriding control alt delete (stig: V-38668)" do + describe file("/etc/init/control-alt-delete.override") do it { should be_file } its(:content) { should match 'exec /usr/bin/logger -p security.info "Control-Alt-Delete pressed"' } end end - context 'package signature verification (stig: V-38462) (stig: V-38483)' do + context "package signature verification (stig: V-38462) (stig: V-38483)" do # verify default behavior was not changed - describe command('grep -R AllowUnauthenticated /etc/apt/apt.conf.d/') do - its (:stdout) { should eq('') } + describe command("grep -R AllowUnauthenticated /etc/apt/apt.conf.d/") do + its(:stdout) { should eq("") } end end - context 'official Ubuntu gpg key is installed (stig: V-38476)' do - describe command('apt-key list') do - its (:stdout) { should include('Ubuntu Archive Automatic Signing Key') } + context "official Ubuntu gpg key is installed (stig: V-38476)" do + describe command("apt-key list") do + its(:stdout) { should include("Ubuntu Archive Automatic Signing Key") } end end - context 'PAM configuration' do - describe file('/lib/x86_64-linux-gnu/security/pam_cracklib.so') do + context "PAM configuration" do + describe file("/lib/x86_64-linux-gnu/security/pam_cracklib.so") do it { should be_file } end - describe file('/etc/pam.d/common-password') do - it'must prohibit the reuse of passwords within twenty-four iterations (stig: V-38658)' do - expect(subject.content).to match /password.*pam_unix\.so.*remember=24/ + describe file("/etc/pam.d/common-password") do + it "must prohibit the reuse of passwords within twenty-four iterations (stig: V-38658)" do + expect(subject.content).to match(/password.*pam_unix\.so.*remember=24/) end - it'must prohibit new passwords shorter than 14 characters (stig: V-38475)' do - expect(subject.content).to match /password.*pam_unix\.so.*minlen=14/ + it "must prohibit new passwords shorter than 14 characters (stig: V-38475)" do + expect(subject.content).to match(/password.*pam_unix\.so.*minlen=14/) end - it'must use the cracklib library to set correct password requirements (CIS-9.2.1)' do - expect(subject.content).to match /password.*pam_cracklib\.so.*retry=3.*minlen=14.*dcredit=-1.*ucredit=-1.*ocredit=-1.*lcredit=-1/ + it "must use the cracklib library to set correct password requirements (CIS-9.2.1)" do + expect(subject.content).to match(/password.*pam_cracklib\.so.*retry=3.*minlen=14.*dcredit=-1.*ucredit=-1.*ocredit=-1.*lcredit=-1/) end end - describe file('/etc/pam.d/common-account') do - it 'must reset the tally of a user after successful login, esp. `sudo` (stig: V-38573)' do - expect(subject.content).to match /account.*required.*pam_faillock\.so/ + describe file("/etc/pam.d/common-account") do + it "must reset the tally of a user after successful login, esp. `sudo` (stig: V-38573)" do + expect(subject.content).to match(/account.*required.*pam_faillock\.so/) end end - describe file('/etc/pam.d/common-auth') do - it'must restrict a user account after 3 failed login attempts (stig: V-38573)' do - expect(subject.content).to match /auth.*pam_faillock\.so.*deny=3/ + describe file("/etc/pam.d/common-auth") do + it "must restrict a user account after 3 failed login attempts (stig: V-38573)" do + expect(subject.content).to match(/auth.*pam_faillock\.so.*deny=3/) end end end # V-38498 and V-38495 are the package defaults and cannot be configured - context 'ensure auditd is installed (stig: V-38498) (stig: V-38495)' do - describe package('auditd') do + context "ensure auditd is installed (stig: V-38498) (stig: V-38495)" do + describe package("auditd") do it { should be_installed } end end - context 'ensure auditd file permissions and ownership (stig: V-38663) (stig: V-38664) (stig: V-38665)' do - [[0o644, '/usr/share/lintian/overrides/auditd'], - [0o755, '/usr/bin/auvirt'], - [0o755, '/usr/bin/ausyscall'], - [0o755, '/usr/bin/aulastlog'], - [0o755, '/usr/bin/aulast'], - [0o750, '/var/log/audit'], - [0o755, '/sbin/aureport'], - [0o755, '/sbin/auditd'], - [0o755, '/sbin/autrace'], - [0o755, '/sbin/ausearch'], - [0o755, '/sbin/augenrules'], - [0o755, '/sbin/auditctl'], - [0o750, '/etc/audit/plugins.d'], - [0o640, '/etc/audit/plugins.d/af_unix.conf'], - [0o640, '/etc/audit/plugins.d/syslog.conf'], - [0o755, '/etc/init.d/auditd'], - [0o750, '/etc/audit'], - [0o750, '/etc/audit/rules.d'], - [0o640, '/etc/audit/rules.d/audit.rules'], - [0o640, '/etc/audit/audit.rules'], - [0o640, '/etc/audit/auditd.conf'], - [0o644, '/etc/default/auditd'], - [0o644, '/lib/systemd/system/auditd.service']].each do |tuple| + context "ensure auditd file permissions and ownership (stig: V-38663) (stig: V-38664) (stig: V-38665)" do + [[0o644, "/usr/share/lintian/overrides/auditd"], + [0o755, "/usr/bin/auvirt"], + [0o755, "/usr/bin/ausyscall"], + [0o755, "/usr/bin/aulastlog"], + [0o755, "/usr/bin/aulast"], + [0o750, "/var/log/audit"], + [0o755, "/sbin/aureport"], + [0o755, "/sbin/auditd"], + [0o755, "/sbin/autrace"], + [0o755, "/sbin/ausearch"], + [0o755, "/sbin/augenrules"], + [0o755, "/sbin/auditctl"], + [0o750, "/etc/audit/plugins.d"], + [0o640, "/etc/audit/plugins.d/af_unix.conf"], + [0o640, "/etc/audit/plugins.d/syslog.conf"], + [0o755, "/etc/init.d/auditd"], + [0o750, "/etc/audit"], + [0o750, "/etc/audit/rules.d"], + [0o640, "/etc/audit/rules.d/audit.rules"], + [0o640, "/etc/audit/audit.rules"], + [0o640, "/etc/audit/auditd.conf"], + [0o644, "/etc/default/auditd"], + [0o644, "/lib/systemd/system/auditd.service"]].each do |tuple| describe file(tuple[1]) do - its(:owner) { should eq('root') } - its(:mode) { should eq(tuple[0]) } - its(:group) { should eq('root') } + its(:owner) { should eq("root") } + its(:mode) { should eq(tuple[0]) } + its(:group) { should eq("root") } end end end - context 'auditd is configured to use augenrules' do - describe file('/etc/systemd/system/auditd.service') do + context "auditd is configured to use augenrules" do + describe file("/etc/systemd/system/auditd.service") do it { should be_file } its(:content) { should match(/^ExecStartPost=-\/sbin\/augenrules --load$/) } end end - context 'ensure audit package file have unmodified contents (stig: V-38637)' do + context "ensure audit package file have unmodified contents (stig: V-38637)" do # ignore auditd.conf, auditd, and audit.rules since we modify these files in # other stigs describe command("dpkg -V audit | grep -v 'auditd.conf' | grep -v 'default/auditd' | grep -v 'audit.rules' | grep -v 'syslog.conf' | grep '^..5'") do - its (:stdout) { should be_empty } + its(:stdout) { should be_empty } end end - context 'ensure sendmail is removed (stig: V-38671)' do - describe command('dpkg -s sendmail') do - it 'complains about non-installed sendmail' do - expect(subject.stderr).to include 'dpkg-query: package \'sendmail\' is not installed and no information is available' + context "ensure sendmail is removed (stig: V-38671)" do + describe command("dpkg -s sendmail") do + it "complains about non-installed sendmail" do + expect(subject.stderr).to include "dpkg-query: package 'sendmail' is not installed and no information is available" end end end - describe service('xinetd') do - it('should be disabled (stig: V-38582)') { should_not be_enabled } + describe service("xinetd") do + it("should be disabled (stig: V-38582)") { should_not be_enabled } end - context 'ensure cron is installed and enabled (stig: V-38605)' do - describe package('cron') do - it('should be installed') { should be_installed } + context "ensure cron is installed and enabled (stig: V-38605)" do + describe package("cron") do + it("should be installed") { should be_installed } end - describe service('cron') do - it('should be enabled') { should be_enabled } + describe service("cron") do + it("should be enabled") { should be_enabled } end end - context 'ensure ypbind is not running (stig: V-38604)' do - describe package('nis') do + context "ensure ypbind is not running (stig: V-38604)" do + describe package("nis") do it { should_not be_installed } end - describe file('/var/run/ypbind.pid') do + describe file("/var/run/ypbind.pid") do it { should_not be_file } end end - context 'ensure ypserv is not installed (stig: V-38603)' do - describe package('nis') do + context "ensure ypserv is not installed (stig: V-38603)" do + describe package("nis") do it { should_not be_installed } end end - context 'ensure snmp is not installed (stig: V-38660) (stig: V-38653)' do - describe package('snmp') do + context "ensure snmp is not installed (stig: V-38660) (stig: V-38653)" do + describe package("snmp") do it { should_not be_installed } end end - context 'display the number of unsuccessful logon/access attempts since the last successful logon/access (stig: V-51875)' do - describe file('/etc/pam.d/common-password') do - its(:content) { should match /session\trequired\t\t\tpam_lastlog\.so showfailed/ } + context "display the number of unsuccessful logon/access attempts since the last successful logon/access (stig: V-51875)" do + describe file("/etc/pam.d/common-password") do + its(:content) { should match(/session\trequired\t\t\tpam_lastlog\.so showfailed/) } end end - context 'ensure whoopsie and apport are not installed (CIS-4.1)' do - describe package('apport') do + context "ensure whoopsie and apport are not installed (CIS-4.1)" do + describe package("apport") do it { should_not be_installed } end - describe package('whoopsie') do + describe package("whoopsie") do it { should_not be_installed } end end - context 'restrict access to the su command CIS-9.5' do + context "restrict access to the su command CIS-9.5" do describe command('grep "^\s*auth\s*required\s*pam_wheel.so\s*use_uid" /etc/pam.d/su') do - it('exits 0') { expect(subject.exit_status).to eq(0) } + it("exits 0") { expect(subject.exit_status).to eq(0) } end - describe user('vcap') do + describe user("vcap") do it { should exist } - it { should be_in_group 'sudo' } + it { should be_in_group "sudo" } end end - describe 'logging and audit startup script' do - describe file('/var/vcap/bosh/bin/bosh-start-logging-and-auditing') do + describe "logging and audit startup script" do + describe file("/var/vcap/bosh/bin/bosh-start-logging-and-auditing") do it { should be_file } it { should be_executable } - its(:content) { should match('service auditd start') } + its(:content) { should match("service auditd start") } end end - describe 'rsyslog modifications' do - - describe file('/usr/local/bin/wait_for_var_log_to_be_mounted') do + describe "rsyslog modifications" do + describe file("/usr/local/bin/wait_for_var_log_to_be_mounted") do it { should be_file } its(:mode) { should eq(0o755) } end end - describe 'allowed user accounts' do - describe file('/etc/passwd') do - its(:content) { should eql(< 0 end - it 'returns an integer exit code' do - _, _, status = runner.run('cat /garbage') + it "returns an integer exit code" do + _, _, status = runner.run("cat /garbage") expect(status).to eq(1) end - it 'runs the command in the chroot dir' do - stdout, stderr, status = runner.run('pwd') - expect(stderr).to eq('') + it "runs the command in the chroot dir" do + stdout, stderr, status = runner.run("pwd") + expect(stderr).to eq("") expect(status).to eq(0) expect(stdout).to eq("/\n") end diff --git a/bosh-stemcell/spec/shellout_types/command_spec.rb b/bosh-stemcell/spec/shellout_types/command_spec.rb index 0cf7a5e92a..77473a7a81 100644 --- a/bosh-stemcell/spec/shellout_types/command_spec.rb +++ b/bosh-stemcell/spec/shellout_types/command_spec.rb @@ -1,5 +1,5 @@ -require_relative 'spec_helper' -require 'shellout_types/command' +require_relative "spec_helper" +require "shellout_types/command" module ShelloutTypes describe Command, shellout_types: true do @@ -11,25 +11,25 @@ module ShelloutTypes let(:long) { described_class.new("cat /etc/lsb-release", chroot) } let(:exit11) { described_class.new("exit 11", chroot) } - describe '#stdout' do - it 'returns stdout of running the command in the chroot dir' do + describe "#stdout" do + it "returns stdout of running the command in the chroot dir" do expect(echo.stdout).to eq("/\n") end end - describe '#exit_status' do - it 'returns the exit status of the command' do + describe "#exit_status" do + it "returns the exit status of the command" do expect(echo.exit_status).to eq(0) end - it 'returns the exit status even if the command fails' do + it "returns the exit status even if the command fails" do expect(exit11.exit_status).to eq(11) end end - describe '#stderr' do - it 'returns stderr of running the command in the chroot dir' do - expect(errorful.stderr).to match /potato: command not found/ + describe "#stderr" do + it "returns stderr of running the command in the chroot dir" do + expect(errorful.stderr).to match(/potato: command not found/) end end end diff --git a/bosh-stemcell/spec/shellout_types/file_spec.rb b/bosh-stemcell/spec/shellout_types/file_spec.rb index 88fe92a469..5d01f669fd 100644 --- a/bosh-stemcell/spec/shellout_types/file_spec.rb +++ b/bosh-stemcell/spec/shellout_types/file_spec.rb @@ -1,35 +1,35 @@ -require_relative 'spec_helper' -require 'tempfile' -require 'shellout_types/file' +require_relative "spec_helper" +require "tempfile" +require "shellout_types/file" module ShelloutTypes describe File, shellout_types: true do def chown(uid, gid, file_name) cmd = ["-c"] - chown_cmd = 'chown ' - chown_cmd += "#{uid}" unless uid.nil? + chown_cmd = "chown " + chown_cmd += uid.to_s unless uid.nil? chown_cmd += ":#{gid}" unless gid.nil? chown_cmd += " #{file_name}" - cmd.push("#{chown_cmd}") + cmd.push(chown_cmd.to_s) - _, stderr, status = Open3.capture3('sudo', 'chroot', chroot_dir, '/bin/bash', *cmd) + _, stderr, status = Open3.capture3("sudo", "chroot", chroot_dir, "/bin/bash", *cmd) fail(stderr) if status.exitstatus != 0 - return + nil end def chmod(mod, file_name) cmd = ["-c"] chmod_cmd = "chmod #{mod} #{file_name}" - cmd.push("#{chmod_cmd}") + cmd.push(chmod_cmd.to_s) - _, stderr, status = Open3.capture3('sudo', 'chroot', chroot_dir, '/bin/bash', *cmd) + _, stderr, status = Open3.capture3("sudo", "chroot", chroot_dir, "/bin/bash", *cmd) fail(stderr) if status.exitstatus != 0 - return + nil end def create_user(id) cmd = ["-c", "useradd -u #{id} --no-user-group user-#{id}"] - _, stderr, status = Open3.capture3('sudo', 'chroot', chroot_dir, '/bin/bash', *cmd) + _, stderr, status = Open3.capture3("sudo", "chroot", chroot_dir, "/bin/bash", *cmd) fail(stderr) if status.exitstatus != 0 id @@ -37,49 +37,49 @@ def create_user(id) def create_group(id) cmd = ["-c", "groupadd -g #{id} group-#{id}"] - _, stderr, status = Open3.capture3('sudo', 'chroot', chroot_dir, '/bin/bash', *cmd) + _, stderr, status = Open3.capture3("sudo", "chroot", chroot_dir, "/bin/bash", *cmd) fail(stderr) if status.exitstatus != 0 id end def add_user_to_group(random_gid, user_name) cmd = ["-c", "usermod -a -G group-#{random_gid} #{user_name}"] - _, stderr, status = Open3.capture3('sudo', 'chroot', chroot_dir, '/bin/bash', *cmd) + _, stderr, status = Open3.capture3("sudo", "chroot", chroot_dir, "/bin/bash", *cmd) fail(stderr) if status.exitstatus != 0 end def set_user_group(random_gid, user_name) cmd = ["-c", "usermod -g group-#{random_gid} #{user_name}"] - _, stderr, status = Open3.capture3('sudo', 'chroot', chroot_dir, '/bin/bash', *cmd) + _, stderr, status = Open3.capture3("sudo", "chroot", chroot_dir, "/bin/bash", *cmd) fail(stderr) if status.exitstatus != 0 end def delete_user_and_group(username, groupname) cmd = ["-c", "id #{username}"] - _, _, status = Open3.capture3('sudo', 'chroot', chroot_dir, '/bin/bash', *cmd) + _, _, status = Open3.capture3("sudo", "chroot", chroot_dir, "/bin/bash", *cmd) if status == 0 cmd = ["-c", "userdel #{username}"] - _, stderr, status = Open3.capture3('sudo', 'chroot', chroot_dir, '/bin/bash', *cmd) + _, stderr, status = Open3.capture3("sudo", "chroot", chroot_dir, "/bin/bash", *cmd) fail(stderr) if status.exitstatus != 0 end cmd = ["-c", "groupdel #{groupname}"] - _, stderr, status = Open3.capture3('sudo', 'chroot', chroot_dir, '/bin/bash', *cmd) + _, stderr, status = Open3.capture3("sudo", "chroot", chroot_dir, "/bin/bash", *cmd) fail(stderr) if status.exitstatus != 0 end let(:chroot) { ShelloutTypes::Chroot.new } let(:chroot_dir) { chroot.chroot_dir } - let(:regular_system_file) { Tempfile.new('a-file', chroot_dir) } + let(:regular_system_file) { Tempfile.new("a-file", chroot_dir) } let(:regular_system_filename) { ::File.basename(regular_system_file) } let(:regular_file) { described_class.new(regular_system_filename, chroot) } - let(:tmp_dirname) { ::File.basename(Dir.mktmpdir('a-dir', chroot_dir)) } + let(:tmp_dirname) { ::File.basename(Dir.mktmpdir("a-dir", chroot_dir)) } let(:directory_file) { described_class.new(tmp_dirname, chroot) } - let(:link_path) { ::File.join(tmp_dirname, 'link') } + let(:link_path) { ::File.join(tmp_dirname, "link") } let(:link) do - chroot.run('ln', '-s', "/#{regular_system_filename}", link_path) + chroot.run("ln", "-s", "/#{regular_system_filename}", link_path) described_class.new(link_path, chroot) end let(:nobody_uid) { 65534 } @@ -103,63 +103,63 @@ def delete_user_and_group(username, groupname) delete_user_and_group(ephemeral_user_name, ephemeral_group_name) end - describe '#file?' do - context 'when the file is a regular file' do - it 'returns true' do + describe "#file?" do + context "when the file is a regular file" do + it "returns true" do expect(regular_file.file?).to eq(true) end end - context 'when the file is not there' do - let(:absent_file) { described_class.new('not-real', chroot) } + context "when the file is not there" do + let(:absent_file) { described_class.new("not-real", chroot) } - it 'returns false' do + it "returns false" do expect(absent_file.file?).to eq(false) end end - context 'when the file is actually a directory' do - it 'returns false' do + context "when the file is actually a directory" do + it "returns false" do expect(directory_file.file?).to eq(false) end end - context 'when the file is a symlink' do - context 'that points to a real file' do - it 'follows the link and inspects the target' do + context "when the file is a symlink" do + context "that points to a real file" do + it "follows the link and inspects the target" do expect(link.file?).to eq(true) end end - context 'that points to a missing node' do + context "that points to a missing node" do before do link ::File.delete(::File.join(chroot_dir, regular_system_filename)) end - it 'returns false' do + it "returns false" do expect(link.file?).to eq(false) end end - context 'that points to a relatively located file' do - let(:file_in_dir) { Tempfile.new('link-target', ::File.join(chroot_dir, tmp_dirname)) } + context "that points to a relatively located file" do + let(:file_in_dir) { Tempfile.new("link-target", ::File.join(chroot_dir, tmp_dirname)) } let(:relative_path) { ::File.basename(file_in_dir.path) } let(:link_to_relative) do - chroot.run('ln', '-s', relative_path, link_path) + chroot.run("ln", "-s", relative_path, link_path) described_class.new(link_path, chroot) end - it 'can determine the absolute-in-chroot path of its target' do + it "can determine the absolute-in-chroot path of its target" do expect(link_to_relative.file?).to eq(true) end end end end - describe '#owned_by?' do - let(:owned_system_file) { Tempfile.new('a-file', chroot_dir) } + describe "#owned_by?" do + let(:owned_system_file) { Tempfile.new("a-file", chroot_dir) } let(:owned_file_path_relative_to_chroot) { ::File.basename(owned_system_file.path) } let(:owned_file) do chown(ephemeral_uid, nil, owned_file_path_relative_to_chroot) @@ -167,20 +167,20 @@ def delete_user_and_group(username, groupname) described_class.new(owned_file_path_relative_to_chroot, chroot) end - context 'when the provided user owns the file' do - it 'returns true' do + context "when the provided user owns the file" do + it "returns true" do expect(owned_file.owned_by?(ephemeral_user_name)).to eq(true) end end - context 'when the provided user does not own the file' do - it 'returns false' do - expect(owned_file.owned_by?('fake-user')).to eq(false) + context "when the provided user does not own the file" do + it "returns false" do + expect(owned_file.owned_by?("fake-user")).to eq(false) end end - context 'when the underlying file belongs to a user that does not exist' do - let(:system_file) { Tempfile.new('a-file', chroot_dir) } + context "when the underlying file belongs to a user that does not exist" do + let(:system_file) { Tempfile.new("a-file", chroot_dir) } let(:system_file_path_relative_to_chroot) { ::File.basename(system_file.path) } let(:file_with_unknown_owner) { random_uid = rand(100) + 1 * 65535 @@ -189,38 +189,38 @@ def delete_user_and_group(username, groupname) described_class.new(::File.basename(system_file.path), chroot) } - it('should raise an error') do + it("should raise an error") do expect { file_with_unknown_owner.owned_by?(ephemeral_user_name) }.to raise_error(RuntimeError, "user for file #{system_file.path} does not exist") end end - context 'when an unexpected error occurs' do + context "when an unexpected error occurs" do let(:stderr) { "cannot fork/exec for gid #{ephemeral_gid}" } - it 'should raise error' do - expect(chroot).to receive(:run).and_return(['', stderr, -1]) + it "should raise error" do + expect(chroot).to receive(:run).and_return(["", stderr, -1]) expect { owned_file.owned_by?(ephemeral_user_name) }.to raise_error(RuntimeError, "cannot fork/exec for gid #{ephemeral_gid}") end end - context 'when passwd entry is in an invalid format ' do - let(:stdout) { 'user:x:id:gid:GECOS:home-dir' } + context "when passwd entry is in an invalid format " do + let(:stdout) { "user:x:id:gid:GECOS:home-dir" } - it 'should raise error' do - expect(chroot).to receive(:run). - with('stat', '-c', '%u', owned_file_path_relative_to_chroot). - and_return(["#{ephemeral_uid}\n", '', 0]) - expect(chroot).to receive(:run).with("getent passwd #{ephemeral_uid}").and_return([stdout, '', 0]) + it "should raise error" do + expect(chroot).to receive(:run) + .with("stat", "-c", "%u", owned_file_path_relative_to_chroot) + .and_return(["#{ephemeral_uid}\n", "", 0]) + expect(chroot).to receive(:run).with("getent passwd #{ephemeral_uid}").and_return([stdout, "", 0]) - expect { owned_file.owned_by?(ephemeral_user_name) }.to raise_error(RuntimeError, 'passwd has an invalid format: user:x:id:gid:GECOS:home-dir') + expect { owned_file.owned_by?(ephemeral_user_name) }.to raise_error(RuntimeError, "passwd has an invalid format: user:x:id:gid:GECOS:home-dir") end end end - describe '#content' do + describe "#content" do let(:file_with_content_temp_file) do - a_file = Tempfile.new('a-file', chroot_dir) + a_file = Tempfile.new("a-file", chroot_dir) a_file.write("here is\nmy content") a_file.flush a_file @@ -229,14 +229,14 @@ def delete_user_and_group(username, groupname) described_class.new(::File.basename(file_with_content_temp_file), chroot) end - it 'returns the file content' do + it "returns the file content" do expect(file_with_content.content).to eq("here is\nmy content") end end - describe '#content_as_lines' do + describe "#content_as_lines" do let(:file_with_content_temp_file) do - a_file = Tempfile.new('a-file', chroot_dir) + a_file = Tempfile.new("a-file", chroot_dir) a_file.write("here is\nmy content") a_file.flush a_file @@ -245,28 +245,28 @@ def delete_user_and_group(username, groupname) described_class.new(::File.basename(file_with_content_temp_file), chroot) end - it 'returns the file content as an array of lines' do - expect(file_with_content.content_as_lines).to eq(["here is","my content"]) + it "returns the file content as an array of lines" do + expect(file_with_content.content_as_lines).to eq(["here is", "my content"]) end end - describe '#mode?' do - context 'when the file mode has matching u/g/o bits' do - it 'returns true' do - expect(regular_file.mode?(0600)).to eq(true) + describe "#mode?" do + context "when the file mode has matching u/g/o bits" do + it "returns true" do + expect(regular_file.mode?(0o600)).to eq(true) end end - context 'when the file mode has some other u/g/o bits' do - it 'returns false' do - expect(regular_file.mode?(0777)).to eq(false) + context "when the file mode has some other u/g/o bits" do + it "returns false" do + expect(regular_file.mode?(0o777)).to eq(false) end end end - describe '#group' do + describe "#group" do let(:group_temp_file) do - group_file = Tempfile.new('a-file', chroot_dir) + group_file = Tempfile.new("a-file", chroot_dir) group_file_path_relative_to_chroot = ::File.basename(group_file.path) chown(nil, ephemeral_gid, group_file_path_relative_to_chroot) group_file @@ -275,24 +275,24 @@ def delete_user_and_group(username, groupname) described_class.new(::File.basename(group_temp_file.path), chroot) end - it 'returns the group of the file' do + it "returns the group of the file" do expect(group_file.group).to eq(ephemeral_group_name) end - context('when the group entry is in an invalid format') do - let (:stdout) { 'has-no-gid-or-members:x' } + context("when the group entry is in an invalid format") do + let(:stdout) { "has-no-gid-or-members:x" } - it 'should raise' do - allow(chroot).to receive(:run).and_return([stdout, '', 0]) + it "should raise" do + allow(chroot).to receive(:run).and_return([stdout, "", 0]) - expect { group_file.group }.to raise_error(RuntimeError, 'group entry is an invalid format: has-no-gid-or-members:x') + expect { group_file.group }.to raise_error(RuntimeError, "group entry is an invalid format: has-no-gid-or-members:x") end end - context('when the group belonging to the file does not exist') do + context("when the group belonging to the file does not exist") do let(:current_group) { rand(100) + 1 * 65535 } let(:testgroup_temp_file) do - testgroup_file = Tempfile.new('a-file', chroot_dir) + testgroup_file = Tempfile.new("a-file", chroot_dir) testgroup_file_path_relative_to_chroot = ::File.basename(testgroup_file.path) chown(nil, current_group, testgroup_file_path_relative_to_chroot) testgroup_file @@ -301,83 +301,83 @@ def delete_user_and_group(username, groupname) described_class.new(::File.basename(testgroup_temp_file.path), chroot) end - it 'should raise' do + it "should raise" do expect { testgroup_file.group }.to raise_error(RuntimeError, "group #{current_group} does not exist") end end - context 'when an unexpected error occurs' do - let (:stderr) { "cannot fork/exec for gid #{ephemeral_gid}" } + context "when an unexpected error occurs" do + let(:stderr) { "cannot fork/exec for gid #{ephemeral_gid}" } - it 'should raise an error containing the stderr' do - expect(chroot).to receive(:run).and_return(['', stderr, -1]) + it "should raise an error containing the stderr" do + expect(chroot).to receive(:run).and_return(["", stderr, -1]) expect { group_file.group }.to raise_error(RuntimeError, "cannot fork/exec for gid #{ephemeral_gid}") end end end - describe '#readable_by_user?' do - let(:some_system_file) { Tempfile.new('a-file', chroot_dir) } + describe "#readable_by_user?" do + let(:some_system_file) { Tempfile.new("a-file", chroot_dir) } let(:some_system_file_path_chroot) { ::File.basename(some_system_file.path) } let(:some_file) { described_class.new(some_system_file_path_chroot, chroot) } - context 'when the file is owned by the specific user' do + context "when the file is owned by the specific user" do let(:user_file_gid) { rand(100) + 1 * 65535 } before do chown(ephemeral_uid, user_file_gid, some_system_file_path_chroot) end - context 'and readable' do + context "and readable" do before do chmod("0400", some_system_file_path_chroot) end - it 'returns true' do + it "returns true" do expect(some_file.readable_by_user?(ephemeral_user_name)).to eq(true) end end - context 'and not readable' do + context "and not readable" do before do chmod("0200", some_system_file_path_chroot) end - it 'returns false' do + it "returns false" do expect(some_file.readable_by_user?(ephemeral_user_name)).to eq(false) end end end - context 'when the user does not own the file but has the same group id' do + context "when the user does not own the file but has the same group id" do before do chown(nobody_uid, ephemeral_gid, some_system_file_path_chroot) end - context 'and the file is group readable' do + context "and the file is group readable" do before do chmod("0040", some_system_file_path_chroot) end - it 'returns true' do + it "returns true" do expect(some_file.readable_by_user?(ephemeral_user_name)).to eq(true) end end - context 'and the file is not group readable' do + context "and the file is not group readable" do before do chmod("0020", some_system_file_path_chroot) end - it 'returns false' do + it "returns false" do expect(some_file.readable_by_user?(ephemeral_user_name)).to eq(false) end end end - context 'and the user belongs to the file group members' do + context "and the user belongs to the file group members" do let(:group_with_members_id) { 9999 } let(:group_name_with_members) { "group-#{group_with_members_id}" } @@ -392,57 +392,57 @@ def delete_user_and_group(username, groupname) delete_user_and_group(ephemeral_user_name, group_name_with_members) end - context 'and the file is group readable' do + context "and the file is group readable" do before do chmod("0040", some_system_file_path_chroot) end - it 'returns true' do + it "returns true" do expect(some_file.readable_by_user?(ephemeral_user_name)).to eq(true) end end - context 'and the file is not group readable' do + context "and the file is not group readable" do before do chmod("0020", some_system_file_path_chroot) end - it 'returns false' do + it "returns false" do expect(some_file.readable_by_user?(ephemeral_user_name)).to eq(false) end end end - context 'when the user is not the owner or file group member' do + context "when the user is not the owner or file group member" do before do chown(nobody_uid, nogroup_gid, some_system_file_path_chroot) end - context 'and the file is world readable' do + context "and the file is world readable" do before do chmod("0004", some_system_file_path_chroot) end - it 'returns true' do + it "returns true" do expect(some_file.readable_by_user?(ephemeral_user_name)).to eq(true) end end - context 'and the file is not world readable' do + context "and the file is not world readable" do before do chmod("0002", some_system_file_path_chroot) end - it 'returns false' do + it "returns false" do expect(some_file.readable_by_user?(ephemeral_user_name)).to eq(false) end end end - context 'when the group belonging to the file does not exist' do + context "when the group belonging to the file does not exist" do let(:fake_group) { rand(100) + 1 * 65535 } let(:fake_group_temp_file) do - fake_group_file = Tempfile.new('a-file', chroot_dir) + fake_group_file = Tempfile.new("a-file", chroot_dir) fake_group_file_path_chroot = ::File.basename(fake_group_file.path) chown(nobody_uid, fake_group, fake_group_file_path_chroot) fake_group_file @@ -451,93 +451,93 @@ def delete_user_and_group(username, groupname) described_class.new(::File.basename(fake_group_temp_file.path), chroot) } - it 'should raise' do + it "should raise" do expect { fake_group_file.readable_by_user?(ephemeral_user_name) }.to raise_error(RuntimeError, "group #{fake_group} does not exist") end end - context 'when asking whether a nonexistent user can read the file' do + context "when asking whether a nonexistent user can read the file" do let(:invalid_user) { "invalid-user" } - it 'should raise' do + it "should raise" do expect { some_file.readable_by_user?(invalid_user) }.to raise_error(RuntimeError, "user #{invalid_user} does not exist") end end - context 'when an error occurs trying to determine the mode' do + context "when an error occurs trying to determine the mode" do before do - expect(chroot).to receive(:run). - with('stat', '-c', '%a', some_system_file_path_chroot). - and_return(['', 'mode error occurs', -1]) + expect(chroot).to receive(:run) + .with("stat", "-c", "%a", some_system_file_path_chroot) + .and_return(["", "mode error occurs", -1]) end - it 'raises a relevant error' do - expect { some_file.readable_by_user?(ephemeral_user_name) }.to raise_error(RuntimeError, 'mode error occurs') + it "raises a relevant error" do + expect { some_file.readable_by_user?(ephemeral_user_name) }.to raise_error(RuntimeError, "mode error occurs") end end - context 'when able to determine the mode for the file' do + context "when able to determine the mode for the file" do before do - expect(chroot).to receive(:run). - with('stat', '-c', '%a', some_system_file_path_chroot). - and_return(['0777', '', 0]) + expect(chroot).to receive(:run) + .with("stat", "-c", "%a", some_system_file_path_chroot) + .and_return(["0777", "", 0]) end - context 'when able to determine the user for the file' do + context "when able to determine the user for the file" do let(:getent_passwd_nobody_stdout) { "nobody:x:#{nobody_uid}:#{nobody_uid}:nobody:/nonexistent:/usr/sbin/nologin" } before do chown(nobody_uid, ephemeral_gid, some_system_file_path_chroot) - expect(chroot).to receive(:run). - with('stat', '-c', '%u', some_system_file_path_chroot). - and_return(["#{nobody_uid}", '', 0]) - expect(chroot).to receive(:run).with("getent passwd #{nobody_uid}").and_return([getent_passwd_nobody_stdout, '', 0]) + expect(chroot).to receive(:run) + .with("stat", "-c", "%u", some_system_file_path_chroot) + .and_return([nobody_uid.to_s, "", 0]) + expect(chroot).to receive(:run).with("getent passwd #{nobody_uid}").and_return([getent_passwd_nobody_stdout, "", 0]) end - context 'when an unexpected error occurs while fetching the group' do + context "when an unexpected error occurs while fetching the group" do let(:group_err) { "cannot fork/exec for gid #{ephemeral_gid}" } before do - expect(chroot).to receive(:run). - with('stat', '-c', '%g', some_system_file_path_chroot). - and_return(["#{ephemeral_gid}", '', 0]) - expect(chroot).to receive(:run).with("getent group #{ephemeral_gid}").and_return(['', group_err, -1]) + expect(chroot).to receive(:run) + .with("stat", "-c", "%g", some_system_file_path_chroot) + .and_return([ephemeral_gid.to_s, "", 0]) + expect(chroot).to receive(:run).with("getent group #{ephemeral_gid}").and_return(["", group_err, -1]) end - it 'should raise an error containing the stderr' do + it "should raise an error containing the stderr" do expect { some_file.readable_by_user?(ephemeral_user_name) }.to raise_error(RuntimeError, group_err) end end - context 'when able to fetch the group for the file' do + context "when able to fetch the group for the file" do let(:getent_group_ephemeral_stdout) { "#{ephemeral_group_name}:x:#{ephemeral_gid}:" } before do - expect(chroot).to receive(:run). - with('stat', '-c', '%g', some_system_file_path_chroot). - and_return(["#{ephemeral_gid}", '', 0]) - expect(chroot).to receive(:run). - with("getent group #{ephemeral_gid}"). - and_return([getent_group_ephemeral_stdout, '', 0]) + expect(chroot).to receive(:run) + .with("stat", "-c", "%g", some_system_file_path_chroot) + .and_return([ephemeral_gid.to_s, "", 0]) + expect(chroot).to receive(:run) + .with("getent group #{ephemeral_gid}") + .and_return([getent_group_ephemeral_stdout, "", 0]) end - context 'when an unexpected error occurs while fetching the passwd entry for the specific username' do + context "when an unexpected error occurs while fetching the passwd entry for the specific username" do let(:passwd_error) { "cannot fork/exec for uid #{ephemeral_uid}" } before do - expect(chroot).to receive(:run).with("getent passwd #{ephemeral_user_name}").and_return(['', passwd_error, -1]) + expect(chroot).to receive(:run).with("getent passwd #{ephemeral_user_name}").and_return(["", passwd_error, -1]) end - it 'should raise an error containing the stderr' do + it "should raise an error containing the stderr" do expect { some_file.readable_by_user?(ephemeral_user_name) }.to raise_error(RuntimeError, passwd_error) end end - context 'when able to fetch passwd entry but its format is invalid' do + context "when able to fetch passwd entry but its format is invalid" do let(:getent_passwd_with_bad_format_stdout) { "#{ephemeral_user_name}:x:#{ephemeral_uid}:#{ephemeral_gid}:GECOS:home-dir" } - it 'should raise an error' do - expect(chroot).to receive(:run).with("getent passwd #{ephemeral_user_name}").and_return([getent_passwd_with_bad_format_stdout, '', 0]) + it "should raise an error" do + expect(chroot).to receive(:run).with("getent passwd #{ephemeral_user_name}").and_return([getent_passwd_with_bad_format_stdout, "", 0]) expect { some_file.readable_by_user?(ephemeral_user_name) }.to raise_error(RuntimeError, "passwd has an invalid format: #{getent_passwd_with_bad_format_stdout}") end @@ -547,69 +547,68 @@ def delete_user_and_group(username, groupname) end end - describe '#writable_by?' do + describe "#writable_by?" do let(:base_file) do - Tempfile.new('a-file', chroot_dir) + Tempfile.new("a-file", chroot_dir) end let(:base_file_path_chroot) { ::File.basename(base_file.path) } - - context 'when the file is writeable by its group' do + context "when the file is writeable by its group" do let(:group_writable_file) do chmod("0020", base_file_path_chroot) described_class.new(::File.basename(base_file.path), chroot) end - it 'returns true' do - expect(group_writable_file.writable_by?('group')).to eq(true) + it "returns true" do + expect(group_writable_file.writable_by?("group")).to eq(true) end end - context 'when the file is not writeable by its group' do + context "when the file is not writeable by its group" do let(:group_unwritable_file) do chmod("0000", base_file_path_chroot) described_class.new(::File.basename(base_file.path), chroot) end - it 'returns false' do - expect(group_unwritable_file.writable_by?('group')).to eq(false) + it "returns false" do + expect(group_unwritable_file.writable_by?("group")).to eq(false) end end - context 'when the file is writeable by others' do + context "when the file is writeable by others" do let(:other_writable_file) do chmod("0002", base_file_path_chroot) described_class.new(::File.basename(base_file.path), chroot) end - it 'returns true' do - expect(other_writable_file.writable_by?('other')).to eq(true) + it "returns true" do + expect(other_writable_file.writable_by?("other")).to eq(true) end end - context 'when the file is not writeable by other' do + context "when the file is not writeable by other" do let(:other_unwritable_file) do chmod("0000", base_file_path_chroot) described_class.new(::File.basename(base_file.path), chroot) end - it 'returns false' do - expect(other_unwritable_file.writable_by?('other')).to eq(false) + it "returns false" do + expect(other_unwritable_file.writable_by?("other")).to eq(false) end end - context 'when an anything other than group or other is supplied' do - it 'returns an error' do - name="somebody-#{rand(100)}" + context "when an anything other than group or other is supplied" do + it "returns an error" do + name = "somebody-#{rand(100)}" expect { regular_file.writable_by?(name) }.to raise_error(RuntimeError, "#{name} is an invalid input to writable_by?, please specify one of: ['group', 'other']") end end end - describe '#executable?' do - context 'when the file is executable' do + describe "#executable?" do + context "when the file is executable" do let(:executable_temp_file) do - file = Tempfile.new('a-file', chroot_dir) + file = Tempfile.new("a-file", chroot_dir) chmod("0700", ::File.basename(file.path)) file end @@ -617,57 +616,57 @@ def delete_user_and_group(username, groupname) described_class.new(::File.basename(executable_temp_file.path), chroot) end - it 'returns true' do + it "returns true" do expect(executable_file.executable?).to eq(true) end end - context 'when the file is not executable' do - it 'returns false' do + context "when the file is not executable" do + it "returns false" do expect(regular_file.executable?).to eq(false) end end end - describe '#directory?' do - context 'when the file is a directory' do - it 'returns true' do + describe "#directory?" do + context "when the file is a directory" do + it "returns true" do expect(directory_file.directory?).to eq(true) end end - context 'when the file is not a directory' do - it 'returns false' do + context "when the file is not a directory" do + it "returns false" do expect(regular_file.directory?).to eq(false) end end end - describe '#linked_to?' do - let(:target) { Tempfile.new('target-file', chroot_dir) } + describe "#linked_to?" do + let(:target) { Tempfile.new("target-file", chroot_dir) } - context 'when the file is a symbolic link' do + context "when the file is a symbolic link" do let(:source) do - file_path = target.path.gsub(/target/, 'source') + file_path = target.path.gsub("target", "source") ::File.symlink(target.path, file_path) described_class.new(::File.basename(file_path), chroot) end - it 'returns true when the file links to the specified target' do + it "returns true when the file links to the specified target" do expect(source.linked_to?(target.path)).to eq(true) end - it 'returns false when the file links to a different target' do - expect(source.linked_to?('/path/to/foo')).to eq(false) + it "returns false when the file links to a different target" do + expect(source.linked_to?("/path/to/foo")).to eq(false) end end - context 'when the file is not a symbolic link' do - let(:source_temp_file) { Tempfile.new('a-file', chroot_dir) } + context "when the file is not a symbolic link" do + let(:source_temp_file) { Tempfile.new("a-file", chroot_dir) } let(:source) do described_class.new(::File.basename(source_temp_file.path), chroot) end - it 'returns false' do + it "returns false" do expect(source.linked_to?(target.path)).to eq(false) end end diff --git a/bosh-stemcell/spec/shellout_types/group_spec.rb b/bosh-stemcell/spec/shellout_types/group_spec.rb index 5a1afd0ddd..3af923981a 100644 --- a/bosh-stemcell/spec/shellout_types/group_spec.rb +++ b/bosh-stemcell/spec/shellout_types/group_spec.rb @@ -1,24 +1,24 @@ -require_relative 'spec_helper' -require 'shellout_types/group' +require_relative "spec_helper" +require "shellout_types/group" module ShelloutTypes describe Group, shellout_types: true do - describe '#exists?' do + describe "#exists?" do let(:chroot) { ShelloutTypes::Chroot.new } let(:group) { described_class.new(group_name, chroot) } - context 'when the group exists' do - let(:group_name) { 'root' } + context "when the group exists" do + let(:group_name) { "root" } - it 'returns true' do + it "returns true" do expect(group.exists?).to eq(true) end end - context 'when the group does not exist' do - let(:group_name) { 'potato' } + context "when the group does not exist" do + let(:group_name) { "potato" } - it 'returns false' do + it "returns false" do expect(group.exists?).to eq(false) end end diff --git a/bosh-stemcell/spec/shellout_types/package_spec.rb b/bosh-stemcell/spec/shellout_types/package_spec.rb index a8068b3879..b5ea763af5 100644 --- a/bosh-stemcell/spec/shellout_types/package_spec.rb +++ b/bosh-stemcell/spec/shellout_types/package_spec.rb @@ -1,5 +1,5 @@ -require_relative 'spec_helper' -require 'shellout_types/package' +require_relative "spec_helper" +require "shellout_types/package" module ShelloutTypes describe Package, shellout_types: true do @@ -8,19 +8,19 @@ module ShelloutTypes ShelloutTypes::Chroot.new } - describe '#installed?' do - context 'when a package is installed' do - let(:package_name) { 'dpkg' } + describe "#installed?" do + context "when a package is installed" do + let(:package_name) { "dpkg" } - it 'returns true' do + it "returns true" do expect(package.installed?).to eq(true) end end - context 'when a package is not_installed' do - let(:package_name) { 'non-existent-package' } + context "when a package is not_installed" do + let(:package_name) { "non-existent-package" } - it 'returns false' do + it "returns false" do expect(package.installed?).to eq(false) end end diff --git a/bosh-stemcell/spec/shellout_types/service_spec.rb b/bosh-stemcell/spec/shellout_types/service_spec.rb index 0a1ee3cf07..d060f14256 100644 --- a/bosh-stemcell/spec/shellout_types/service_spec.rb +++ b/bosh-stemcell/spec/shellout_types/service_spec.rb @@ -1,27 +1,26 @@ -require_relative 'spec_helper' -require 'shellout_types/service' +require_relative "spec_helper" +require "shellout_types/service" module ShelloutTypes describe Service, shellout_types: true do let(:chroot) { ShelloutTypes::Chroot.new } - describe '#enabled?' do - context 'when the service is enabled' do - let(:service) { described_class.new('networking', chroot) } + describe "#enabled?" do + context "when the service is enabled" do + let(:service) { described_class.new("networking", chroot) } - it 'returns true' do + it "returns true" do expect(service.enabled?).to eq(true) end end - context 'when the service is not enabled' do - let(:service) { described_class.new('auditd', chroot) } + context "when the service is not enabled" do + let(:service) { described_class.new("auditd", chroot) } - it 'returns false' do + it "returns false" do expect(service.enabled?).to eq(false) end end end end end - diff --git a/bosh-stemcell/spec/shellout_types/spec_helper.rb b/bosh-stemcell/spec/shellout_types/spec_helper.rb index d055da10a8..8a468bcb51 100644 --- a/bosh-stemcell/spec/shellout_types/spec_helper.rb +++ b/bosh-stemcell/spec/shellout_types/spec_helper.rb @@ -1,7 +1,7 @@ -require 'bosh/core/shell' -require 'rspec' -require 'shellout_types/chroot' -require 'tmpdir' +require "bosh/core/shell" +require "rspec" +require "shellout_types/chroot" +require "tmpdir" def supported_testing_os? RUBY_PLATFORM.downcase.include?("linux") @@ -13,13 +13,13 @@ def supported_testing_os? raise "Running 'shellout_types' specs on '#{RUBY_PLATFORM}' is not supported" unless supported_testing_os? end - if ENV['OS_IMAGE'] - @os_image_dir = Dir.mktmpdir('os-image-rspec') + if ENV["OS_IMAGE"] + @os_image_dir = Dir.mktmpdir("os-image-rspec") ShelloutTypes::Chroot.chroot_dir = @os_image_dir config.add_setting(:os_image_dir, default: @os_image_dir) config.before(:suite) do - Bosh::Core::Shell.new.run("sudo tar zxf #{ENV['OS_IMAGE']} -C #{config.os_image_dir}") + Bosh::Core::Shell.new.run("sudo tar zxf #{ENV["OS_IMAGE"]} -C #{config.os_image_dir}") Bosh::Core::Shell.new.run("sudo chgrp -Rh $(id -g) #{config.os_image_dir}") Bosh::Core::Shell.new.run("sudo chmod 775 #{config.os_image_dir}") Bosh::Core::Shell.new.run("sudo chroot #{config.os_image_dir} /bin/bash -c 'useradd -G nogroup shellout'") @@ -29,8 +29,8 @@ def supported_testing_os? ShelloutTypes::Chroot.unmount_proc Bosh::Core::Shell.new.run("sudo rm -rf #{config.os_image_dir}") end - elsif ENV['SHELLOUT_CHROOT_DIR'] - ShelloutTypes::Chroot.chroot_dir = ENV['SHELLOUT_CHROOT_DIR'] + elsif ENV["SHELLOUT_CHROOT_DIR"] + ShelloutTypes::Chroot.chroot_dir = ENV["SHELLOUT_CHROOT_DIR"] else warning = 'Both ENV["OS_IMAGE"] and ENV["SHELLOUT_CHROOT_DIR"] are not set, shellout types test cases are being skipped.' puts RSpec::Core::Formatters::ConsoleCodes.wrap(warning, :yellow) diff --git a/bosh-stemcell/spec/shellout_types/user_spec.rb b/bosh-stemcell/spec/shellout_types/user_spec.rb index 3ac1a09832..ce81637080 100644 --- a/bosh-stemcell/spec/shellout_types/user_spec.rb +++ b/bosh-stemcell/spec/shellout_types/user_spec.rb @@ -1,78 +1,78 @@ -require_relative 'spec_helper' -require 'shellout_types/user' +require_relative "spec_helper" +require "shellout_types/user" module ShelloutTypes describe User, shellout_types: true do let(:runner) { ShelloutTypes::Chroot.new } let(:user) { described_class.new(user_name, runner) } - describe '#exists?' do - context 'when the user exists' do - let(:user_name) { 'root' } + describe "#exists?" do + context "when the user exists" do + let(:user_name) { "root" } - it 'returns true' do + it "returns true" do expect(user.exists?).to eq(true) end end - context 'when the user does not exist' do - let(:user_name) { 'garbage' } + context "when the user does not exist" do + let(:user_name) { "garbage" } - it 'returns false' do + it "returns false" do expect(user.exists?).to eq(false) end end end - describe '#in_group?' do + describe "#in_group?" do # before do # allow(runner).to receive(:run).with("id #{user_name}").and_return([nil, nil, user_exists_status]) # end - context 'when the user exists' do - let(:user_name) { 'root' } + context "when the user exists" do + let(:user_name) { "root" } # let(:user_exists_status) { 0 } # before do # expect(runner).to receive(:run).with("id -Gn #{user_name}").and_return([group_stdout, nil, group_status]) # end - context 'when the group exists' do + context "when the group exists" do # let(:group_status) { 0 } - let(:group) { 'root' } + let(:group) { "root" } # let(:group_stdout) { 'root' } - context 'and the user belongs to the group' do - it 'returns true' do + context "and the user belongs to the group" do + it "returns true" do expect(user.in_group?(group)).to eq(true) end end - context 'and the user does not belong to the group' do - let(:group) { 'nogroup' } + context "and the user does not belong to the group" do + let(:group) { "nogroup" } - it 'returns false' do + it "returns false" do expect(user.in_group?(group)).to eq(false) end end end - context 'when the group does not exist' do - let(:group) { 'garbage' } + context "when the group does not exist" do + let(:group) { "garbage" } # let(:group_stdout) { '' } # let(:group_status) { 1 } - it 'returns false' do + it "returns false" do expect(user.in_group?(group)).to eq(false) end end end - context 'when the user does not exist' do - let(:user_name) { 'garbage' } - let(:group) { 'root' } + context "when the user does not exist" do + let(:user_name) { "garbage" } + let(:group) { "root" } - it 'returns false' do + it "returns false" do expect(user.in_group?(group)).to eq(false) end end diff --git a/bosh-stemcell/spec/spec_helper.rb b/bosh-stemcell/spec/spec_helper.rb index ce7fff50bf..dfeef1a421 100644 --- a/bosh-stemcell/spec/spec_helper.rb +++ b/bosh-stemcell/spec/spec_helper.rb @@ -1,10 +1,10 @@ -require 'rspec' -require 'rspec/its' -require 'fakefs/spec_helpers' -require 'support/shellout_type_assertions.rb' -require 'tmpdir' +require "rspec" +require "rspec/its" +require "fakefs/spec_helpers" +require "support/shellout_type_assertions" +require "tmpdir" -Dir.glob(File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require(f) } +Dir.glob(File.expand_path("../support/**/*.rb", __FILE__)).each { |f| require(f) } # do not truncate array comparison RSpec.configure do |rspec| @@ -14,9 +14,9 @@ end def grub_cfg_path - if ENV['STEMCELL_INFRASTRUCTURE'] == 'vsphere' - '/boot/efi/EFI/grub/grub.cfg' + if ENV["STEMCELL_INFRASTRUCTURE"] == "vsphere" + "/boot/efi/EFI/grub/grub.cfg" else - '/boot/grub/grub.cfg' + "/boot/grub/grub.cfg" end -end \ No newline at end of file +end diff --git a/bosh-stemcell/spec/stemcells/alicloud_spec.rb b/bosh-stemcell/spec/stemcells/alicloud_spec.rb index 272125ed45..3c41f5d085 100644 --- a/bosh-stemcell/spec/stemcells/alicloud_spec.rb +++ b/bosh-stemcell/spec/stemcells/alicloud_spec.rb @@ -1,27 +1,27 @@ -require 'spec_helper' +require "spec_helper" -describe 'AliCloud Stemcell', stemcell_image: true do - it_behaves_like 'udf module is disabled' +describe "AliCloud Stemcell", stemcell_image: true do + it_behaves_like "udf module is disabled" - context 'installed by system_parameters' do - describe file('/var/vcap/bosh/etc/infrastructure') do - its(:content) { should match('alicloud') } + context "installed by system_parameters" do + describe file("/var/vcap/bosh/etc/infrastructure") do + its(:content) { should match("alicloud") } end end - context 'installed by bosh_disable_password_authentication' do - describe 'disallows password authentication' do - subject { file('/etc/ssh/sshd_config') } + context "installed by bosh_disable_password_authentication" do + describe "disallows password authentication" do + subject { file("/etc/ssh/sshd_config") } - its(:content) { should match /^PasswordAuthentication no$/ } + its(:content) { should match(/^PasswordAuthentication no$/) } end end - context 'ext4 filesystems' do - describe 'should not contain ext4 feature metadata_csum' do - subject { file('/etc/mke2fs.conf') } + context "ext4 filesystems" do + describe "should not contain ext4 feature metadata_csum" do + subject { file("/etc/mke2fs.conf") } - its(:content) { should_not match /metadata_csum/ } + its(:content) { should_not match(/metadata_csum/) } end end end diff --git a/bosh-stemcell/spec/stemcells/aws_spec.rb b/bosh-stemcell/spec/stemcells/aws_spec.rb index 99b0ec9c3a..6bec843796 100644 --- a/bosh-stemcell/spec/stemcells/aws_spec.rb +++ b/bosh-stemcell/spec/stemcells/aws_spec.rb @@ -1,40 +1,40 @@ -require 'spec_helper' +require "spec_helper" -describe 'AWS Stemcell', stemcell_image: true do - it_behaves_like 'udf module is disabled' +describe "AWS Stemcell", stemcell_image: true do + it_behaves_like "udf module is disabled" - context 'installed by system_parameters' do - describe file('/var/vcap/bosh/etc/infrastructure') do - its(:content) { should match('aws') } + context "installed by system_parameters" do + describe file("/var/vcap/bosh/etc/infrastructure") do + its(:content) { should match("aws") } end end - context 'installed by bosh_disable_password_authentication' do - describe 'disallows password authentication' do - subject { file('/etc/ssh/sshd_config') } + context "installed by bosh_disable_password_authentication" do + describe "disallows password authentication" do + subject { file("/etc/ssh/sshd_config") } - its(:content) { should match /^PasswordAuthentication no$/ } + its(:content) { should match(/^PasswordAuthentication no$/) } end end - context 'installed by image_install_grub' do + context "installed by image_install_grub" do describe file(grub_cfg_path) do it { should be_file } - its(:content) { should match ' nvme_core.io_timeout=4294967295' } + its(:content) { should match " nvme_core.io_timeout=4294967295" } end end - describe 'nvme' do - describe 'nvme-id finder' do - subject { file('/sbin/nvme-id') } + describe "nvme" do + describe "nvme-id finder" do + subject { file("/sbin/nvme-id") } it { should be_file } it { should be_executable } its(:content) { should match(/nvme id-ctrl/) } end - describe 'udev rules' do - subject { file('/etc/udev/rules.d/70-ec2-nvme-devices.rules') } + describe "udev rules" do + subject { file("/etc/udev/rules.d/70-ec2-nvme-devices.rules") } it { should be_file } its(:content) { should match %r{/sbin/nvme-id} } diff --git a/bosh-stemcell/spec/stemcells/azure_spec.rb b/bosh-stemcell/spec/stemcells/azure_spec.rb index a2d39ae4af..bbf9e8b9e0 100755 --- a/bosh-stemcell/spec/stemcells/azure_spec.rb +++ b/bosh-stemcell/spec/stemcells/azure_spec.rb @@ -1,26 +1,26 @@ -require 'spec_helper' +require "spec_helper" -describe 'Azure Stemcell', stemcell_image: true do - context 'installed by system_parameters' do - describe file('/var/vcap/bosh/etc/infrastructure') do - its(:content) { should include('azure') } +describe "Azure Stemcell", stemcell_image: true do + context "installed by system_parameters" do + describe file("/var/vcap/bosh/etc/infrastructure") do + its(:content) { should include("azure") } end end - context 'installed by bosh_disable_password_authentication' do - describe 'disallows password authentication' do - subject { file('/etc/ssh/sshd_config') } - its(:content) { should match /^PasswordAuthentication no$/ } + context "installed by bosh_disable_password_authentication" do + describe "disallows password authentication" do + subject { file("/etc/ssh/sshd_config") } + its(:content) { should match(/^PasswordAuthentication no$/) } end end - context 'udf module should be enabled' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should_not match 'install udf /bin/true' } + context "udf module should be enabled" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should_not match "install udf /bin/true" } end end - context 'installed by bosh_azure_agent_settings', { + context "installed by bosh_azure_agent_settings", { exclude_on_alicloud: true, exclude_on_aws: true, exclude_on_google: true, @@ -28,9 +28,9 @@ exclude_on_vsphere: true, exclude_on_warden: true, exclude_on_openstack: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - describe file('/var/vcap/bosh/agent.json') do + describe file("/var/vcap/bosh/agent.json") do it { should be_valid_json_file } its(:content) { should include('"Type": "File"') } its(:content) { should include('"MetaDataPath": ""') } @@ -44,19 +44,19 @@ end end - context 'cloud-init Azure APT mirror configuration' do - describe file('/etc/cloud/cloud.cfg.d/90-azure-apt-sources.cfg') do + context "cloud-init Azure APT mirror configuration" do + describe file("/etc/cloud/cloud.cfg.d/90-azure-apt-sources.cfg") do it { should be_file } - its(:content) { should include('http://azure.archive.ubuntu.com/ubuntu/') } + its(:content) { should include("http://azure.archive.ubuntu.com/ubuntu/") } end - describe file('/etc/cloud/cloud.cfg') do + describe file("/etc/cloud/cloud.cfg") do it { should be_file } - its(:content) { should include('apt-configure') } + its(:content) { should include("apt-configure") } end end - context 'installed by system_azure_network', { + context "installed by system_azure_network", { exclude_on_alicloud: true, exclude_on_aws: true, exclude_on_google: true, @@ -64,36 +64,36 @@ exclude_on_vsphere: true, exclude_on_warden: true, exclude_on_openstack: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - describe 'SR-IOV VF udev rules' do - subject { file('/etc/udev/rules.d/10-azure-sriov-unmanaged.rules') } - - it { should be_mode(0644) } - it { should be_owned_by('root') } - - its(:content) { should match /SUBSYSTEM=="net"/ } - its(:content) { should match /ATTR\{flags\}=="0x\?\[89ABCDEF\]\*"/ } - its(:content) { should match /ENV\{AZURE_UNMANAGED_SRIOV\}="1"/ } - its(:content) { should match /ENV\{ID_NET_MANAGED_BY\}="unmanaged"/ } - its(:content) { should match /ENV\{NM_UNMANAGED\}="1"/ } - its(:content) { should match /ATTR\{ifalias\}="sriov-vf"/ } + describe "SR-IOV VF udev rules" do + subject { file("/etc/udev/rules.d/10-azure-sriov-unmanaged.rules") } + + it { should be_mode(0o644) } + it { should be_owned_by("root") } + + its(:content) { should match(/SUBSYSTEM=="net"/) } + its(:content) { should match(/ATTR\{flags\}=="0x\?\[89ABCDEF\]\*"/) } + its(:content) { should match(/ENV\{AZURE_UNMANAGED_SRIOV\}="1"/) } + its(:content) { should match(/ENV\{ID_NET_MANAGED_BY\}="unmanaged"/) } + its(:content) { should match(/ENV\{NM_UNMANAGED\}="1"/) } + its(:content) { should match(/ATTR\{ifalias\}="sriov-vf"/) } end - describe 'systemd network configuration for unmanaged SR-IOV devices' do - subject { file('/etc/systemd/network/01-azure-sriov-unmanaged.network') } + describe "systemd network configuration for unmanaged SR-IOV devices" do + subject { file("/etc/systemd/network/01-azure-sriov-unmanaged.network") } - it { should be_mode(0644) } - it { should be_owned_by('root') } + it { should be_mode(0o644) } + it { should be_owned_by("root") } - its(:content) { should match /\[Match\]/ } - its(:content) { should match /Property=AZURE_UNMANAGED_SRIOV=1/ } - its(:content) { should match /\[Link\]/ } - its(:content) { should match /Unmanaged=yes/ } + its(:content) { should match(/\[Match\]/) } + its(:content) { should match(/Property=AZURE_UNMANAGED_SRIOV=1/) } + its(:content) { should match(/\[Link\]/) } + its(:content) { should match(/Unmanaged=yes/) } end end - context 'installed by system_azure_init', { + context "installed by system_azure_init", { exclude_on_alicloud: true, exclude_on_aws: true, exclude_on_google: true, @@ -101,29 +101,29 @@ exclude_on_vsphere: true, exclude_on_warden: true, exclude_on_openstack: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - describe 'Hyper-V KVP daemon' do - describe command('which hv_kvp_daemon') do + describe "Hyper-V KVP daemon" do + describe command("which hv_kvp_daemon") do its(:exit_status) { should eq 0 } end - describe service('hv-kvp-daemon') do + describe service("hv-kvp-daemon") do it { should be_enabled } end end - describe 'WALinuxAgent configuration' do - describe file('/etc/waagent.conf') do - it { should be_owned_by('root') } + describe "WALinuxAgent configuration" do + describe file("/etc/waagent.conf") do + it { should be_owned_by("root") } end - describe file('/lib/systemd/system/walinuxagent.service') do - it { should be_mode(0644) } - it { should be_owned_by('root') } + describe file("/lib/systemd/system/walinuxagent.service") do + it { should be_mode(0o644) } + it { should be_owned_by("root") } end - describe service('walinuxagent') do + describe service("walinuxagent") do it { should be_enabled } end end diff --git a/bosh-stemcell/spec/stemcells/cis_spec.rb b/bosh-stemcell/spec/stemcells/cis_spec.rb index e1a3ad868f..d6cc3847fa 100644 --- a/bosh-stemcell/spec/stemcells/cis_spec.rb +++ b/bosh-stemcell/spec/stemcells/cis_spec.rb @@ -1,57 +1,57 @@ -require 'spec_helper' +require "spec_helper" -describe 'CIS test case verification', {stemcell_image: true, security_spec: true} do - let(:base_cis_test_cases) do %W{ - CIS-2.18 - CIS-2.19 - CIS-2.20 - CIS-2.21 - CIS-2.22 - CIS-2.23 - CIS-3.2.4 - CIS-4.1 - CIS-7.2.5 - CIS-7.2.6 - CIS-7.2.7 - CIS-7.3.1 - CIS-7.3.2 - CIS-7.5.3 - CIS-11.1 - CIS-8.1.3 - CIS-8.1.4 - CIS-8.1.5 - CIS-4.1.6 - CIS-4.1.7 - CIS-8.1.8 - CIS-8.1.9 - CIS-8.1.10 - CIS-8.1.11 - CIS-8.1.12 - CIS-8.1.13 - CIS-8.1.14 - CIS-8.1.15 - CIS-8.1.16 - CIS-8.1.18 - CIS-9.1.2 - CIS-9.1.3 - CIS-9.1.4 - CIS-9.1.5 - CIS-9.1.6 - CIS-9.1.7 - CIS-9.1.8 - CIS-9.2.1 - CIS-9.4 - CIS-9.5 - CIS-10.2 - CIS-5.2.12 - CIS-5.2.13 - } +describe "CIS test case verification", {stemcell_image: true, security_spec: true} do + let(:base_cis_test_cases) do + %W[ + CIS-2.18 + CIS-2.19 + CIS-2.20 + CIS-2.21 + CIS-2.22 + CIS-2.23 + CIS-3.2.4 + CIS-4.1 + CIS-7.2.5 + CIS-7.2.6 + CIS-7.2.7 + CIS-7.3.1 + CIS-7.3.2 + CIS-7.5.3 + CIS-11.1 + CIS-8.1.3 + CIS-8.1.4 + CIS-8.1.5 + CIS-4.1.6 + CIS-4.1.7 + CIS-8.1.8 + CIS-8.1.9 + CIS-8.1.10 + CIS-8.1.11 + CIS-8.1.12 + CIS-8.1.13 + CIS-8.1.14 + CIS-8.1.15 + CIS-8.1.16 + CIS-8.1.18 + CIS-9.1.2 + CIS-9.1.3 + CIS-9.1.4 + CIS-9.1.5 + CIS-9.1.6 + CIS-9.1.7 + CIS-9.1.8 + CIS-9.2.1 + CIS-9.4 + CIS-9.5 + CIS-10.2 + CIS-5.2.12 + CIS-5.2.13 + ] end - - context "For all infrastructure except Azure and Cloudstack", {exclude_on_azure:true, exclude_on_cloudstack:true} do - it 'confirms that all CIS test cases ran' do - expect($cis_test_cases.to_a).to match_array(base_cis_test_cases + ['CIS-2.24']) + context "For all infrastructure except Azure and Cloudstack", {exclude_on_azure: true, exclude_on_cloudstack: true} do + it "confirms that all CIS test cases ran" do + expect($cis_test_cases.to_a).to match_array(base_cis_test_cases + ["CIS-2.24"]) # standard:disable Style/GlobalVars end end @@ -64,10 +64,10 @@ exclude_on_warden: true, exclude_on_openstack: true, exclude_on_cloudstack: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - it 'confirms that all CIS test cases ran' do - expect($cis_test_cases.to_a).to match_array(base_cis_test_cases) + it "confirms that all CIS test cases ran" do + expect($cis_test_cases.to_a).to match_array(base_cis_test_cases) # standard:disable Style/GlobalVars end end end diff --git a/bosh-stemcell/spec/stemcells/cloudstack_spec.rb b/bosh-stemcell/spec/stemcells/cloudstack_spec.rb index 923f8dfe4d..a3b3cd20f2 100644 --- a/bosh-stemcell/spec/stemcells/cloudstack_spec.rb +++ b/bosh-stemcell/spec/stemcells/cloudstack_spec.rb @@ -1,18 +1,17 @@ -require 'spec_helper' +require "spec_helper" -describe 'CloudStack Stemcell', stemcell_image: true do - context 'installed by system_parameters' do - describe file('/var/vcap/bosh/etc/infrastructure') do - its(:content) { should match('cloudstack') } +describe "CloudStack Stemcell", stemcell_image: true do + context "installed by system_parameters" do + describe file("/var/vcap/bosh/etc/infrastructure") do + its(:content) { should match("cloudstack") } end end + context "installed by bosh_disable_password_authentication" do + describe "disallows password authentication" do + subject { file("/etc/ssh/sshd_config") } - context 'installed by bosh_disable_password_authentication' do - describe 'disallows password authentication' do - subject { file('/etc/ssh/sshd_config') } - - its(:content) { should match /^PasswordAuthentication no$/ } + its(:content) { should match(/^PasswordAuthentication no$/) } end end end diff --git a/bosh-stemcell/spec/stemcells/fips_spec.rb b/bosh-stemcell/spec/stemcells/fips_spec.rb index 77a22bf0d1..224ea971d0 100644 --- a/bosh-stemcell/spec/stemcells/fips_spec.rb +++ b/bosh-stemcell/spec/stemcells/fips_spec.rb @@ -1,41 +1,41 @@ -require 'spec_helper' +require "spec_helper" -describe 'FIPS Stemcell', os_image: true do - use_iaas_kernel = ENV.fetch('UBUNTU_FIPS_USE_IAAS_KERNEL', 'false') == 'true' - context 'installed by system_kernel' do - infrastructure = ENV['STEMCELL_INFRASTRUCTURE'] +describe "FIPS Stemcell", os_image: true do + use_iaas_kernel = ENV.fetch("UBUNTU_FIPS_USE_IAAS_KERNEL", "false") == "true" + context "installed by system_kernel" do + infrastructure = ENV["STEMCELL_INFRASTRUCTURE"] describe package(use_iaas_kernel ? "linux-image-#{infrastructure}-fips" : "linux-image-fips") do it { should be_installed } end - describe package('linux-generic') do + describe package("linux-generic") do it { should_not be_installed } end - describe package('linux-image-5.19.0-109-generic') do + describe package("linux-image-5.19.0-109-generic") do it { should_not be_installed } end end - context 'installed by base_ssh' do - subject(:sshd_config) { file('/etc/ssh/sshd_config') } + context "installed by base_ssh" do + subject(:sshd_config) { file("/etc/ssh/sshd_config") } - it 'allows only secure HMACs' do + it "allows only secure HMACs" do macs = %w[ - hmac-sha2-512-etm@openssh.com - hmac-sha2-256-etm@openssh.com - hmac-sha2-512 - hmac-sha2-256 - ].join(',') + hmac-sha2-512-etm@openssh.com + hmac-sha2-256-etm@openssh.com + hmac-sha2-512 + hmac-sha2-256 + ].join(",") expect(sshd_config.content).to match(/^MACs #{macs}$/) end - it 'enables RSA, ECDSA host keys' do + it "enables RSA, ECDSA host keys" do matches = sshd_config.content.scan(/^HostKey.*/) - expect(matches).to contain_exactly('HostKey /etc/ssh/ssh_host_rsa_key', 'HostKey /etc/ssh/ssh_host_ecdsa_key') + expect(matches).to contain_exactly("HostKey /etc/ssh/ssh_host_rsa_key", "HostKey /etc/ssh/ssh_host_ecdsa_key") end end - context 'installed by image_install_grub for fips kernel' do + context "installed by image_install_grub for fips kernel" do describe file(grub_cfg_path) do it { should be_file } its(:content) { should match %r{linux\t/boot/vmlinuz-\S+-fips root=UUID=\S* ro } } @@ -49,19 +49,19 @@ linux_version_regex = 's/linux-(.+)-([0-9]+).([0-9]+).([0-9]+)-([0-9]+)/linux-\1-\2.\3/' - describe 'installed packages' do + describe "installed packages" do dpkg_list_packages = "dpkg --get-selections | cut -f1 | sed -E '#{linux_version_regex}'" # TODO: maby we can use awk "dpkg --get-selections | awk '!/linux-(.+)-([0-9]+.+)/&&/linux/{print $1}'" - let(:dpkg_list_ubuntu) { File.readlines(spec_asset('dpkg-list-ubuntu.txt')).map(&:chop) } - let(:dpkg_list_fips_ubuntu) { File.readlines(spec_asset('dpkg-list-ubuntu-fips.txt')).map(&:chop) } - let(:dpkg_list_aws_fips_ubuntu) { File.readlines(spec_asset('dpkg-list-ubuntu-aws-fips.txt')).map(&:chop) } - let(:dpkg_list_google_ubuntu) { File.readlines(spec_asset('dpkg-list-ubuntu-google-additions.txt')).map(&:chop) } - let(:dpkg_list_vsphere_ubuntu) { File.readlines(spec_asset('dpkg-list-ubuntu-vsphere-additions.txt')).map(&:chop) } - let(:dpkg_list_azure_ubuntu) { File.readlines(spec_asset('dpkg-list-ubuntu-azure-additions.txt')).map(&:chop) } - let(:dpkg_list_cloudstack_ubuntu) { File.readlines(spec_asset('dpkg-list-ubuntu-cloudstack-additions.txt')).map(&:chop) } - let(:dpkg_list_softlayer_ubuntu) { File.readlines(spec_asset('dpkg-list-ubuntu-softlayer-additions.txt')).map(&:chop) } - let(:infrastructure) { ENV['STEMCELL_INFRASTRUCTURE'] } + let(:dpkg_list_ubuntu) { File.readlines(spec_asset("dpkg-list-ubuntu.txt")).map(&:chop) } + let(:dpkg_list_fips_ubuntu) { File.readlines(spec_asset("dpkg-list-ubuntu-fips.txt")).map(&:chop) } + let(:dpkg_list_aws_fips_ubuntu) { File.readlines(spec_asset("dpkg-list-ubuntu-aws-fips.txt")).map(&:chop) } + let(:dpkg_list_google_ubuntu) { File.readlines(spec_asset("dpkg-list-ubuntu-google-additions.txt")).map(&:chop) } + let(:dpkg_list_vsphere_ubuntu) { File.readlines(spec_asset("dpkg-list-ubuntu-vsphere-additions.txt")).map(&:chop) } + let(:dpkg_list_azure_ubuntu) { File.readlines(spec_asset("dpkg-list-ubuntu-azure-additions.txt")).map(&:chop) } + let(:dpkg_list_cloudstack_ubuntu) { File.readlines(spec_asset("dpkg-list-ubuntu-cloudstack-additions.txt")).map(&:chop) } + let(:dpkg_list_softlayer_ubuntu) { File.readlines(spec_asset("dpkg-list-ubuntu-softlayer-additions.txt")).map(&:chop) } + let(:infrastructure) { ENV["STEMCELL_INFRASTRUCTURE"] } describe command(dpkg_list_packages), { exclude_on_alicloud: true, @@ -71,13 +71,13 @@ exclude_on_warden: true, exclude_on_azure: true, exclude_on_openstack: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - it 'contains only the base set of packages plus aws-specific kernel packages' do + it "contains only the base set of packages plus aws-specific kernel packages" do skip "Test skipped due to generic kernel" unless use_iaas_kernel pkg_list = dpkg_list_ubuntu.concat(dpkg_list_aws_fips_ubuntu) - pkg_list.delete('linux-firmware') - pkg_list.delete('wireless-regdb') + pkg_list.delete("linux-firmware") + pkg_list.delete("wireless-regdb") expect(subject.stdout.split("\n")).to match_array(pkg_list) end end @@ -88,9 +88,9 @@ exclude_on_vcloud: true, exclude_on_vsphere: true, exclude_on_azure: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - it 'contains only the base set of packages for alicloud, aws, openstack, warden' do + it "contains only the base set of packages for alicloud, aws, openstack, warden" do skip "Test skipped due to IAAS-specific kernel" if use_iaas_kernel expect(subject.stdout.split("\n")).to match_array(dpkg_list_ubuntu.concat(dpkg_list_fips_ubuntu)) end @@ -105,9 +105,9 @@ exclude_on_warden: true, exclude_on_azure: true, exclude_on_openstack: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - it 'contains only the base set of packages plus google-specific packages' do + it "contains only the base set of packages plus google-specific packages" do expect(subject.stdout.split("\n")).to match_array(dpkg_list_ubuntu.concat(dpkg_list_fips_ubuntu, dpkg_list_google_ubuntu)) end end @@ -120,9 +120,9 @@ exclude_on_warden: true, exclude_on_azure: true, exclude_on_openstack: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - it 'contains only the base set of packages plus vsphere-specific packages' do + it "contains only the base set of packages plus vsphere-specific packages" do expect(subject.stdout.split("\n")).to match_array(dpkg_list_ubuntu.concat(dpkg_list_fips_ubuntu, dpkg_list_vsphere_ubuntu)) end end @@ -136,9 +136,9 @@ exclude_on_google: true, exclude_on_warden: true, exclude_on_openstack: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - it 'contains only the base set of packages plus azure-specific packages' do + it "contains only the base set of packages plus azure-specific packages" do expect(subject.stdout.split("\n")).to match_array(dpkg_list_ubuntu.concat(dpkg_list_fips_ubuntu, dpkg_list_azure_ubuntu)) end end @@ -151,9 +151,9 @@ exclude_on_google: true, exclude_on_warden: true, exclude_on_azure: true, - exclude_on_openstack: true, + exclude_on_openstack: true } do - it 'contains only the base set of packages plus cloudstack-specific packages' do + it "contains only the base set of packages plus cloudstack-specific packages" do expect(subject.stdout.split("\n")).to match_array(dpkg_list_ubuntu.concat(dpkg_list_fips_ubuntu, dpkg_list_cloudstack_ubuntu)) end end @@ -167,9 +167,9 @@ exclude_on_google: true, exclude_on_warden: true, exclude_on_azure: true, - exclude_on_openstack: true, + exclude_on_openstack: true } do - it 'contains only the base set of packages plus softlayer-specific packages' do + it "contains only the base set of packages plus softlayer-specific packages" do expect(subject.stdout.split("\n")).to match_array(dpkg_list_ubuntu.concat(dpkg_list_fips_ubuntu, dpkg_list_softlayer_ubuntu)) end end diff --git a/bosh-stemcell/spec/stemcells/go_agent_spec.rb b/bosh-stemcell/spec/stemcells/go_agent_spec.rb index 29e05bcf4e..4cc6762f4f 100644 --- a/bosh-stemcell/spec/stemcells/go_agent_spec.rb +++ b/bosh-stemcell/spec/stemcells/go_agent_spec.rb @@ -1,85 +1,84 @@ -require 'spec_helper' +require "spec_helper" -describe 'Stemcell with Go Agent', stemcell_image: true do - describe 'installed by bosh_go_agent' do - %w(bosh-agent bosh-agent-rc bosh-blobstore-dav bosh-blobstore-gcs bosh-blobstore-s3 bosh-blobstore-azure-storage).each do |binary| +describe "Stemcell with Go Agent", stemcell_image: true do + describe "installed by bosh_go_agent" do + %w[bosh-agent bosh-agent-rc bosh-blobstore-dav bosh-blobstore-gcs bosh-blobstore-s3 bosh-blobstore-azure-storage].each do |binary| describe file("/var/vcap/bosh/bin/#{binary}") do it { should be_file } it { should be_executable } end end - describe file('/var/vcap/bosh/agent.json') do + describe file("/var/vcap/bosh/agent.json") do it { should be_valid_json_file } end - describe 'set user/group owner and permission on /etc/crontab (CIS-9.1.2)' do - context file('/etc/crontab') do - it { should be_mode(0600) } - it { should be_owned_by('root') } - its(:group) { should eq('root') } + describe "set user/group owner and permission on /etc/crontab (CIS-9.1.2)" do + context file("/etc/crontab") do + it { should be_mode(0o600) } + it { should be_owned_by("root") } + its(:group) { should eq("root") } end end - describe 'set user/group owner and permission on /etc/cron.hourly (CIS-9.1.3)' do - context file('/etc/cron.hourly') do + describe "set user/group owner and permission on /etc/cron.hourly (CIS-9.1.3)" do + context file("/etc/cron.hourly") do it { should be_directory } - it { should be_mode(0700) } - it { should be_owned_by('root') } - its(:group) { should eq('root') } + it { should be_mode(0o700) } + it { should be_owned_by("root") } + its(:group) { should eq("root") } end end - describe 'set user/group owner and permission on /etc/cron.daily (CIS-9.1.4)' do - context file('/etc/cron.daily') do + describe "set user/group owner and permission on /etc/cron.daily (CIS-9.1.4)" do + context file("/etc/cron.daily") do it { should be_directory } - it { should be_mode(0700) } - it { should be_owned_by('root') } - its(:group) { should eq('root') } + it { should be_mode(0o700) } + it { should be_owned_by("root") } + its(:group) { should eq("root") } end end - describe 'set user/group owner and permission on /etc/cron.weekly (CIS-9.1.5)' do - context file('/etc/cron.weekly') do + describe "set user/group owner and permission on /etc/cron.weekly (CIS-9.1.5)" do + context file("/etc/cron.weekly") do it { should be_directory } - it { should be_mode(0700) } - it { should be_owned_by('root') } - its(:group) { should eq('root') } + it { should be_mode(0o700) } + it { should be_owned_by("root") } + its(:group) { should eq("root") } end end - describe 'set user/group owner and permission on /etc/cron.monthly (CIS-9.1.6)' do - context file('/etc/cron.monthly') do + describe "set user/group owner and permission on /etc/cron.monthly (CIS-9.1.6)" do + context file("/etc/cron.monthly") do it { should be_directory } - it { should be_mode(0700) } - it { should be_owned_by('root') } - its(:group) { should eq('root') } + it { should be_mode(0o700) } + it { should be_owned_by("root") } + its(:group) { should eq("root") } end end - describe 'set user/group owner and permission on /etc/cron.d (CIS-9.1.7)' do - context file('/etc/cron.d') do + describe "set user/group owner and permission on /etc/cron.d (CIS-9.1.7)" do + context file("/etc/cron.d") do it { should be_directory } - it { should be_mode(0700) } - it { should be_owned_by('root') } - its(:group) { should eq('root') } + it { should be_mode(0o700) } + it { should be_owned_by("root") } + its(:group) { should eq("root") } end end - describe 'restrict at/cron to authorized users (CIS-9.1.8)' do - context file('/etc/cron.deny') do + describe "restrict at/cron to authorized users (CIS-9.1.8)" do + context file("/etc/cron.deny") do it { should_not be_file } end - context file('/etc/at.deny') do + context file("/etc/at.deny") do it { should_not be_file } end { - '/etc/cron.allow' => { mode: 0600, owner: 'root', group: 'root' }, - '/etc/at.allow' => { mode: 0600, owner: 'root', group: 'root' }, + "/etc/cron.allow" => {mode: 0o600, owner: "root", group: "root"}, + "/etc/at.allow" => {mode: 0o600, owner: "root", group: "root"} }.each do |file_name, properties| - context file(file_name) do it { should be_mode(properties[:mode]) } it { should be_owned_by(properties[:owner]) } @@ -88,40 +87,40 @@ end end - describe '/var/lock' do + describe "/var/lock" do subject do output = command("stat -L -c %#{operator} /var/lock") output.stdout.split.first end - describe 'owned by' do - let(:operator) { 'U' } - it { should eq('root') } + describe "owned by" do + let(:operator) { "U" } + it { should eq("root") } end - describe 'mode' do - let(:operator) { 'a' } - it { should eq('770') } + describe "mode" do + let(:operator) { "a" } + it { should eq("770") } end - describe 'grouped into' do - let(:operator) { 'G' } - it { should eq('vcap') } + describe "grouped into" do + let(:operator) { "G" } + it { should eq("vcap") } end end - %w(/etc/cron.allow /etc/at.allow).each do |allow_file| + %w[/etc/cron.allow /etc/at.allow].each do |allow_file| describe file(allow_file) do - it('contains exactly vcap') { expect(subject.content).to match(/\Avcap\Z/)} + it("contains exactly vcap") { expect(subject.content).to match(/\Avcap\Z/) } end end - describe file('/var/vcap/data') do + describe file("/var/vcap/data") do it { should_not be_directory } end - describe file('/var/vcap/monit/alerts.monitrc') do - its(:content) { should match('set alert agent@local') } + describe file("/var/vcap/monit/alerts.monitrc") do + its(:content) { should match("set alert agent@local") } end end end diff --git a/bosh-stemcell/spec/stemcells/google_spec.rb b/bosh-stemcell/spec/stemcells/google_spec.rb index bb67fd2d91..e58c4107a3 100644 --- a/bosh-stemcell/spec/stemcells/google_spec.rb +++ b/bosh-stemcell/spec/stemcells/google_spec.rb @@ -1,96 +1,86 @@ -require 'spec_helper' +require "spec_helper" -describe 'Google Stemcell', stemcell_image: true do - it_behaves_like 'udf module is disabled' - - context 'rsyslog conf directory only contains files installed by rsyslog_config stage and google-compute-engine package' do - describe command('ls -A /etc/rsyslog.d') do - it 'match expected list of rsyslog configs' do - expected_rsyslog_confs = %w(50-default.conf -90-google.conf -) +describe "Google Stemcell", stemcell_image: true do + it_behaves_like "udf module is disabled" + context "rsyslog conf directory only contains files installed by rsyslog_config stage and google-compute-engine package" do + describe command("ls -A /etc/rsyslog.d") do + it "match expected list of rsyslog configs" do + expected_rsyslog_confs = %w[50-default.conf + 90-google.conf] expect(subject.stdout.split("\n")).to match_array(expected_rsyslog_confs) end end end - context 'installed by system_parameters' do - describe file('/var/vcap/bosh/etc/infrastructure') do - its(:content) { should include('google') } + context "installed by system_parameters" do + describe file("/var/vcap/bosh/etc/infrastructure") do + its(:content) { should include("google") } end end - context 'growroot should be disabled by create file' do - describe file('/etc/growroot-disabled') do + context "growroot should be disabled by create file" do + describe file("/etc/growroot-disabled") do it { should be_file } - it { should be_owned_by('root') } - its(:group) { should eq('root') } + it { should be_owned_by("root") } + its(:group) { should eq("root") } end end - context 'installed by bosh_disable_password_authentication' do - describe 'disallows password authentication' do - subject { file('/etc/ssh/sshd_config') } + context "installed by bosh_disable_password_authentication" do + describe "disallows password authentication" do + subject { file("/etc/ssh/sshd_config") } - its(:content) { should match /^PasswordAuthentication no$/ } + its(:content) { should match(/^PasswordAuthentication no$/) } end end - context 'installed by system_google_packages' do - describe 'Google agent has configuration file' do - subject { file('/etc/default/instance_configs.cfg.template') } + context "installed by system_google_packages" do + describe "Google agent has configuration file" do + subject { file("/etc/default/instance_configs.cfg.template") } it { should be_file } - it { should be_owned_by('root') } - its(:group) { should eq('root') } + it { should be_owned_by("root") } + its(:group) { should eq("root") } end usrbin = [ - '/usr/bin/google_authorized_keys', - '/usr/bin/google_guest_agent', - '/usr/bin/google_metadata_script_runner', - '/usr/bin/google_optimize_local_ssd', - '/usr/bin/google_oslogin_nss_cache', - '/usr/bin/google_set_hostname', - '/usr/bin/google_set_multiqueue' - ] - - upstart_configs = [ - '/etc/init/google-accounts-daemon.conf', - '/etc/init/google-clock-skew-daemon.conf', - '/etc/init/google-instance-setup.conf', - '/etc/init/google-shutdown-scripts.conf', - '/etc/init/google-startup-scripts.conf' + "/usr/bin/google_authorized_keys", + "/usr/bin/google_guest_agent", + "/usr/bin/google_metadata_script_runner", + "/usr/bin/google_optimize_local_ssd", + "/usr/bin/google_oslogin_nss_cache", + "/usr/bin/google_set_hostname", + "/usr/bin/google_set_multiqueue" ] systemd_configs = [ - '{lib_path}/systemd/system-preset/90-google-compute-engine-oslogin.preset', - '{lib_path}/systemd/system/google-guest-agent.service', - '{lib_path}/systemd/system/google-oslogin-cache.service', - '{lib_path}/systemd/system/google-oslogin-cache.timer', - '{lib_path}/systemd/system/google-shutdown-scripts.service', - '{lib_path}/systemd/system/google-startup-scripts.service' + "{lib_path}/systemd/system-preset/90-google-compute-engine-oslogin.preset", + "{lib_path}/systemd/system/google-guest-agent.service", + "{lib_path}/systemd/system/google-oslogin-cache.service", + "{lib_path}/systemd/system/google-oslogin-cache.timer", + "{lib_path}/systemd/system/google-shutdown-scripts.service", + "{lib_path}/systemd/system/google-startup-scripts.service" ] configs = usrbin - configs += if ENV['OS_NAME'] == 'ubuntu' - systemd_configs.map do |config| - config.gsub('{lib_path}', '/lib') - end - else - systemd_configs.map do |config| - config.gsub('{lib_path}', '/usr/lib') - end - end + configs += if ENV["OS_NAME"] == "ubuntu" + systemd_configs.map do |config| + config.gsub("{lib_path}", "/lib") + end + else + systemd_configs.map do |config| + config.gsub("{lib_path}", "/usr/lib") + end + end configs.each do |conf_file| describe file(conf_file) do it { should be_file } - it { should be_owned_by('root') } - its(:group) { should eq('root') } + it { should be_owned_by("root") } + its(:group) { should eq("root") } end end end diff --git a/bosh-stemcell/spec/stemcells/openstack_spec.rb b/bosh-stemcell/spec/stemcells/openstack_spec.rb index b2da7a50d7..1c6fe44f5a 100644 --- a/bosh-stemcell/spec/stemcells/openstack_spec.rb +++ b/bosh-stemcell/spec/stemcells/openstack_spec.rb @@ -1,21 +1,21 @@ -require 'spec_helper' +require "spec_helper" -describe 'OpenStack Stemcell', stemcell_image: true do - it_behaves_like 'udf module is disabled' +describe "OpenStack Stemcell", stemcell_image: true do + it_behaves_like "udf module is disabled" - context 'installed by system_parameters' do - describe file('/var/vcap/bosh/etc/infrastructure') do - its(:content) { should include('openstack') } + context "installed by system_parameters" do + describe file("/var/vcap/bosh/etc/infrastructure") do + its(:content) { should include("openstack") } end end - context 'installed by package_qcow2_image stage' do - describe 'converts to qcow2 0.10 compat' do + context "installed by package_qcow2_image stage" do + describe "converts to qcow2 0.10 compat" do # environment is cleaned up inside rspec context - stemcell_image = ENV['STEMCELL_IMAGE'] + stemcell_image = ENV["STEMCELL_IMAGE"] subject do - cmd = "qemu-img info #{File.join(File.dirname(stemcell_image), 'root.qcow2')}" + cmd = "qemu-img info #{File.join(File.dirname(stemcell_image), "root.qcow2")}" `#{cmd}` end @@ -23,11 +23,11 @@ end end - context 'installed by bosh_disable_password_authentication' do - describe 'disallows password authentication' do - subject { file('/etc/ssh/sshd_config') } + context "installed by bosh_disable_password_authentication" do + describe "disallows password authentication" do + subject { file("/etc/ssh/sshd_config") } - its(:content) { should match /^PasswordAuthentication no$/ } + its(:content) { should match(/^PasswordAuthentication no$/) } end end end diff --git a/bosh-stemcell/spec/stemcells/softlayer_spec.rb b/bosh-stemcell/spec/stemcells/softlayer_spec.rb index a4c7159971..c83fe8d6d5 100755 --- a/bosh-stemcell/spec/stemcells/softlayer_spec.rb +++ b/bosh-stemcell/spec/stemcells/softlayer_spec.rb @@ -1,20 +1,20 @@ -require 'spec_helper' +require "spec_helper" -describe 'Softlayer Stemcell', stemcell_image: true do - it_behaves_like 'udf module is disabled' +describe "Softlayer Stemcell", stemcell_image: true do + it_behaves_like "udf module is disabled" - context 'installed by system_parameters' do - describe file('/var/vcap/bosh/etc/infrastructure') do - its(:content) { should include('softlayer') } + context "installed by system_parameters" do + describe file("/var/vcap/bosh/etc/infrastructure") do + its(:content) { should include("softlayer") } end end - describe 'ssh authentication' do - describe 'allows password authentication' do - subject { file('/etc/ssh/sshd_config') } + describe "ssh authentication" do + describe "allows password authentication" do + subject { file("/etc/ssh/sshd_config") } - its(:content) { should_not match /^PasswordAuthentication no$/ } - its(:content) { should match /^PasswordAuthentication yes$/ } + its(:content) { should_not match(/^PasswordAuthentication no$/) } + its(:content) { should match(/^PasswordAuthentication yes$/) } end end end diff --git a/bosh-stemcell/spec/stemcells/stig_spec.rb b/bosh-stemcell/spec/stemcells/stig_spec.rb index 6104150781..51a40ab1ce 100644 --- a/bosh-stemcell/spec/stemcells/stig_spec.rb +++ b/bosh-stemcell/spec/stemcells/stig_spec.rb @@ -1,7 +1,7 @@ -require 'spec_helper' +require "spec_helper" -describe 'Stig test case verification', stemcell_image: true, security_spec: true do - it 'confirms all stig test cases ran' do +describe "Stig test case verification", stemcell_image: true, security_spec: true do + it "confirms all stig test cases ran" do expected_base_stig_test_cases = %w[ V-38443 V-38444 @@ -142,20 +142,20 @@ ] expected_stig_test_cases = expected_base_stig_test_cases - case ENV['OS_NAME'] - when 'ubuntu' + case ENV["OS_NAME"] + when "ubuntu" expected_stig_test_cases = expected_base_stig_test_cases + [ - 'V-38668' + "V-38668" ] end - case ENV['IAAS'] - when 'softlayer' - expected_stig_test_cases = expected_stig_test_cases - [ - 'V-38613' + case ENV["IAAS"] + when "softlayer" + expected_stig_test_cases -= [ + "V-38613" ] end - expect($stig_test_cases.to_a).to match_array expected_stig_test_cases + expect($stig_test_cases.to_a).to match_array expected_stig_test_cases # standard:disable Style/GlobalVars end end diff --git a/bosh-stemcell/spec/stemcells/ubuntu_spec.rb b/bosh-stemcell/spec/stemcells/ubuntu_spec.rb index 8aa7b9adaa..3c6e3aa13f 100644 --- a/bosh-stemcell/spec/stemcells/ubuntu_spec.rb +++ b/bosh-stemcell/spec/stemcells/ubuntu_spec.rb @@ -1,50 +1,50 @@ -require 'spec_helper' +require "spec_helper" -describe 'Ubuntu 22.04 stemcell image', stemcell_image: true do - it_behaves_like 'All Stemcells' - it_behaves_like 'a Linux kernel based OS image' - it_behaves_like 'a Linux kernel module configured OS image' +describe "Ubuntu 22.04 stemcell image", stemcell_image: true do + it_behaves_like "All Stemcells" + it_behaves_like "a Linux kernel based OS image" + it_behaves_like "a Linux kernel module configured OS image" # linux_version_regex = '/linux-(.+)-([0-9]+.+)/d' linux_version_regex = 's/linux-(.+)-([0-9]+).([0-9]+).([0-9]+)-([0-9]+)/linux-\1-\2.\3/' - context 'installed by image_install_grub', { + context "installed by image_install_grub", { exclude_on_softlayer: true, exclude_on_vcloud: true, - exclude_on_vsphere: true, + exclude_on_vsphere: true } do - context 'for cloudstack infrastructure and xen hypervisor', { - exclude_on_alicloud: true, - exclude_on_aws: true, - exclude_on_vcloud: true, - exclude_on_vsphere: true, - exclude_on_google: true, - exclude_on_warden: true, - exclude_on_azure: true, - exclude_on_openstack: true, + context "for cloudstack infrastructure and xen hypervisor", { + exclude_on_alicloud: true, + exclude_on_aws: true, + exclude_on_vcloud: true, + exclude_on_vsphere: true, + exclude_on_google: true, + exclude_on_warden: true, + exclude_on_azure: true, + exclude_on_openstack: true } do describe file(grub_cfg_path) do - its(:content) { should match ' console=hvc0' } + its(:content) { should match " console=hvc0" } end end describe file(grub_cfg_path) do it { should be_file } its(:content) { should match 'set default="0"' } its(:content) { should match(/^set root=\(hd0,0\)$/) } - its(:content) { should match ' selinux=0' } - its(:content) { should match ' cgroup_enable=memory swapaccount=1' } - its(:content) { should match ' console=ttyS0,115200n8' } - its(:content) { should match ' earlyprintk=ttyS0 rootdelay=300' } - its(:content) { should match ' apparmor=1 security=apparmor' } + its(:content) { should match " selinux=0" } + its(:content) { should match " cgroup_enable=memory swapaccount=1" } + its(:content) { should match " console=ttyS0,115200n8" } + its(:content) { should match " earlyprintk=ttyS0 rootdelay=300" } + its(:content) { should match " apparmor=1 security=apparmor" } - it('should set the grub menu password (stig: V-38585)') { expect(subject.content).to match /password_pbkdf2 vcap/ } - it('should be of mode 600 (stig: V-38583)') { expect(subject).to be_mode(0600) } - it('should be owned by root (stig: V-38579)') { expect(subject).to be_owned_by('root') } - it('should be grouped into root (stig: V-38581)') { expect(subject.group).to eq('root') } - it('audits processes that start prior to auditd (CIS-8.1.3)') { expect(subject.content).to match ' audit=1' } + it("should set the grub menu password (stig: V-38585)") { expect(subject.content).to match(/password_pbkdf2 vcap/) } + it("should be of mode 600 (stig: V-38583)") { expect(subject).to be_mode(0o600) } + it("should be owned by root (stig: V-38579)") { expect(subject).to be_owned_by("root") } + it("should be grouped into root (stig: V-38581)") { expect(subject.group).to eq("root") } + it("audits processes that start prior to auditd (CIS-8.1.3)") { expect(subject.content).to match " audit=1" } end - context 'for default kernel', exclude_on_fips: true do + context "for default kernel", exclude_on_fips: true do describe file(grub_cfg_path) do it { should be_file } its(:content) { should match %r{linux\t/boot/vmlinuz-\S+-generic root=UUID=\S* ro } } @@ -52,88 +52,88 @@ end end - describe file('/boot/grub/menu.lst') do + describe file("/boot/grub/menu.lst") do before { skip 'until alicloud/aws/openstack stop clobbering the symlink with "update-grub"' } - it { should be_linked_to('./grub.cfg') } + it { should be_linked_to("./grub.cfg") } end end - context 'installed by image_install_grub_efi', { + context "installed by image_install_grub_efi", { exclude_on_alicloud: true, exclude_on_aws: true, exclude_on_cloudstack: true, exclude_on_google: true, exclude_on_warden: true, exclude_on_openstack: true, - exclude_on_azure: true, + exclude_on_azure: true } do - describe file('/boot/efi/EFI/grub/grub.cfg') do + describe file("/boot/efi/EFI/grub/grub.cfg") do it { should be_file } its(:content) { should match 'set default="0"' } - its(:content) { should match ' selinux=0' } - its(:content) { should match ' cgroup_enable=memory swapaccount=1' } - its(:content) { should match ' console=ttyS0,115200n8' } - its(:content) { should match ' earlyprintk=ttyS0 rootdelay=300' } - its(:content) { should match ' apparmor=1 security=apparmor' } + its(:content) { should match " selinux=0" } + its(:content) { should match " cgroup_enable=memory swapaccount=1" } + its(:content) { should match " console=ttyS0,115200n8" } + its(:content) { should match " earlyprintk=ttyS0 rootdelay=300" } + its(:content) { should match " apparmor=1 security=apparmor" } - it('should set the grub menu password (stig: V-38585)') { expect(subject.content).to match /password_pbkdf2 vcap/ } - it('should be of mode 600 (stig: V-38583)') { expect(subject).to be_mode(0600) } - it('should be owned by root (stig: V-38579)') { expect(subject).to be_owned_by('root') } - it('should be grouped into root (stig: V-38581)') { expect(subject.group).to eq('root') } - it('audits processes that start prior to auditd (CIS-8.1.3)') { expect(subject.content).to match ' audit=1' } + it("should set the grub menu password (stig: V-38585)") { expect(subject.content).to match(/password_pbkdf2 vcap/) } + it("should be of mode 600 (stig: V-38583)") { expect(subject).to be_mode(0o600) } + it("should be owned by root (stig: V-38579)") { expect(subject).to be_owned_by("root") } + it("should be grouped into root (stig: V-38581)") { expect(subject.group).to eq("root") } + it("audits processes that start prior to auditd (CIS-8.1.3)") { expect(subject.content).to match " audit=1" } end - context 'for default kernel', exclude_on_fips: true do - describe file('/boot/efi/EFI/grub/grub.cfg') do + context "for default kernel", exclude_on_fips: true do + describe file("/boot/efi/EFI/grub/grub.cfg") do it { should be_file } its(:content) { should match %r{linux\t/boot/vmlinuz-\S+-generic root=UUID=\S* ro } } its(:content) { should match %r{initrd\t/boot/initrd.img-\S+-generic} } end end - describe file('/boot/grub/menu.lst') do + describe file("/boot/grub/menu.lst") do before { skip 'until alicloud/aws/openstack stop clobbering the symlink with "update-grub"' } - it { should be_linked_to('./grub.cfg') } + it { should be_linked_to("./grub.cfg") } end end - context 'installed by image_install_grub_softlayer_two_partitions', { - exclude_on_alicloud: true, - exclude_on_aws: true, - exclude_on_cloudstack: true, - exclude_on_google: true, - exclude_on_vsphere: true, - exclude_on_vcloud: true, - exclude_on_warden: true, - exclude_on_openstack: true, - exclude_on_azure: true, + context "installed by image_install_grub_softlayer_two_partitions", { + exclude_on_alicloud: true, + exclude_on_aws: true, + exclude_on_cloudstack: true, + exclude_on_google: true, + exclude_on_vsphere: true, + exclude_on_vcloud: true, + exclude_on_warden: true, + exclude_on_openstack: true, + exclude_on_azure: true } do describe file(grub_cfg_path) do it { should be_file } its(:content) { should match 'set default="0"' } its(:content) { should match(/^set root=\(hd0,2\)$/) } its(:content) { should match %r{linux\t/vmlinuz-\S+-generic root=UUID=\S* ro } } - its(:content) { should match ' selinux=0' } - its(:content) { should match ' cgroup_enable=memory swapaccount=1' } - its(:content) { should match ' console=ttyS0,115200n8' } - its(:content) { should match ' earlyprintk=ttyS0 rootdelay=300' } + its(:content) { should match " selinux=0" } + its(:content) { should match " cgroup_enable=memory swapaccount=1" } + its(:content) { should match " console=ttyS0,115200n8" } + its(:content) { should match " earlyprintk=ttyS0 rootdelay=300" } its(:content) { should match %r{initrd\t/initrd.img-\S+-generic} } - its(:content) { should match ' apparmor=1 security=apparmor' } + its(:content) { should match " apparmor=1 security=apparmor" } - it('should set the grub menu password (stig: V-38585)') { expect(subject.content).to match /password_pbkdf2 vcap/ } - it('should be of mode 600 (stig: V-38583)') { expect(subject).to be_mode(0600) } - it('should be owned by root (stig: V-38579)') { expect(subject).to be_owned_by('root') } - it('should be grouped into root (stig: V-38581)') { expect(subject.group).to eq('root') } - it('audits processes that start prior to auditd (CIS-8.1.3)') { expect(subject.content).to match ' audit=1' } + it("should set the grub menu password (stig: V-38585)") { expect(subject.content).to match(/password_pbkdf2 vcap/) } + it("should be of mode 600 (stig: V-38583)") { expect(subject).to be_mode(0o600) } + it("should be owned by root (stig: V-38579)") { expect(subject).to be_owned_by("root") } + it("should be grouped into root (stig: V-38581)") { expect(subject.group).to eq("root") } + it("audits processes that start prior to auditd (CIS-8.1.3)") { expect(subject.content).to match " audit=1" } end - describe file('/boot/grub/menu.lst') do + describe file("/boot/grub/menu.lst") do before { skip 'until alicloud/aws/openstack stop clobbering the symlink with "update-grub"' } - it { should be_linked_to('./grub.cfg') } + it { should be_linked_to("./grub.cfg") } end end - context 'installs recent version of unshare so it gets the -p flag', { + context "installs recent version of unshare so it gets the -p flag", { exclude_on_alicloud: true, exclude_on_aws: true, exclude_on_azure: true, @@ -142,79 +142,78 @@ exclude_on_vcloud: true, exclude_on_vsphere: true, exclude_on_openstack: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - context 'so we can run upstart in as PID 1 in the container' do - describe file('/var/vcap/bosh/bin/unshare') do + context "so we can run upstart in as PID 1 in the container" do + describe file("/var/vcap/bosh/bin/unshare") do it { should be_file } it { should be_executable } - it { should be_owned_by('root') } - its(:group) { should eq('root') } + it { should be_owned_by("root") } + its(:group) { should eq("root") } end end end - context 'installed by system_parameters' do - describe file('/var/vcap/bosh/etc/operating_system') do - its(:content) { should match('ubuntu') } + context "installed by system_parameters" do + describe file("/var/vcap/bosh/etc/operating_system") do + its(:content) { should match("ubuntu") } end end - context 'installed by dev_tools_config' do - describe file('/var/vcap/bosh/etc/dev_tools_file_list') do - its(:content) { should match('/usr/bin/gcc') } + context "installed by dev_tools_config" do + describe file("/var/vcap/bosh/etc/dev_tools_file_list") do + its(:content) { should match("/usr/bin/gcc") } end end - context 'static libraries to remove' do - describe file('/var/vcap/bosh/etc/static_libraries_list') do + context "static libraries to remove" do + describe file("/var/vcap/bosh/etc/static_libraries_list") do it { should be_file } - it 'should be a proper superset of the installed static libraries' do + it "should be a proper superset of the installed static libraries" do libraries_to_remove = subject.content.split("\n") - found_libraries = command('find / -iname "*.a" | sort | uniq' ).stdout.split("\n") + found_libraries = command('find / -iname "*.a" | sort | uniq').stdout.split("\n") expect(libraries_to_remove).to include(*found_libraries) end end end - context 'modified by base_file_permissions' do - describe 'disallow unsafe setuid binaries' do - subject { command('find -L / -xdev -perm /ug=s -type f') } + context "modified by base_file_permissions" do + describe "disallow unsafe setuid binaries" do + subject { command("find -L / -xdev -perm /ug=s -type f") } - it ('includes the correct binaries') do + it("includes the correct binaries") do # expect(subject.stdout.split).to match_array(%w(/bin/su /usr/bin/sudo /usr/bin/sudoedit)) - expect(subject.stdout.split).to match_array(%w(/bin/su /bin/sudo /bin/sudoedit /usr/bin/su /usr/bin/sudo /usr/bin/sudoedit)) - + expect(subject.stdout.split).to match_array(%w[/bin/su /bin/sudo /bin/sudoedit /usr/bin/su /usr/bin/sudo /usr/bin/sudoedit]) end end end - context 'installed by system-network', { + context "installed by system-network", { exclude_on_warden: true } do - describe file('/etc/hostname') do + describe file("/etc/hostname") do it { should be_file } - its (:content) { should eq('bosh-stemcell') } + its(:content) { should eq("bosh-stemcell") } end end - context 'installed by system-network on some IaaSes', { + context "installed by system-network on some IaaSes", { exclude_on_vsphere: true, exclude_on_vcloud: true, exclude_on_warden: true, exclude_on_azure: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - describe file('/etc/network/interfaces') do + describe file("/etc/network/interfaces") do it { should be_file } - its(:content) { should match 'auto lo' } - its(:content) { should match 'iface lo inet loopback' } + its(:content) { should match "auto lo" } + its(:content) { should match "iface lo inet loopback" } end end - context 'installed by system-azure-network', { + context "installed by system-azure-network", { exclude_on_alicloud: true, exclude_on_aws: true, exclude_on_cloudstack: true, @@ -223,16 +222,16 @@ exclude_on_vsphere: true, exclude_on_warden: true, exclude_on_openstack: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - describe file('/etc/network/interfaces') do + describe file("/etc/network/interfaces") do it { should be_file } - its(:content) { should match 'auto eth0' } - its(:content) { should match 'iface eth0 inet dhcp' } + its(:content) { should match "auto eth0" } + its(:content) { should match "iface eth0 inet dhcp" } end end - context 'installed by system_open_vm_tools', { + context "installed by system_open_vm_tools", { exclude_on_alicloud: true, exclude_on_aws: true, exclude_on_cloudstack: true, @@ -241,67 +240,67 @@ exclude_on_warden: true, exclude_on_openstack: true, exclude_on_azure: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - describe package('open-vm-tools') do + describe package("open-vm-tools") do it { should be_installed } end - describe file('/etc/vmware-tools/tools.conf') do + describe file("/etc/vmware-tools/tools.conf") do it { should be_file } its(:content) { should match '\[guestinfo\]' } its(:content) { should match 'exclude-nics=veth\*,docker\*,virbr\*,silk-vtep,s-\*,ovs\*,erspan\*,nsx-container,antrea\*,\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?' } end end - context 'installed by system_softlayer_open_iscsi', { - exclude_on_alicloud: true, - exclude_on_aws: true, - exclude_on_cloudstack: true, - exclude_on_google: true, - exclude_on_vsphere: true, - exclude_on_vcloud: true, - exclude_on_warden: true, - exclude_on_openstack: true, - exclude_on_azure: true, + context "installed by system_softlayer_open_iscsi", { + exclude_on_alicloud: true, + exclude_on_aws: true, + exclude_on_cloudstack: true, + exclude_on_google: true, + exclude_on_vsphere: true, + exclude_on_vcloud: true, + exclude_on_warden: true, + exclude_on_openstack: true, + exclude_on_azure: true } do - describe package('open-iscsi') do + describe package("open-iscsi") do it { should be_installed } end end - context 'installed by system_softlayer_multipath_tools', { - exclude_on_alicloud: true, - exclude_on_aws: true, - exclude_on_cloudstack: true, - exclude_on_google: true, - exclude_on_vsphere: true, - exclude_on_vcloud: true, - exclude_on_warden: true, - exclude_on_openstack: true, - exclude_on_azure: true, + context "installed by system_softlayer_multipath_tools", { + exclude_on_alicloud: true, + exclude_on_aws: true, + exclude_on_cloudstack: true, + exclude_on_google: true, + exclude_on_vsphere: true, + exclude_on_vcloud: true, + exclude_on_warden: true, + exclude_on_openstack: true, + exclude_on_azure: true } do - describe package('multipath-tools') do + describe package("multipath-tools") do it { should be_installed } end end - context 'installed by system_softlayer_netplan', { - exclude_on_alicloud: true, - exclude_on_aws: true, - exclude_on_cloudstack: true, - exclude_on_google: true, - exclude_on_vsphere: true, - exclude_on_vcloud: true, - exclude_on_warden: true, - exclude_on_openstack: true, - exclude_on_azure: true, + context "installed by system_softlayer_netplan", { + exclude_on_alicloud: true, + exclude_on_aws: true, + exclude_on_cloudstack: true, + exclude_on_google: true, + exclude_on_vsphere: true, + exclude_on_vcloud: true, + exclude_on_warden: true, + exclude_on_openstack: true, + exclude_on_azure: true } do - describe package('netplan.io') do + describe package("netplan.io") do it { should be_installed } end end - context 'installed by image_vsphere_cdrom stage', { + context "installed by image_vsphere_cdrom stage", { exclude_on_alicloud: true, exclude_on_aws: true, exclude_on_cloudstack: true, @@ -310,37 +309,37 @@ exclude_on_warden: true, exclude_on_openstack: true, exclude_on_azure: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - describe file('/etc/udev/rules.d/60-cdrom_id.rules') do + describe file("/etc/udev/rules.d/60-cdrom_id.rules") do it { should be_file } - its(:content) { should eql(< e - @error = e - false - end + @content = file.content + JSON.parse(@content) + true + rescue JSON::ParserError => e + @error = e + false end failure_message do diff --git a/bosh-stemcell/spec/support/cis.rb b/bosh-stemcell/spec/support/cis.rb index 0ba8336e67..b7fa04fbd2 100644 --- a/bosh-stemcell/spec/support/cis.rb +++ b/bosh-stemcell/spec/support/cis.rb @@ -1,11 +1,9 @@ -require 'set' - -$cis_test_cases = Set.new +$cis_test_cases = Set.new # standard:disable Style/GlobalVars RSpec.configure do |config| config.before(:each) do |example| if example.full_description.include? "CIS-" - $cis_test_cases += example.full_description.scan /CIS-(?:\d+\.?)+/ + $cis_test_cases += example.full_description.scan(/CIS-(?:\d+\.?)+/) # standard:disable Style/GlobalVars end end end diff --git a/bosh-stemcell/spec/support/os_image.rb b/bosh-stemcell/spec/support/os_image.rb index e44ddb1047..fafe2de0fe 100644 --- a/bosh-stemcell/spec/support/os_image.rb +++ b/bosh-stemcell/spec/support/os_image.rb @@ -1,32 +1,30 @@ -require 'rspec/core/formatters/console_codes' -require 'shellout_types/chroot' -require_relative 'shellout_type_assertions' +require "rspec/core/formatters/console_codes" +require "shellout_types/chroot" +require_relative "shellout_type_assertions" RSpec.configure do |config| # shellout types tests support env variable 'OS_IMAGE', therefore check that os image tests # will not be executed when testing shellout types. unless config.inclusion_filter[:shellout_types] - if ENV['OS_IMAGE'] + if ENV["OS_IMAGE"] config.filter_run_including os_image: true - @os_image_dir = Dir.mktmpdir('os-image-rspec') + @os_image_dir = Dir.mktmpdir("os-image-rspec") ShelloutTypes::Chroot.chroot_dir = @os_image_dir config.add_setting(:os_image_dir, default: @os_image_dir) config.before(:suite) do - Bosh::Core::Shell.new.run("sudo tar xf #{ENV['OS_IMAGE']} -C #{config.os_image_dir}") + Bosh::Core::Shell.new.run("sudo tar xf #{ENV["OS_IMAGE"]} -C #{config.os_image_dir}") end config.after(:suite) do ShelloutTypes::Chroot.unmount_proc Bosh::Core::Shell.new.run("sudo rm -rf #{config.os_image_dir}") end - else + elsif ENV["STEMCELL_IMAGE"] # when running stemcell testings, we need also run the os image testings again - if ENV['STEMCELL_IMAGE'] - config.filter_run_including os_image: true - else - warning = 'Both ENV["OS_IMAGE"] and ENV["STEMCELL_IMAGE"] are not set, os_image test cases are being skipped.' - puts RSpec::Core::Formatters::ConsoleCodes.wrap(warning, :yellow) - end + config.filter_run_including os_image: true + else + warning = 'Both ENV["OS_IMAGE"] and ENV["STEMCELL_IMAGE"] are not set, os_image test cases are being skipped.' + puts RSpec::Core::Formatters::ConsoleCodes.wrap(warning, :yellow) end end # explicitly disable os image tests when running 'bundle exec rspec spec/' for diff --git a/bosh-stemcell/spec/support/os_image_chrony_shared_examples.rb b/bosh-stemcell/spec/support/os_image_chrony_shared_examples.rb index ececcae20e..abef6bb6bd 100644 --- a/bosh-stemcell/spec/support/os_image_chrony_shared_examples.rb +++ b/bosh-stemcell/spec/support/os_image_chrony_shared_examples.rb @@ -1,12 +1,12 @@ -shared_examples_for 'an os with chrony' do - describe '(stig: V-38620 V-38621 V-260520)' do - describe file('/var/vcap/bosh/bin/sync-time') do +shared_examples_for "an os with chrony" do + describe "(stig: V-38620 V-38621 V-260520)" do + describe file("/var/vcap/bosh/bin/sync-time") do it { should be_file } its(:content) { should match(/chronyc reload sources/) } its(:content) { should match(/chronyc waitsync 10/) } end - describe file('/etc/chrony/chrony.conf') do + describe file("/etc/chrony/chrony.conf") do it { should be_file } its(:content) { should match(/makestep 1 -1/) } end diff --git a/bosh-stemcell/spec/support/os_image_linux_kernel_modules_shared_examples.rb b/bosh-stemcell/spec/support/os_image_linux_kernel_modules_shared_examples.rb index 5fe5fdb2a6..b18963a74c 100644 --- a/bosh-stemcell/spec/support/os_image_linux_kernel_modules_shared_examples.rb +++ b/bosh-stemcell/spec/support/os_image_linux_kernel_modules_shared_examples.rb @@ -1,92 +1,92 @@ -shared_examples_for 'a Linux kernel module configured OS image' do - context 'prevent bluetooth module from being loaded (stig: V-38682)' do - describe file('/etc/modprobe.d/blacklist.conf') do +shared_examples_for "a Linux kernel module configured OS image" do + context "prevent bluetooth module from being loaded (stig: V-38682)" do + describe file("/etc/modprobe.d/blacklist.conf") do it { should be_file } - its(:content) { should match 'install bluetooth /bin/true' } + its(:content) { should match "install bluetooth /bin/true" } end end - context 'prevent tipc module from being loaded (stig: V-38517)' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'install tipc /bin/true' } + context "prevent tipc module from being loaded (stig: V-38517)" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "install tipc /bin/true" } end end - context 'prevent sctp module from being loaded (stig: V-38515)' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'install sctp /bin/true' } + context "prevent sctp module from being loaded (stig: V-38515)" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "install sctp /bin/true" } end end - context 'prevent dccp module from being loaded (stig: V-38514)' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'install dccp /bin/true' } + context "prevent dccp module from being loaded (stig: V-38514)" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "install dccp /bin/true" } end end - context 'prevent bluetooth service from being enabled (stig: V-38691)' do - describe service('bluetooth') do + context "prevent bluetooth service from being enabled (stig: V-38691)" do + describe service("bluetooth") do it { should_not be_enabled } end end - context 'prevent USB module from being loaded (stig: V-38490)' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'install usb-storage /bin/true' } + context "prevent USB module from being loaded (stig: V-38490)" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "install usb-storage /bin/true" } end end - context 'prevent ipv6 module from being loaded (stig: V-38546) (stig: V-38444) (stig: V-38553) (stig: V-38551)' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'options ipv6 disable=1' } + context "prevent ipv6 module from being loaded (stig: V-38546) (stig: V-38444) (stig: V-38553) (stig: V-38551)" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "options ipv6 disable=1" } end end - context 'prevent cramfs module from being loaded (CIS-2.18)' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'install cramfs /bin/true' } + context "prevent cramfs module from being loaded (CIS-2.18)" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "install cramfs /bin/true" } end end - context 'prevent freevxfs module from being loaded (CIS-2.19)' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'install freevxfs /bin/true' } + context "prevent freevxfs module from being loaded (CIS-2.19)" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "install freevxfs /bin/true" } end end - context 'prevent jffs2 module from being loaded (CIS-2.20)' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'install jffs2 /bin/true' } + context "prevent jffs2 module from being loaded (CIS-2.20)" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "install jffs2 /bin/true" } end end - context 'prevent hfs module from being loaded (CIS-2.21)' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'install hfs /bin/true' } + context "prevent hfs module from being loaded (CIS-2.21)" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "install hfs /bin/true" } end end - context 'prevent hfsplus module from being loaded (CIS-2.22)' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'install hfsplus /bin/true' } + context "prevent hfsplus module from being loaded (CIS-2.22)" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "install hfsplus /bin/true" } end end - context 'prevent squashfs module from being loaded (CIS-2.23)' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'install squashfs /bin/true' } + context "prevent squashfs module from being loaded (CIS-2.23)" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "install squashfs /bin/true" } end end - context 'disable RDS (CIS-7.5.3)' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'install rds /bin/true' } + context "disable RDS (CIS-7.5.3)" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "install rds /bin/true" } end end - context 'prevent floppy module from being loaded' do - describe file('/etc/modprobe.d/blacklist.conf') do - its(:content) { should match 'install floppy /bin/true' } + context "prevent floppy module from being loaded" do + describe file("/etc/modprobe.d/blacklist.conf") do + its(:content) { should match "install floppy /bin/true" } end end end diff --git a/bosh-stemcell/spec/support/os_image_linux_kernel_shared_examples.rb b/bosh-stemcell/spec/support/os_image_linux_kernel_shared_examples.rb index 4b59bd0d74..c6c0307ba3 100644 --- a/bosh-stemcell/spec/support/os_image_linux_kernel_shared_examples.rb +++ b/bosh-stemcell/spec/support/os_image_linux_kernel_shared_examples.rb @@ -1,95 +1,94 @@ -shared_examples_for 'a Linux kernel based OS image' do - +shared_examples_for "a Linux kernel based OS image" do def kernel_version - command('ls -rt /lib/modules | tail -1').stdout.chomp + command("ls -rt /lib/modules | tail -1").stdout.chomp end - context 'installed by bosh_sysctl' do - describe file('/etc/sysctl.d/60-bosh-sysctl.conf') do + context "installed by bosh_sysctl" do + describe file("/etc/sysctl.d/60-bosh-sysctl.conf") do it { should be_file } - it 'must not accept ICMPv4 secure redirect packets on any interface (stig: V-38526)' do - expect(subject.content).to match /^net.ipv4.conf.all.secure_redirects=0$/ + it "must not accept ICMPv4 secure redirect packets on any interface (stig: V-38526)" do + expect(subject.content).to match(/^net.ipv4.conf.all.secure_redirects=0$/) end - it 'must not accept ICMPv4 redirect packets on any interface (stig: V-38524)' do - expect(subject.content).to match /^net.ipv4.conf.all.accept_redirects=0$/ + it "must not accept ICMPv4 redirect packets on any interface (stig: V-38524)" do + expect(subject.content).to match(/^net.ipv4.conf.all.accept_redirects=0$/) end - it 'must not accept IPv4 source-routed packets by default (stig: V-38529)' do - expect(subject.content).to match /^net.ipv4.conf.default.accept_source_route=0$/ + it "must not accept IPv4 source-routed packets by default (stig: V-38529)" do + expect(subject.content).to match(/^net.ipv4.conf.default.accept_source_route=0$/) end - it 'must not accept IPv4 source-routed packets on any interface (stig: V-38523)' do - expect(subject.content).to match /^net.ipv4.conf.all.accept_source_route=0$/ + it "must not accept IPv4 source-routed packets on any interface (stig: V-38523)" do + expect(subject.content).to match(/^net.ipv4.conf.all.accept_source_route=0$/) end - it 'must ignore ICMPv6 redirects by default (stig: V-38548)' do - expect(subject.content).to match /^net.ipv6.conf.default.accept_redirects=0$/ + it "must ignore ICMPv6 redirects by default (stig: V-38548)" do + expect(subject.content).to match(/^net.ipv6.conf.default.accept_redirects=0$/) end - it 'must not accept ICMPv4 secure redirect packets by default (stig: V-38532)' do - expect(subject.content).to match /^net.ipv4.conf.default.secure_redirects=0$/ + it "must not accept ICMPv4 secure redirect packets by default (stig: V-38532)" do + expect(subject.content).to match(/^net.ipv4.conf.default.secure_redirects=0$/) end - it 'must not send ICMPv4 redirects by default (stig: V-38600)' do - expect(subject.content).to match /^net.ipv4.conf.default.send_redirects=0$/ + it "must not send ICMPv4 redirects by default (stig: V-38600)" do + expect(subject.content).to match(/^net.ipv4.conf.default.send_redirects=0$/) end - it 'must not send ICMPv4 redirects from any interface. (stig: V-38601)' do - expect(subject.content).to match /^net.ipv4.conf.all.send_redirects=0$/ + it "must not send ICMPv4 redirects from any interface. (stig: V-38601)" do + expect(subject.content).to match(/^net.ipv4.conf.all.send_redirects=0$/) end - it 'must use reverse path filtering for IPv4 network traffic on all interfaces. (stig: V-38542) (CIS-7.2.7)' do - expect(subject.content).to match /^net.ipv4.conf.all.rp_filter=1$/ + it "must use reverse path filtering for IPv4 network traffic on all interfaces. (stig: V-38542) (CIS-7.2.7)" do + expect(subject.content).to match(/^net.ipv4.conf.all.rp_filter=1$/) end - it 'must use reverse path filtering for IPv4 network traffic by default. (stig: V-38544) (CIS-7.2.7)' do - expect(subject.content).to match /^net.ipv4.conf.default.rp_filter=1$/ + it "must use reverse path filtering for IPv4 network traffic by default. (stig: V-38544) (CIS-7.2.7)" do + expect(subject.content).to match(/^net.ipv4.conf.default.rp_filter=1$/) end - it 'must log suspicious packets on all interfaces (CIS-3.2.4)' do - expect(subject.content).to match /^net.ipv4.conf.all.log_martians=1$/ + it "must log suspicious packets on all interfaces (CIS-3.2.4)" do + expect(subject.content).to match(/^net.ipv4.conf.all.log_martians=1$/) end - it 'must log suspicious packets by default (CIS-3.2.4)' do - expect(subject.content).to match /^net.ipv4.conf.default.log_martians=1$/ + it "must log suspicious packets by default (CIS-3.2.4)" do + expect(subject.content).to match(/^net.ipv4.conf.default.log_martians=1$/) end - it 'should disable ipv6 router advertisements on all interfaces (CIS-7.3.1)' do - expect(subject.content).to match /^net.ipv6.conf.all.accept_ra=0$/ + it "should disable ipv6 router advertisements on all interfaces (CIS-7.3.1)" do + expect(subject.content).to match(/^net.ipv6.conf.all.accept_ra=0$/) end - it 'should disable ipv6 router advertisements by default (CIS-7.3.1)' do - expect(subject.content).to match /^net.ipv6.conf.default.accept_ra=0$/ + it "should disable ipv6 router advertisements by default (CIS-7.3.1)" do + expect(subject.content).to match(/^net.ipv6.conf.default.accept_ra=0$/) end - it 'should flush ipv6 routes (CIS-7.3.1)' do - expect(subject.content).to match /^net.ipv6.route.flush=1$/ + it "should flush ipv6 routes (CIS-7.3.1)" do + expect(subject.content).to match(/^net.ipv6.route.flush=1$/) end - it 'should disable response to broadcast requests (CIS-7.2.5)' do - expect(subject.content).to match /^net.ipv4.icmp_echo_ignore_broadcasts=1$/ + it "should disable response to broadcast requests (CIS-7.2.5)" do + expect(subject.content).to match(/^net.ipv4.icmp_echo_ignore_broadcasts=1$/) end - it 'enables bad error message protection (CIS-7.2.6)' do - expect(subject.content).to match /^net.ipv4.icmp_ignore_bogus_error_responses=1$/ + it "enables bad error message protection (CIS-7.2.6)" do + expect(subject.content).to match(/^net.ipv4.icmp_ignore_bogus_error_responses=1$/) end - it 'sets tcp syncookies' do - expect(subject.content).to match /^net.ipv4.tcp_syncookies=1$/ + it "sets tcp syncookies" do + expect(subject.content).to match(/^net.ipv4.tcp_syncookies=1$/) end - it 'increases tcp_max_syn_backlog to 1280' do - expect(subject.content).to match /^net.ipv4.tcp_max_syn_backlog=1280$/ + it "increases tcp_max_syn_backlog to 1280" do + expect(subject.content).to match(/^net.ipv4.tcp_max_syn_backlog=1280$/) end - it 'should disable core dumps (CIS-4.1)' do - expect(subject.content).to match /^fs.suid_dumpable=0$/ + it "should disable core dumps (CIS-4.1)" do + expect(subject.content).to match(/^fs.suid_dumpable=0$/) end end - describe file('/etc/sysctl.d/60-bosh-sysctl-neigh-fix.conf') do + describe file("/etc/sysctl.d/60-bosh-sysctl-neigh-fix.conf") do it { should be_file } end end diff --git a/bosh-stemcell/spec/support/os_image_shared_examples.rb b/bosh-stemcell/spec/support/os_image_shared_examples.rb index bdc54ca1b1..665b290ed4 100644 --- a/bosh-stemcell/spec/support/os_image_shared_examples.rb +++ b/bosh-stemcell/spec/support/os_image_shared_examples.rb @@ -1,104 +1,104 @@ -shared_examples_for 'every OS image' do - let(:sshd_config) { file('/etc/ssh/sshd_config') } - let(:etc_environment) { file('/etc/environment') } - let(:syslog_config) { file('/etc/audisp/plugins.d/syslog.conf') } +shared_examples_for "every OS image" do + let(:sshd_config) { file("/etc/ssh/sshd_config") } + let(:etc_environment) { file("/etc/environment") } + let(:syslog_config) { file("/etc/audisp/plugins.d/syslog.conf") } - context 'etc_environment' do - it 'should have /var/vcap/bosh/bin on the PATH' do + context "etc_environment" do + it "should have /var/vcap/bosh/bin on the PATH" do expect(etc_environment.content).to match( - %r{PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/var/vcap/bosh/bin"}, + %r{PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/var/vcap/bosh/bin"} ) end end - context 'installed by base_' do - describe command('dig -v') do # required by agent - it('has exit status of 0') { expect(subject.exit_status).to eq 0 } + context "installed by base_" do + describe command("dig -v") do # required by agent + it("has exit status of 0") { expect(subject.exit_status).to eq 0 } end - describe command('which crontab') do - it('has exit status of 0') { expect(subject.exit_status).to eq 0 } + describe command("which crontab") do + it("has exit status of 0") { expect(subject.exit_status).to eq 0 } end end - context 'installed by bosh_sudoers' do - describe file('/etc/sudoers') do + context "installed by bosh_sudoers" do + describe file("/etc/sudoers") do it { should be_file } - its(:content) { should match /%bosh_sudoers ALL=\(ALL\) NOPASSWD: ALL/m } - its(:content) { should match '#includedir /etc/sudoers.d' } + its(:content) { should match(/%bosh_sudoers ALL=\(ALL\) NOPASSWD: ALL/m) } + its(:content) { should match "#includedir /etc/sudoers.d" } end end - context 'effective GID for UID vcap' do + context "effective GID for UID vcap" do describe command("id -gn vcap") do - its (:stdout) { should eq "vcap\n" } + its(:stdout) { should eq "vcap\n" } end end - context 'The sudo command must require authentication (stig: V-58901)' do + context "The sudo command must require authentication (stig: V-58901)" do describe command("egrep -sh 'NOPASSWD|!authenticate' /etc/sudoers /etc/sudoers.d/* | egrep -v '^#|%bosh_sudoers\s' --") do - its (:stdout) { should eq('') } + its(:stdout) { should eq("") } end end - context 'installed by bosh_users' do + context "installed by bosh_users" do describe command("grep -q 'export PATH=/var/vcap/bosh/bin:$PATH\n' /root/.bashrc") do - it('has exit status of 0') { expect(subject.exit_status).to eq 0 } + it("has exit status of 0") { expect(subject.exit_status).to eq 0 } end describe command("grep -q 'export PATH=/var/vcap/bosh/bin:$PATH\n' /home/vcap/.bashrc") do - it('has exit status of 0') { expect(subject.exit_status).to eq 0 } + it("has exit status of 0") { expect(subject.exit_status).to eq 0 } end - describe file('/root/.bashrc') do + describe file("/root/.bashrc") do it { should be_file } - its(:content) { should match 'source /etc/profile.d/00-bosh-ps1' } + its(:content) { should match "source /etc/profile.d/00-bosh-ps1" } end - describe file('/home/vcap/.bashrc') do + describe file("/home/vcap/.bashrc") do it { should be_file } - its(:content) { should match 'source /etc/profile.d/00-bosh-ps1' } + its(:content) { should match "source /etc/profile.d/00-bosh-ps1" } end - describe file('/etc/skel/.bashrc') do + describe file("/etc/skel/.bashrc") do it { should be_file } - its(:content) { should match 'source /etc/profile.d/00-bosh-ps1' } + its(:content) { should match "source /etc/profile.d/00-bosh-ps1" } end - describe file('/etc/profile.d/00-bosh-ps1') do + describe file("/etc/profile.d/00-bosh-ps1") do it { should be_file } end - describe command('grep -q .bashrc /root/.profile') do - it('has exit status of 0') { expect(subject.exit_status).to eq 0 } + describe command("grep -q .bashrc /root/.profile") do + it("has exit status of 0") { expect(subject.exit_status).to eq 0 } end - describe command('stat -c %a ~vcap') do - it('includes restrictive permissions') { expect(subject.stdout.strip).to eq('700') } + describe command("stat -c %a ~vcap") do + it("includes restrictive permissions") { expect(subject.stdout.strip).to eq("700") } end - describe user('vcap') do - it { should be_in_group 'bosh_sshers' } + describe user("vcap") do + it { should be_in_group "bosh_sshers" } end end - context '/etc/securetty' do - context 'disallows virtual console access (stig: V-38492)' do + context "/etc/securetty" do + context "disallows virtual console access (stig: V-38492)" do describe command("grep '^vc/[0-9]+' /etc/securetty") do its(:stdout) { should be_empty } end end - context 'restricts root login to system console (CIS-9.4)' do + context "restricts root login to system console (CIS-9.4)" do describe command("awk '$1 !~ /^(console|#.*|\s*)$/ { print; f=1 } END { if (!f) print \"none\" }' /etc/securetty") do its(:stdout) { should eq "none\n" } end end end - context 'Disable IPv6 Redirect Acceptance - all (CIS-7.3.2)' do - describe file('/etc/sysctl.d/60-bosh-sysctl.conf') do - its (:content) { should match /^[\s]*net\.ipv6\.conf\.all\.accept_redirects[\s]*=/ } + context "Disable IPv6 Redirect Acceptance - all (CIS-7.3.2)" do + describe file("/etc/sysctl.d/60-bosh-sysctl.conf") do + its(:content) { should match(/^\s*net\.ipv6\.conf\.all\.accept_redirects\s*=/) } end end @@ -106,8 +106,8 @@ # rsyslog would not be able to dropping privileges to another user. Because of this we've decided # it should run as the limited scope user 'syslog' which still prevents 'vcap' from reading the # logs (which is the original intention of the STIG). - context 'all rsyslog-generated log files must be owned by syslog. (stig: V-38519 V-38518 V-38623)' do - it 'secures rsyslog.conf-referenced files correctly' do + context "all rsyslog-generated log files must be owned by syslog. (stig: V-38519 V-38518 V-38623)" do + it "secures rsyslog.conf-referenced files correctly" do command( [ # get all logfile directives @@ -117,325 +117,324 @@ # remove leading characters "sed 's%^[ \t]*%%' | rev | awk '{ print $1 }' | rev | sed 's%^-%%'", # unique tests - 'sort | uniq', - ].join('|') + "sort | uniq" + ].join("|") ).stdout.split("\n").each do |logfile| f = file(logfile) - expect(f).to be_owned_by('syslog') # stig: V-38518 - expect(f.group).to eq('syslog') # stig: V-38519 - expect(f).to be_mode(0600) # stig: V-38623 + expect(f).to be_owned_by("syslog") # stig: V-38518 + expect(f.group).to eq("syslog") # stig: V-38519 + expect(f).to be_mode(0o600) # stig: V-38623 - expect(f).to_not be_readable_by_user('vcap') + expect(f).to_not be_readable_by_user("vcap") end end end - context 'installed by rsyslog_logrotate' do - describe file('/etc/logrotate.d/rsyslog') do + context "installed by rsyslog_logrotate" do + describe file("/etc/logrotate.d/rsyslog") do it { should be_file } - it 'should reload rsyslog on rotate' do - expect(subject.content).to match /sudo kill -SIGHUP \$\(cat \/var\/run\/rsyslogd\.pid\)/ + it "should reload rsyslog on rotate" do + expect(subject.content).to match(/sudo kill -SIGHUP \$\(cat \/var\/run\/rsyslogd\.pid\)/) end - it 'should not restart rsyslog on rotate so that logs are not lost' do - expect(subject.content).not_to match 'restart rsyslog' + it "should not restart rsyslog on rotate so that logs are not lost" do + expect(subject.content).not_to match "restart rsyslog" end - end end - context 'installed by rsyslog_config' do + context "installed by rsyslog_config" do before do - Open3.capture3("sudo mount --bind /dev #{ @os_image_dir }/dev") unless @os_image_dir.nil? + Open3.capture3("sudo mount --bind /dev #{@os_image_dir}/dev") unless @os_image_dir.nil? end after do - Open3.capture3("sudo umount #{ @os_image_dir }/dev") unless @os_image_dir.nil? + Open3.capture3("sudo umount #{@os_image_dir}/dev") unless @os_image_dir.nil? end - describe file('/etc/rsyslog.conf') do + describe file("/etc/rsyslog.conf") do it { should be_file } - its(:content) { should match /^module\( load="omrelp" tls.tlslib="openssl" \)$/ } + its(:content) { should match(/^module\( load="omrelp" tls.tlslib="openssl" \)$/) } its(:content) { should match '\$FileGroup syslog' } # stig: V-38519 its(:content) { should match '\$FileOwner syslog' } # stig: V-38518 its(:content) { should match '\$FileCreateMode 0600' } # stig: V-38623 end - describe user('syslog') do + describe user("syslog") do it { should exist } - it { should be_in_group 'vcap' } + it { should be_in_group "vcap" } end - describe group('adm') do + describe group("adm") do it { should exist } end - describe group('bosh_sudoers') do + describe group("bosh_sudoers") do it { should exist } end - describe group('bosh_sshers') do + describe group("bosh_sshers") do it { should exist } end - describe command('rsyslogd -N 1') do - it('has exit status of 0') { expect(subject.exit_status).to eq 0 } - it('reports its version number as 8') { expect(subject.stderr).to match /version 8/ } + describe command("rsyslogd -N 1") do + it("has exit status of 0") { expect(subject.exit_status).to eq 0 } + it("reports its version number as 8") { expect(subject.stderr).to match(/version 8/) } end - describe file('/etc/rsyslog.conf') do + describe file("/etc/rsyslog.conf") do it { should be_file } - its(:content) { should match('ModLoad imklog') } + its(:content) { should match("ModLoad imklog") } end end - context 'auditd should be installed but not enabled (stig: V-38628) (stig: V-38631) (stig: V-38632)' do - describe service('auditd') do + context "auditd should be installed but not enabled (stig: V-38628) (stig: V-38631) (stig: V-38632)" do + describe service("auditd") do # Agent is responsible for starting auditd it { should_not be_enabled } end end - context 'configured by base_ssh' do - it 'is secure' do - expect(sshd_config).to be_mode(0600) + context "configured by base_ssh" do + it "is secure" do + expect(sshd_config).to be_mode(0o600) end - it 'disallows root login (stig: V-38613)', exclude_on_softlayer: true do + it "disallows root login (stig: V-38613)", exclude_on_softlayer: true do expect(sshd_config.content).to match(/^PermitRootLogin no$/) end - it 'allows PrintLastLog (stig: V-38484)' do + it "allows PrintLastLog (stig: V-38484)" do expect(sshd_config.content).to match(/^PrintLastLog yes$/) end - it 'disables insecure DSA host keys' do + it "disables insecure DSA host keys" do expect(sshd_config.content).to_not match(/HostKey \/etc\/ssh\/ssh_host_dsa_key$/) end - it 'enables RSA, ECDSA, ED25519 host keys', exclude_on_fips: true do + it "enables RSA, ECDSA, ED25519 host keys", exclude_on_fips: true do matches = sshd_config.content.scan(/^HostKey.*/) - expect(matches).to contain_exactly('HostKey /etc/ssh/ssh_host_rsa_key', 'HostKey /etc/ssh/ssh_host_ecdsa_key', 'HostKey /etc/ssh/ssh_host_ed25519_key') + expect(matches).to contain_exactly("HostKey /etc/ssh/ssh_host_rsa_key", "HostKey /etc/ssh/ssh_host_ecdsa_key", "HostKey /etc/ssh/ssh_host_ed25519_key") end - it 'disallows X11 forwarding' do + it "disallows X11 forwarding" do expect(sshd_config.content).to match(/^X11Forwarding no$/) expect(sshd_config.content).to_not match(/^X11DisplayOffset/) end - it 'sets MaxAuthTries to 3' do + it "sets MaxAuthTries to 3" do expect(sshd_config.content).to match(/^MaxAuthTries 3$/) end - it 'sets PermitEmptyPasswords to no (stig: V-38614)' do + it "sets PermitEmptyPasswords to no (stig: V-38614)" do expect(sshd_config.content).to match(/^PermitEmptyPasswords no$/) end - it 'sets HostbasedAuthentication to no (stig: V-38612)' do + it "sets HostbasedAuthentication to no (stig: V-38612)" do expect(sshd_config.content).to match(/^HostbasedAuthentication no$/) end - it 'sets Banner to /etc/issue.net (stig: V-38615 V-38593) (CIS-11.1)' do + it "sets Banner to /etc/issue.net (stig: V-38615 V-38593) (CIS-11.1)" do expect(sshd_config.content).to match(/^Banner \/etc\/issue.net$/) - banner = file('/etc/issue.net') + banner = file("/etc/issue.net") # multiline message - expect(banner.content).to match('Unauthorized use is strictly prohibited. All access and activity') - expect(banner.content).to match('is subject to logging and monitoring.') - expect(banner).to be_mode(0644) - expect(banner).to be_owned_by('root') - expect(banner.group).to eq('root') + expect(banner.content).to match("Unauthorized use is strictly prohibited. All access and activity") + expect(banner.content).to match("is subject to logging and monitoring.") + expect(banner).to be_mode(0o644) + expect(banner).to be_owned_by("root") + expect(banner.group).to eq("root") end - it 'sets /etc/issue (CIS-11.1)' do - banner = file('/etc/issue') + it "sets /etc/issue (CIS-11.1)" do + banner = file("/etc/issue") # multiline message - expect(banner.content).to match('Unauthorized use is strictly prohibited. All access and activity') - expect(banner.content).to match('is subject to logging and monitoring.') - expect(banner).to be_mode(0644) - expect(banner).to be_owned_by('root') - expect(banner.group).to eq('root') + expect(banner.content).to match("Unauthorized use is strictly prohibited. All access and activity") + expect(banner.content).to match("is subject to logging and monitoring.") + expect(banner).to be_mode(0o644) + expect(banner).to be_owned_by("root") + expect(banner.group).to eq("root") end - it 'has an empty /etc/motd (CIS-11.1)' do - banner = file('/etc/motd') + it "has an empty /etc/motd (CIS-11.1)" do + banner = file("/etc/motd") expect(banner.content).to be_empty - expect(banner).to be_mode(0644) - expect(banner).to be_owned_by('root') - expect(banner.group).to eq('root') + expect(banner).to be_mode(0o644) + expect(banner).to be_owned_by("root") + expect(banner.group).to eq("root") end - it 'disables motd' do - banner = file('/etc/default/motd-news') - expect(banner.content).to match('ENABLED=0') + it "disables motd" do + banner = file("/etc/default/motd-news") + expect(banner.content).to match("ENABLED=0") end - it 'sets IgnoreRhosts to yes (stig: V-38611)' do + it "sets IgnoreRhosts to yes (stig: V-38611)" do expect(sshd_config.content).to match(/^IgnoreRhosts yes$/) end - it 'sets ClientAliveInterval to 180 seconds (CIS-5.2.12)' do + it "sets ClientAliveInterval to 180 seconds (CIS-5.2.12)" do expect(sshd_config.content).to match(/^ClientAliveInterval 180$/) end - it 'sets LoginGraceTime to 60 seconds (CIS-5.2.13)' do + it "sets LoginGraceTime to 60 seconds (CIS-5.2.13)" do expect(sshd_config.content).to match(/^LoginGraceTime 60$/) end - it 'sets Compression to delayed seconds (stig: V-75851)' do + it "sets Compression to delayed seconds (stig: V-75851)" do expect(sshd_config.content).to match(/^Compression delayed$/) end - it 'sets PermitUserEnvironment to no (stig: V-38616)' do + it "sets PermitUserEnvironment to no (stig: V-38616)" do expect(sshd_config.content).to match(/^PermitUserEnvironment no$/) end - it 'sets ClientAliveCountMax to 1 (stig: V-75837)' do + it "sets ClientAliveCountMax to 1 (stig: V-75837)" do expect(sshd_config.content).to match(/^ClientAliveCountMax 1$/) end - it 'sets Protocol to 2 (stig: V-38607)' do + it "sets Protocol to 2 (stig: V-38607)" do expect(sshd_config.content).to match(/^Protocol 2$/) - end + end - it 'sets AllowGroups to bosh_sshers (CIS 9.3.13)', exclude_on_softlayer: true do + it "sets AllowGroups to bosh_sshers (CIS 9.3.13)", exclude_on_softlayer: true do expect(sshd_config.content).to match(/^AllowGroups bosh_sshers$/) end - it 'sets DenyUsers to root', exclude_on_softlayer: true do + it "sets DenyUsers to root", exclude_on_softlayer: true do expect(sshd_config.content).to match(/^DenyUsers root$/) end end - describe 'PAM configuration' do - context 'blank password logins are disabled (stig: V-38497)' do - describe command('grep -R nullok /etc/pam.d') do - it('exits 1') { expect(subject.exit_status).to eq 1 } - its (:stdout) { should eq('') } + describe "PAM configuration" do + context "blank password logins are disabled (stig: V-38497)" do + describe command("grep -R nullok /etc/pam.d") do + it("exits 1") { expect(subject.exit_status).to eq 1 } + its(:stdout) { should eq("") } end end - context 'a stronger hashing algorithm should be used (stig: V-38574)' do + context "a stronger hashing algorithm should be used (stig: V-38574)" do describe command('egrep -h -r "^password" /etc/pam.d | grep pam_unix.so | grep -v sha512') do - it('exits 1') { expect(subject.exit_status).to eq 1 } - its (:stdout) { should eq('') } + it("exits 1") { expect(subject.exit_status).to eq 1 } + its(:stdout) { should eq("") } end end end - context 'anacron is configured' do - describe file('/etc/anacrontab') do + context "anacron is configured" do + describe file("/etc/anacrontab") do it { should be_file } - it 'declares RANDOM_DELAY early on' do + it "declares RANDOM_DELAY early on" do lines = subject.content.lines.map(&:strip) - random_delay_index = lines.index('RANDOM_DELAY=60') + random_delay_index = lines.index("RANDOM_DELAY=60") expect(random_delay_index).not_to be_nil (0..random_delay_index).each do |idx| - expect(lines[idx]).not_to(match /(\S+\s+){2}cron\./) + expect(lines[idx]).not_to(match(/(\S+\s+){2}cron\./)) end end end end - context 'tftp is not installed (stig: V-38701, V-38609, V-38606)' do + context "tftp is not installed (stig: V-38701, V-38609, V-38606)" do it "shouldn't be installed" do - expect(package('tftp')).to_not be_installed - expect(package('tftpd')).to_not be_installed - expect(package('tftp-server')).to_not be_installed - expect(package('atftp')).to_not be_installed - expect(package('atftpd')).to_not be_installed - expect(package('libnet-tftp-ruby')).to_not be_installed - expect(package('python-tftpy')).to_not be_installed - expect(package('tftp-hpa')).to_not be_installed + expect(package("tftp")).to_not be_installed + expect(package("tftpd")).to_not be_installed + expect(package("tftp-server")).to_not be_installed + expect(package("atftp")).to_not be_installed + expect(package("atftpd")).to_not be_installed + expect(package("libnet-tftp-ruby")).to_not be_installed + expect(package("python-tftpy")).to_not be_installed + expect(package("tftp-hpa")).to_not be_installed end end - context 'vsftpd is not installed (stig: V-38599)' do + context "vsftpd is not installed (stig: V-38599)" do it "shouldn't be installed" do - expect(package('vsftpd')).to_not be_installed - expect(package('ftpd')).to_not be_installed + expect(package("vsftpd")).to_not be_installed + expect(package("ftpd")).to_not be_installed end end - context 'telnet-server is not installed (stig: V-38587, V-38589)' do + context "telnet-server is not installed (stig: V-38587, V-38589)" do it "shouldn't be installed" do - expect(package('telnet-server')).to_not be_installed - expect(package('telnetd')).to_not be_installed - expect(package('telnetd-ssl')).to_not be_installed - expect(package('telnet-server-krb5')).to_not be_installed - expect(package('inetutils-telnetd')).to_not be_installed - expect(package('mactelnet-server')).to_not be_installed + expect(package("telnet-server")).to_not be_installed + expect(package("telnetd")).to_not be_installed + expect(package("telnetd-ssl")).to_not be_installed + expect(package("telnet-server-krb5")).to_not be_installed + expect(package("inetutils-telnetd")).to_not be_installed + expect(package("mactelnet-server")).to_not be_installed end end - context 'gconf2 is not installed (stig: V-43150) (stig: V-38638) (stig: V-38629) (stig: V-38630)' do - describe package('gconf2') do + context "gconf2 is not installed (stig: V-43150) (stig: V-38638) (stig: V-38629) (stig: V-38630)" do + describe package("gconf2") do it { should_not be_installed } end end - context 'rsh-server is not installed (stig: V-38598, V-38591, V-38594, V-38602)' do - describe package('rsh-server') do + context "rsh-server is not installed (stig: V-38598, V-38591, V-38594, V-38602)" do + describe package("rsh-server") do it { should_not be_installed } end end - context '/etc/passwd file' do - describe file('/etc/passwd') do - it('should be owned by root user (stig: V-38450)') { should be_owned_by('root') } - it('should be group-owned by root group (stig: V-38451)') { expect(subject.group).to eq('root') } - it('should have mode 0644 (stig: V-38457)') { should be_mode(0644) } + context "/etc/passwd file" do + describe file("/etc/passwd") do + it("should be owned by root user (stig: V-38450)") { should be_owned_by("root") } + it("should be group-owned by root group (stig: V-38451)") { expect(subject.group).to eq("root") } + it("should have mode 0644 (stig: V-38457)") { should be_mode(0o644) } end - context 'should not contain password hash (stig: V-38499)' do + context "should not contain password hash (stig: V-38499)" do describe command('grep -v "^#" /etc/passwd | awk -F: \'($2 != "x") {print}\'') do - its (:stdout) { should eq('') } + its(:stdout) { should eq("") } end end - context 'disable system accounts (CIS-10.2)' do + context "disable system accounts (CIS-10.2)" do describe command('/usr/bin/awk -F: \'$1 !~ /^(root|sync|shutdown|halt)$/ && $3 < 500 && $7 !~ /^(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)$/ { print; f=1 } END { if (!f) print "none" }\' /etc/passwd') do its(:stdout) { should eq("none\n") } end end end - context '/etc/group file' do - describe file('/etc/group') do - it('should be owned by root user (stig: V-38458)') { should be_owned_by('root') } - it('should be owned by root group (stig: V-38459)') { expect(subject.group).to eq('root') } - it('should have mode 0644 (stig: V-38461)') { should be_mode(0644) } + context "/etc/group file" do + describe file("/etc/group") do + it("should be owned by root user (stig: V-38458)") { should be_owned_by("root") } + it("should be owned by root group (stig: V-38459)") { expect(subject.group).to eq("root") } + it("should have mode 0644 (stig: V-38461)") { should be_mode(0o644) } end end - context '/etc/gshadow file' do - describe file('/etc/gshadow') do - it('should be owned by root user (stig: V-38443)') { should be_owned_by('root') } - it('should be owned by root group (stig: V-38448)') { expect(subject.group).to eq('root')} - it('should have mode 0 (stig: V-38449)') { should be_mode(0000) } + context "/etc/gshadow file" do + describe file("/etc/gshadow") do + it("should be owned by root user (stig: V-38443)") { should be_owned_by("root") } + it("should be owned by root group (stig: V-38448)") { expect(subject.group).to eq("root") } + it("should have mode 0 (stig: V-38449)") { should be_mode(0o000) } end end - context 'find world-writable files (stig: V-38643)' do + context "find world-writable files (stig: V-38643)" do describe command('find \/ -xdev -type f -perm -002') do - its (:stdout) { should eq('') } + its(:stdout) { should eq("") } end end - describe file('/etc/login.defs') do - it('should not allow users to cycle passwords quickly (stig: V-38477)') do - expect(subject.content).to match /^PASS_MIN_DAYS 1/ + describe file("/etc/login.defs") do + it("should not allow users to cycle passwords quickly (stig: V-38477)") do + expect(subject.content).to match(/^PASS_MIN_DAYS 1/) end - it('should use an approved hashing algorithm to save the password (stig: V-38576)') do - expect(subject.content).to match /^ENCRYPT_METHOD SHA512/ + it("should use an approved hashing algorithm to save the password (stig: V-38576)") do + expect(subject.content).to match(/^ENCRYPT_METHOD SHA512/) end end @@ -444,368 +443,367 @@ # nothing will be excluded, which is the desired behavior... we want all OS # images to perform theses stages. For the Stemcell suites the exlude flags # here apply. - describe 'exceptions' do - context 'unless: vcloud / vsphere / warden / softlayer', { + describe "exceptions" do + context "unless: vcloud / vsphere / warden / softlayer", { exclude_on_vsphere: true, exclude_on_vcloud: true, exclude_on_warden: true, - exclude_on_softlayer: true, + exclude_on_softlayer: true } do - it 'disallows password authentication' do + it "disallows password authentication" do expect(sshd_config.content).to match(/^PasswordAuthentication no$/) end end - context 'unless: softlayer', { - exclude_on_softlayer: true, + context "unless: softlayer", { + exclude_on_softlayer: true } do - it 'disallows root login (stig: V-38613)' do + it "disallows root login (stig: V-38613)" do expect(sshd_config.content).to match(/^PermitRootLogin no$/) end end end - describe package('xinetd') do - it('should not be installed (stig: V-38582)') { should_not be_installed } + describe package("xinetd") do + it("should not be installed (stig: V-38582)") { should_not be_installed } end - context 'The root account must be the only account having a UID of 0 (stig: V-38500)' do + context "The root account must be the only account having a UID of 0 (stig: V-38500)" do describe command("awk -F: '($3 == 0) {print}' /etc/passwd") do - its (:stdout) { should eq("root:x:0:0:root:/root:/bin/bash\n") } + its(:stdout) { should eq("root:x:0:0:root:/root:/bin/bash\n") } end end - describe file('/etc/shadow') do - it('should be owned by root user (stig: V-38502)') { expect(subject.group).to eq('root') } - it('should be owned by root group (stig: V-38503)') { expect(subject.group).to eq('root') } - it('should have mode 0 (stig: V-38504)') { should be_mode(0000) } + describe file("/etc/shadow") do + it("should be owned by root user (stig: V-38502)") { expect(subject.group).to eq("root") } + it("should be owned by root group (stig: V-38503)") { expect(subject.group).to eq("root") } + it("should have mode 0 (stig: V-38504)") { should be_mode(0o000) } - context 'contains no system users with passwords (stig: V-38496)' do + context "contains no system users with passwords (stig: V-38496)" do describe command("awk -F: '$1 !~ /^root$/ && $1 !~ /^vcap$/ && $2 !~ /^[!*]/ {print $1 \":\" $2}' /etc/shadow") do - it('has exit status of 0') { expect(subject.exit_status).to eq 0 } - its (:stdout) { should eq('') } + it("has exit status of 0") { expect(subject.exit_status).to eq 0 } + its(:stdout) { should eq("") } end end - context 'contains no users with that can update their password frequently (stig: V-38477)' do + context "contains no users with that can update their password frequently (stig: V-38477)" do describe command("awk -F: '$1 !~ /^root$/ && $2 !~ /^[!*]/ && $4 != \"1\" {print $1 \":\" $4}' /etc/shadow") do - it('has exit status of 0') { expect(subject.exit_status).to eq 0 } - its (:stdout) { should eq('') } + it("has exit status of 0") { expect(subject.exit_status).to eq 0 } + its(:stdout) { should eq("") } end end - context 'contains no users with that can update their password frequently (stig: V-38477)' do + context "contains no users with that can update their password frequently (stig: V-38477)" do describe command("awk -F: '$1 !~ /^root$/ && $2 !~ /^[!*]/ && $4 != \"1\" {print $1 \":\" $4}' /etc/shadow") do - it('has exit status of 0') { expect(subject.exit_status).to eq 0 } - its (:stdout) { should eq('') } + it("has exit status of 0") { expect(subject.exit_status).to eq 0 } + its(:stdout) { should eq("") } end end end - describe 'IP forwarding for IPv4 must not be enabled (stig: V-38511)' do - context file('/etc/sysctl.d/60-bosh-sysctl.conf') do - its (:content) { should match /^net\.ipv4\.ip_forward=0$/ } + describe "IP forwarding for IPv4 must not be enabled (stig: V-38511)" do + context file("/etc/sysctl.d/60-bosh-sysctl.conf") do + its(:content) { should match(/^net\.ipv4\.ip_forward=0$/) } end end - describe 'address space layout randomization (ASLR) should be enabled (stig: V-38596)' do - context file('/etc/sysctl.d/60-bosh-sysctl.conf') do - its (:content) { should match /^kernel\.randomize_va_space=2$/ } + describe "address space layout randomization (ASLR) should be enabled (stig: V-38596)" do + context file("/etc/sysctl.d/60-bosh-sysctl.conf") do + its(:content) { should match(/^kernel\.randomize_va_space=2$/) } end end - describe 'syncookies should be enabled (stig: V-38539)' do - context file('/etc/sysctl.d/60-bosh-sysctl.conf') do - its (:content) { should match /^net\.ipv4\.tcp_syncookies=1$/ } + describe "syncookies should be enabled (stig: V-38539)" do + context file("/etc/sysctl.d/60-bosh-sysctl.conf") do + its(:content) { should match(/^net\.ipv4\.tcp_syncookies=1$/) } end end - describe 'IPv6 should be disabled (stig: V-38546)' do - context file('/etc/sysctl.d/60-bosh-sysctl.conf') do - its (:content) { should match /^net\.ipv6\.conf\.all\.disable_ipv6=1$/ } - its (:content) { should match /^net\.ipv6\.conf\.default\.disable_ipv6=1$/ } + describe "IPv6 should be disabled (stig: V-38546)" do + context file("/etc/sysctl.d/60-bosh-sysctl.conf") do + its(:content) { should match(/^net\.ipv6\.conf\.all\.disable_ipv6=1$/) } + its(:content) { should match(/^net\.ipv6\.conf\.default\.disable_ipv6=1$/) } end end - describe 'tcp keepalive values' do - context file('/etc/sysctl.d/60-bosh-sysctl.conf') do - its (:content) { should match /^net\.ipv4\.tcp_keepalive_time=120$/ } - its (:content) { should match /^net\.ipv4\.tcp_keepalive_intvl=30$/ } - its (:content) { should match /^net\.ipv4\.tcp_keepalive_probes=8$/ } + describe "tcp keepalive values" do + context file("/etc/sysctl.d/60-bosh-sysctl.conf") do + its(:content) { should match(/^net\.ipv4\.tcp_keepalive_time=120$/) } + its(:content) { should match(/^net\.ipv4\.tcp_keepalive_intvl=30$/) } + its(:content) { should match(/^net\.ipv4\.tcp_keepalive_probes=8$/) } end end - describe 'root_maxkeys and maxkeys' do - context file('/etc/sysctl.d/60-bosh-sysctl.conf') do - its (:content) { should match /^kernel\.keys\.root_maxkeys=1000000$/ } - its (:content) { should match /^kernel\.keys\.maxkeys=1000000$/ } + describe "root_maxkeys and maxkeys" do + context file("/etc/sysctl.d/60-bosh-sysctl.conf") do + its(:content) { should match(/^kernel\.keys\.root_maxkeys=1000000$/) } + its(:content) { should match(/^kernel\.keys\.maxkeys=1000000$/) } end end - describe 'dmesg_restrict' do - context file('/etc/sysctl.d/60-bosh-sysctl.conf') do - its (:content) { should match /^kernel\.dmesg_restrict\=1$/ } + describe "dmesg_restrict" do + context file("/etc/sysctl.d/60-bosh-sysctl.conf") do + its(:content) { should match(/^kernel\.dmesg_restrict=1$/) } end end - describe 'auditd configuration' do - describe file('/var/log/audit') do + describe "auditd configuration" do + describe file("/var/log/audit") do it { should be_directory } - describe 'Audit log directories must have mode 0755 or less permissive (750 by default) (stig: V-38493)' do - it { should_not be_writable_by('group') } - it { should_not be_writable_by('other') } + describe "Audit log directories must have mode 0755 or less permissive (750 by default) (stig: V-38493)" do + it { should_not be_writable_by("group") } + it { should_not be_writable_by("other") } end end - describe file('/etc/audit/auditd.conf') do - describe 'logging disk errors to syslog (stig: V-38464)' do - its (:content) { should match /^disk_error_action = SYSLOG$/ } + describe file("/etc/audit/auditd.conf") do + describe "logging disk errors to syslog (stig: V-38464)" do + its(:content) { should match(/^disk_error_action = SYSLOG$/) } end - describe 'logging disks being low on space to syslog (stig: V-54381) (stig: V-38470)' do - its (:content) { should match /^admin_space_left_action = SYSLOG$/ } - its (:content) { should match /^space_left_action = SYSLOG$/ } + describe "logging disks being low on space to syslog (stig: V-54381) (stig: V-38470)" do + its(:content) { should match(/^admin_space_left_action = SYSLOG$/) } + its(:content) { should match(/^space_left_action = SYSLOG$/) } end - describe 'logging disks being full to syslog (stig: V-38468)' do - its (:content) { should match /^disk_full_action = SYSLOG$/ } + describe "logging disks being full to syslog (stig: V-38468)" do + its(:content) { should match(/^disk_full_action = SYSLOG$/) } end - describe 'keeping the log files under a certain size (stig: V-38633)' do - its (:content) { should match /^max_log_file = 6$/ } + describe "keeping the log files under a certain size (stig: V-38633)" do + its(:content) { should match(/^max_log_file = 6$/) } end - describe 'rotating the logs so the disk does not run out of space (stig: V-38634)' do - its (:content) { should match /^max_log_file_action = ROTATE$/ } + describe "rotating the logs so the disk does not run out of space (stig: V-38634)" do + its(:content) { should match(/^max_log_file_action = ROTATE$/) } end - describe 'keeping the logs around for a sensible retention period (stig: V-38636)' do - its (:content) { should match /^num_logs = 5$/ } + describe "keeping the logs around for a sensible retention period (stig: V-38636)" do + its(:content) { should match(/^num_logs = 5$/) } end - describe 'audit log files must be group owned by root (stig: V-38445)' do - its (:content) { should match /^log_group = root$/ } + describe "audit log files must be group owned by root (stig: V-38445)" do + its(:content) { should match(/^log_group = root$/) } end - describe 'audit log files triggers action when storage capacity is less than 75mb (stig: V-38678)' do - its (:content) { should match /^space_left = 75$/ } + describe "audit log files triggers action when storage capacity is less than 75mb (stig: V-38678)" do + its(:content) { should match(/^space_left = 75$/) } end - describe 'audit log files triggers action when storage capacity is less than 50mb (this must be less than space_left) (stig: V-38678)' do - its (:content) { should match /^admin_space_left = 50$/ } + describe "audit log files triggers action when storage capacity is less than 50mb (this must be less than space_left) (stig: V-38678)" do + its(:content) { should match(/^admin_space_left = 50$/) } end end - context ("plugins.d/syslog.conf") do - it 'auditd logs to syslog' do - expect(syslog_config.content).to match ( /^active = yes$/ ) + context("plugins.d/syslog.conf") do + it "auditd logs to syslog" do + expect(syslog_config.content).to match(/^active = yes$/) end end end - describe file('/etc/audit/rules.d/audit.rules') do - describe 'loading and unloading of dynamic kernel modules must be audited (stig: V-38580)' do - its(:content) { should match /^-w \/sbin\/insmod -p x -k modules$/ } - its(:content) { should match /^-w \/sbin\/rmmod -p x -k modules$/ } - its(:content) { should match /^-w \/sbin\/modprobe -p x -k modules$/ } - its(:content) { should match /^-w \/bin\/kmod -p x -k modules$/ } - its(:content) { should match /-a always,exit -F arch=b64 -S finit_module -S init_module -S delete_module -k modules/ } + describe file("/etc/audit/rules.d/audit.rules") do + describe "loading and unloading of dynamic kernel modules must be audited (stig: V-38580)" do + its(:content) { should match(/^-w \/sbin\/insmod -p x -k modules$/) } + its(:content) { should match(/^-w \/sbin\/rmmod -p x -k modules$/) } + its(:content) { should match(/^-w \/sbin\/modprobe -p x -k modules$/) } + its(:content) { should match(/^-w \/bin\/kmod -p x -k modules$/) } + its(:content) { should match(/-a always,exit -F arch=b64 -S finit_module -S init_module -S delete_module -k modules/) } end - describe 'events that modify system date and time must be recorded (CIS-8.1.4)' do - its(:content) { should match /^-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change$/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S adjtimex -S settimeofday -S stime -k time-change$/ } - its(:content) { should match /^-a always,exit -F arch=b64 -S clock_settime -k time-change$/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S clock_settime -k time-change$/ } - its(:content) { should match /^-w \/etc\/localtime -p wa -k time-change$/ } + describe "events that modify system date and time must be recorded (CIS-8.1.4)" do + its(:content) { should match(/^-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change$/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S adjtimex -S settimeofday -S stime -k time-change$/) } + its(:content) { should match(/^-a always,exit -F arch=b64 -S clock_settime -k time-change$/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S clock_settime -k time-change$/) } + its(:content) { should match(/^-w \/etc\/localtime -p wa -k time-change$/) } end - describe 'file deletion events must be recorded (CIS-8.1.14)' do - its(:content) { should match /^-a always,exit -F arch=b64 -S unlink -S unlinkat -S rmdir -S rename -S renameat -F auid>=500 -F auid!=4294967295 -k delete$/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S unlink -S unlinkat -S rmdir -S rename -S renameat -F auid>=500 -F auid!=4294967295 -k delete$/ } + describe "file deletion events must be recorded (CIS-8.1.14)" do + its(:content) { should match(/^-a always,exit -F arch=b64 -S unlink -S unlinkat -S rmdir -S rename -S renameat -F auid>=500 -F auid!=4294967295 -k delete$/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S unlink -S unlinkat -S rmdir -S rename -S renameat -F auid>=500 -F auid!=4294967295 -k delete$/) } end - describe 'audit rules are made mutable (CIS-8.1.18)' do - it 'should not have a -e 2 line' do - expect(subject.content).not_to match '-e 2' + describe "audit rules are made mutable (CIS-8.1.18)" do + it "should not have a -e 2 line" do + expect(subject.content).not_to match "-e 2" end end - describe 'record changes to sudoers file (CIS-8.1.15)' do - its(:content) { should match /^-w \/etc\/sudoers -p wa -k scope$/ } - its(:content) { should match /^-w \/etc\/sudoers\.d -p wa -k scope$/ } - end + describe "record changes to sudoers file (CIS-8.1.15)" do + its(:content) { should match(/^-w \/etc\/sudoers -p wa -k scope$/) } + its(:content) { should match(/^-w \/etc\/sudoers\.d -p wa -k scope$/) } + end - describe 'record login and logout events (CIS-8.1.8)' do - its(:content) { should match /^-w \/var\/log\/faillog -p wa -k logins$/ } - its(:content) { should match /^-w \/var\/log\/lastlog -p wa -k logins$/ } - its(:content) { should match /^-w \/var\/log\/tallylog -p wa -k logins$/ } - its(:content) { should match /^-w \/var\/run\/faillock -p wa -k logins$/ } + describe "record login and logout events (CIS-8.1.8)" do + its(:content) { should match(/^-w \/var\/log\/faillog -p wa -k logins$/) } + its(:content) { should match(/^-w \/var\/log\/lastlog -p wa -k logins$/) } + its(:content) { should match(/^-w \/var\/log\/tallylog -p wa -k logins$/) } + its(:content) { should match(/^-w \/var\/run\/faillock -p wa -k logins$/) } end - describe 'record session initiation events (CIS-8.1.9)' do - its(:content) { should match /^-w \/var\/run\/utmp -p wa -k session$/ } - its(:content) { should match /^-w \/var\/log\/wtmp -p wa -k session$/ } - its(:content) { should match /^-w \/var\/log\/btmp -p wa -k session$/ } + describe "record session initiation events (CIS-8.1.9)" do + its(:content) { should match(/^-w \/var\/run\/utmp -p wa -k session$/) } + its(:content) { should match(/^-w \/var\/log\/wtmp -p wa -k session$/) } + its(:content) { should match(/^-w \/var\/log\/btmp -p wa -k session$/) } end - describe 'record events that modify user/group information (CIS-8.1.5)' do - its(:content) { should match /^-w \/etc\/group -p wa -k identity$/ } - its(:content) { should match /^-w \/etc\/passwd -p wa -k identity$/ } - its(:content) { should match /^-w \/etc\/gshadow -p wa -k identity$/ } - its(:content) { should match /^-w \/etc\/shadow -p wa -k identity$/ } - its(:content) { should match /^-w \/etc\/security\/opasswd -p wa -k identity$/ } + describe "record events that modify user/group information (CIS-8.1.5)" do + its(:content) { should match(/^-w \/etc\/group -p wa -k identity$/) } + its(:content) { should match(/^-w \/etc\/passwd -p wa -k identity$/) } + its(:content) { should match(/^-w \/etc\/gshadow -p wa -k identity$/) } + its(:content) { should match(/^-w \/etc\/shadow -p wa -k identity$/) } + its(:content) { should match(/^-w \/etc\/security\/opasswd -p wa -k identity$/) } end - describe 'record events that modify system network environment (CIS-4.1.6)' do - its(:content) { should match /^-a exit,always -F arch=b64 -S sethostname -S setdomainname -k system-locale$/ } - its(:content) { should match /^-a exit,always -F arch=b32 -S sethostname -S setdomainname -k system-locale$/ } - its(:content) { should match /^-w \/etc\/issue -p wa -k system-locale$/ } - its(:content) { should match /^-w \/etc\/issue\.net -p wa -k system-locale$/ } - its(:content) { should match /^-w \/etc\/hosts -p wa -k system-locale$/ } - its(:content) { should match /^-w \/etc\/network -p wa -k system-locale$/ } - its(:content) { should match /^-w \/etc\/networks -p wa -k system-locale$/ } + describe "record events that modify system network environment (CIS-4.1.6)" do + its(:content) { should match(/^-a exit,always -F arch=b64 -S sethostname -S setdomainname -k system-locale$/) } + its(:content) { should match(/^-a exit,always -F arch=b32 -S sethostname -S setdomainname -k system-locale$/) } + its(:content) { should match(/^-w \/etc\/issue -p wa -k system-locale$/) } + its(:content) { should match(/^-w \/etc\/issue\.net -p wa -k system-locale$/) } + its(:content) { should match(/^-w \/etc\/hosts -p wa -k system-locale$/) } + its(:content) { should match(/^-w \/etc\/network -p wa -k system-locale$/) } + its(:content) { should match(/^-w \/etc\/networks -p wa -k system-locale$/) } end - describe 'record events that modify systems mandatory access controls (CIS-4.1.7)' do - its(:content) { should match /^-w \/etc\/apparmor\/ -p wa -k MAC-policy$/ } - its(:content) { should match /^-w \/etc\/apparmor\.d\/ -p wa -k MAC-policy$/ } + describe "record events that modify systems mandatory access controls (CIS-4.1.7)" do + its(:content) { should match(/^-w \/etc\/apparmor\/ -p wa -k MAC-policy$/) } + its(:content) { should match(/^-w \/etc\/apparmor\.d\/ -p wa -k MAC-policy$/) } end - describe 'record system administrator actions (CIS-8.1.16)' do - its(:content) { should match /^-a always,exit -F arch=b64 -S execve -F euid=0 -F auid>=1000 -F auid!=4294967295 -F key=sudo_log$/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S execve -F euid=0 -F auid>=1000 -F auid!=4294967295 -F key=sudo_log$/ } + describe "record system administrator actions (CIS-8.1.16)" do + its(:content) { should match(/^-a always,exit -F arch=b64 -S execve -F euid=0 -F auid>=1000 -F auid!=4294967295 -F key=sudo_log$/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S execve -F euid=0 -F auid>=1000 -F auid!=4294967295 -F key=sudo_log$/) } end - describe 'record file system mounts (CIS-8.1.13)' do - its(:content) { should match /^-a always,exit -F arch=b64 -S mount -F auid>=500 -F auid!=4294967295 -k mounts$/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S mount -F auid>=500 -F auid!=4294967295 -k mounts$/ } + describe "record file system mounts (CIS-8.1.13)" do + its(:content) { should match(/^-a always,exit -F arch=b64 -S mount -F auid>=500 -F auid!=4294967295 -k mounts$/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S mount -F auid>=500 -F auid!=4294967295 -k mounts$/) } end - describe 'record discretionary access control permission modification events (CIS-8.1.10)' do - its(:content) { should match /^-a always,exit -F arch=b64 -S mount -F auid>=500 -F auid!=4294967295 -k mounts$/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S mount -F auid>=500 -F auid!=4294967295 -k mounts$/ } - its(:content) { should match /^-a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=500 -F auid!=4294967295 -k perm_mod$/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S chmod -S fchmod -S fchmodat -F auid>=500 -F auid!=4294967295 -k perm_mod$/ } - its(:content) { should match /^-a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=500 -F auid!=4294967295 -k perm_mod$/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S chown -S fchown -S fchownat -S lchown -F auid>=500 -F auid!=4294967295 -k perm_mod$/ } - its(:content) { should match /^-a always,exit -F arch=b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=500 -F auid!=4294967295 -k perm_mod$/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=500 -F auid!=4294967295 -k perm_mod$/ } + describe "record discretionary access control permission modification events (CIS-8.1.10)" do + its(:content) { should match(/^-a always,exit -F arch=b64 -S mount -F auid>=500 -F auid!=4294967295 -k mounts$/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S mount -F auid>=500 -F auid!=4294967295 -k mounts$/) } + its(:content) { should match(/^-a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=500 -F auid!=4294967295 -k perm_mod$/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S chmod -S fchmod -S fchmodat -F auid>=500 -F auid!=4294967295 -k perm_mod$/) } + its(:content) { should match(/^-a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=500 -F auid!=4294967295 -k perm_mod$/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S chown -S fchown -S fchownat -S lchown -F auid>=500 -F auid!=4294967295 -k perm_mod$/) } + its(:content) { should match(/^-a always,exit -F arch=b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=500 -F auid!=4294967295 -k perm_mod$/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=500 -F auid!=4294967295 -k perm_mod$/) } end - describe 'record unsuccessful unauthorized access attempts to files - EACCES (CIS-8.1.11)' do - its(:content) { should match /^-a always,exit -F arch=b64 -S creat -S open -S open_by_handle_at -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=500 -F auid!=4294967295 -k access/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S creat -S open -S open_by_handle_at -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=500 -F auid!=4294967295 -k access/ } - its(:content) { should match /^-a always,exit -F arch=b64 -S creat -S open -S open_by_handle_at -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=500 -F auid!=4294967295 -k access/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S creat -S open -S open_by_handle_at -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=500 -F auid!=4294967295 -k access/ } + describe "record unsuccessful unauthorized access attempts to files - EACCES (CIS-8.1.11)" do + its(:content) { should match(/^-a always,exit -F arch=b64 -S creat -S open -S open_by_handle_at -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=500 -F auid!=4294967295 -k access/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S creat -S open -S open_by_handle_at -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=500 -F auid!=4294967295 -k access/) } + its(:content) { should match(/^-a always,exit -F arch=b64 -S creat -S open -S open_by_handle_at -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=500 -F auid!=4294967295 -k access/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S creat -S open -S open_by_handle_at -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=500 -F auid!=4294967295 -k access/) } end - describe 'record use of binaries' do - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/sbin\/unix_chkpwd -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/sbin\/mount\.nfs -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/pam_timestamp_check -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/write -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/bin\/mount \-k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/newgrp -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/wall -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/passwd -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/bin\/umount \-k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/crontab -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/chfn -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/ssh-agent -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/gpasswd -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/chsh -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/chage -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/mount -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/su -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/umount -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/mount.nfs -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/netreport -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/postdrop -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/postqueue -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/usernetctl -k privileged/ } - its(:content) { should match /^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/service -k privileged/ } + describe "record use of binaries" do + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/sbin\/unix_chkpwd -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/sbin\/mount\.nfs -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/pam_timestamp_check -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/write -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/bin\/mount -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/newgrp -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/wall -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/passwd -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/bin\/umount -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/crontab -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/chfn -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/ssh-agent -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/gpasswd -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/chsh -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/chage -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/mount -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/su -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/bin\/umount -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/mount.nfs -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/netreport -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/postdrop -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/postqueue -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/usernetctl -k privileged/) } + its(:content) { should match(/^-a always,exit -F perm=x -F auid>=500 -F auid!=4294967295 -F path=\/usr\/sbin\/service -k privileged/) } end - describe 'record execution of privileged functions (stig: V-75689)' do - its(:content) { should match /^-a always,exit -F arch=b64 -S execve -C uid!=euid -F key=execpriv/ } - its(:content) { should match /^-a always,exit -F arch=b64 -S execve -C gid!=egid -F key=execpriv/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S execve -C uid!=euid -F key=execpriv/ } - its(:content) { should match /^-a always,exit -F arch=b32 -S execve -C gid!=egid -F key=execpriv/ } + describe "record execution of privileged functions (stig: V-75689)" do + its(:content) { should match(/^-a always,exit -F arch=b64 -S execve -C uid!=euid -F key=execpriv/) } + its(:content) { should match(/^-a always,exit -F arch=b64 -S execve -C gid!=egid -F key=execpriv/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S execve -C uid!=euid -F key=execpriv/) } + its(:content) { should match(/^-a always,exit -F arch=b32 -S execve -C gid!=egid -F key=execpriv/) } end - describe 'record use of ssh-keysign (stig: V-75707)' do - its(:content) { should match /^-a always,exit -F path=\/usr\/lib\/openssh\/ssh-keysign -F perm=x -F auid>=500 -F auid!=4294967295 -k privileged-ssh/ } + describe "record use of ssh-keysign (stig: V-75707)" do + its(:content) { should match(/^-a always,exit -F path=\/usr\/lib\/openssh\/ssh-keysign -F perm=x -F auid>=500 -F auid!=4294967295 -k privileged-ssh/) } end - describe 'record use of sudoedit (stig: V-75757)' do - its(:content) { should match /^-a always,exit -F path=\/usr\/bin\/sudoedit -F perm=x -F auid>=500 -F auid!=4294967295 -k priv_cmd/ } + describe "record use of sudoedit (stig: V-75757)" do + its(:content) { should match(/^-a always,exit -F path=\/usr\/bin\/sudoedit -F perm=x -F auid>=500 -F auid!=4294967295 -k priv_cmd/) } end - describe 'record use of apparmor_parser (stig: V-75765)' do - its(:content) { should match /^-a always,exit -F path=\/sbin\/apparmor_parser -F perm=x -F auid>=500 -F auid!=4294967295 -k perm_chng/ } + describe "record use of apparmor_parser (stig: V-75765)" do + its(:content) { should match(/^-a always,exit -F path=\/sbin\/apparmor_parser -F perm=x -F auid>=500 -F auid!=4294967295 -k perm_chng/) } end - describe 'record use of usermod (stig: V-75785)' do - its(:content) { should match /^-a always,exit -F path=\/usr\/sbin\/usermod -F perm=x -F auid>=500 -F auid!=4294967295 -k privileged-usermod/ } + describe "record use of usermod (stig: V-75785)" do + its(:content) { should match(/^-a always,exit -F path=\/usr\/sbin\/usermod -F perm=x -F auid>=500 -F auid!=4294967295 -k privileged-usermod/) } end - describe 'record use of chcon (stig: V-80969)' do - its(:content) { should match /^-a always,exit -F path=\/usr\/bin\/chcon -F perm=x -F auid>=500 -F auid!=4294967295 -k perm_chng/ } + describe "record use of chcon (stig: V-80969)" do + its(:content) { should match(/^-a always,exit -F path=\/usr\/bin\/chcon -F perm=x -F auid>=500 -F auid!=4294967295 -k perm_chng/) } end - describe 'record use of unix_update (stig: V-75779)' do - its(:content) { should match /^-a always,exit -F path=\/sbin\/unix_update -F perm=x -F auid>=500 -F auid!=4294967295 -k privileged-unix-update/ } + describe "record use of unix_update (stig: V-75779)" do + its(:content) { should match(/^-a always,exit -F path=\/sbin\/unix_update -F perm=x -F auid>=500 -F auid!=4294967295 -k privileged-unix-update/) } end - end - describe 'record use of privileged programs (CIS-8.1.12)' do + describe "record use of privileged programs (CIS-8.1.12)" do let(:privileged_binaries) { command("find /bin /sbin /usr/bin /usr/sbin /boot -xdev \\( -perm -4000 -o -perm -2000 \\) -type f") .stdout .split } - describe file('/etc/audit/rules.d/audit.rules') do + describe file("/etc/audit/rules.d/audit.rules") do its(:content) do privileged_binaries.each do |privileged_binary| - should match /^-a always,exit -F path=#{privileged_binary} -F perm=x -F auid>=500 -F auid!=4294967295 -k privileged$/ + should match(/^-a always,exit -F path=#{privileged_binary} -F perm=x -F auid>=500 -F auid!=4294967295 -k privileged$/) end end end end - describe 'disabling core dumps (CIS-4.1)' do - describe file('/etc/security/limits.conf') do - its(:content) { should match /^\*\s+hard\s+core\s+0$/ } + describe "disabling core dumps (CIS-4.1)" do + describe file("/etc/security/limits.conf") do + its(:content) { should match(/^\*\s+hard\s+core\s+0$/) } end end - context 'postfix is not installed (stig: V-38622) (stig: V-38446)' do + context "postfix is not installed (stig: V-38622) (stig: V-38446)" do it "shouldn't be installed" do - expect(package('postfix')).to_not be_installed + expect(package("postfix")).to_not be_installed end end - context 'installed binaries' do - describe file('/var/vcap/bosh/bin/sync-time') do + context "installed binaries" do + describe file("/var/vcap/bosh/bin/sync-time") do it { should be_file } it { should be_executable } end end - describe 'Cron logging must be implemented. (stig: V-75865)' do - context file('/etc/rsyslog.d/50-default.conf') do - its (:content) { should match /^cron\.\*\s+\/var\/log\/cron\.log$/ } + describe "Cron logging must be implemented. (stig: V-75865)" do + context file("/etc/rsyslog.d/50-default.conf") do + its(:content) { should match(/^cron\.\*\s+\/var\/log\/cron\.log$/) } end end - describe 'apt removes all software components after updated versions have been installed (stig: V-260477)' do - describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do - expected = <<-EXPECTED -Unattended-Upgrade::Remove-Unused-Kernel-Packages "true"; -Unattended-Upgrade::Remove-Unused-Dependencies "true"; -EXPECTED + describe "apt removes all software components after updated versions have been installed (stig: V-260477)" do + describe file("/etc/apt/apt.conf.d/50unattended-upgrades") do + expected = <<~EXPECTED + Unattended-Upgrade::Remove-Unused-Kernel-Packages "true"; + Unattended-Upgrade::Remove-Unused-Dependencies "true"; + EXPECTED its(:content) { should eq expected.chomp } end end diff --git a/bosh-stemcell/spec/support/os_image_systemd_shared_examples.rb b/bosh-stemcell/spec/support/os_image_systemd_shared_examples.rb index 5c9521cb50..0dcef265fe 100644 --- a/bosh-stemcell/spec/support/os_image_systemd_shared_examples.rb +++ b/bosh-stemcell/spec/support/os_image_systemd_shared_examples.rb @@ -1,30 +1,30 @@ -shared_examples_for 'a systemd-based OS image' do - context 'systemd services' do - describe service('runit') do +shared_examples_for "a systemd-based OS image" do + context "systemd services" do + describe service("runit") do it { should be_enabled } end - describe service('rsyslog') do + describe service("rsyslog") do it { should be_enabled } end - describe service('chrony') do + describe service("chrony") do it { should be_enabled } end - describe file('/etc/systemd/system/chronyd.service.d/prevent_mount_locking.conf') do + describe file("/etc/systemd/system/chronyd.service.d/prevent_mount_locking.conf") do it { should be_file } - its(:content) { should match /^InaccessiblePaths=-\/var\/vcap\/store/ } + its(:content) { should match(/^InaccessiblePaths=-\/var\/vcap\/store/) } end - describe file('/etc/systemd/journald.conf.d/00-override.conf') do + describe file("/etc/systemd/journald.conf.d/00-override.conf") do it { should be_file } - its(:content) { should match /^Storage=volatile/ } + its(:content) { should match(/^Storage=volatile/) } end - describe file('/etc/systemd/system/rsyslog.service.d/00-override.conf') do + describe file("/etc/systemd/system/rsyslog.service.d/00-override.conf") do it { should be_file } - its(:content) { should match /^ExecStartPre=\/usr\/local\/bin\/wait_for_var_log_to_be_mounted/ } + its(:content) { should match(/^ExecStartPre=\/usr\/local\/bin\/wait_for_var_log_to_be_mounted/) } end end end diff --git a/bosh-stemcell/spec/support/os_image_ubuntu_shared_examples.rb b/bosh-stemcell/spec/support/os_image_ubuntu_shared_examples.rb index ac00cb268d..2ee4b75695 100644 --- a/bosh-stemcell/spec/support/os_image_ubuntu_shared_examples.rb +++ b/bosh-stemcell/spec/support/os_image_ubuntu_shared_examples.rb @@ -1,6 +1,6 @@ -shared_examples_for 'an Ubuntu-based OS image' do - context 'X Windows must not be enabled unless required (stig: V-38674)' do - describe package('xserver-xorg') do +shared_examples_for "an Ubuntu-based OS image" do + context "X Windows must not be enabled unless required (stig: V-38674)" do + describe package("xserver-xorg") do it { should_not be_installed } end end diff --git a/bosh-stemcell/spec/support/os_image_upstart_shared_examples.rb b/bosh-stemcell/spec/support/os_image_upstart_shared_examples.rb index e7f1c277f4..6e5103afa8 100644 --- a/bosh-stemcell/spec/support/os_image_upstart_shared_examples.rb +++ b/bosh-stemcell/spec/support/os_image_upstart_shared_examples.rb @@ -1,23 +1,23 @@ -shared_examples_for 'an upstart-based OS image' do - context 'installed by rsyslog_config' do - RSYSLOG_EXECUTABLE = '/usr/sbin/rsyslogd'.freeze +shared_examples_for "an upstart-based OS image" do + context "installed by rsyslog_config" do + rsyslog_executable = "/usr/sbin/rsyslogd".freeze - describe file('/etc/init/rsyslog.conf') do - its(:content) { should match RSYSLOG_EXECUTABLE } + describe file("/etc/init/rsyslog.conf") do + its(:content) { should match rsyslog_executable } end # verify that the path used in the upstart config points to an actual executable - describe file(RSYSLOG_EXECUTABLE) do + describe file(rsyslog_executable) do it { should be_file } it { should be_executable } end # Make sure that rsyslog starts with the machine - describe file('/etc/init.d/rsyslog'), :rsyslog_check do + describe file("/etc/init.d/rsyslog"), :rsyslog_check do it { should be_executable } end - describe service('rsyslog') do + describe service("rsyslog") do it { should be_enabled_for_level(2) } it { should be_enabled_for_level(3) } it { should be_enabled_for_level(4) } diff --git a/bosh-stemcell/spec/support/shellout_type_assertions.rb b/bosh-stemcell/spec/support/shellout_type_assertions.rb index dddf9e885a..4f522fb469 100644 --- a/bosh-stemcell/spec/support/shellout_type_assertions.rb +++ b/bosh-stemcell/spec/support/shellout_type_assertions.rb @@ -1,14 +1,14 @@ -require 'shellout_types/file' -require 'shellout_types/package' -require 'shellout_types/user' -require 'shellout_types/command' -require 'shellout_types/service' -require 'shellout_types/group' -require 'shellout_types/chroot' +require "shellout_types/file" +require "shellout_types/package" +require "shellout_types/user" +require "shellout_types/command" +require "shellout_types/service" +require "shellout_types/group" +require "shellout_types/chroot" module ShelloutTypes module Assertions - def file(file_path, chroot=ShelloutTypes::Chroot.new) + def file(file_path, chroot = ShelloutTypes::Chroot.new) ShelloutTypes::File.new(file_path, chroot) end @@ -33,7 +33,7 @@ def group(group_name) end def no_chroot - ShelloutTypes::Chroot.new('/') + ShelloutTypes::Chroot.new("/") end end end diff --git a/bosh-stemcell/spec/support/spec_assets.rb b/bosh-stemcell/spec/support/spec_assets.rb index 5f79b3ebdd..c80a0d90db 100644 --- a/bosh-stemcell/spec/support/spec_assets.rb +++ b/bosh-stemcell/spec/support/spec_assets.rb @@ -1,9 +1,9 @@ -require 'support/shellout_type_assertions' +require "support/shellout_type_assertions" module Bosh::Stemcell module SpecAssets def spec_asset(name) - File.expand_path(File.join('..', 'assets', name), File.dirname(__FILE__)) + File.expand_path(File.join("..", "assets", name), File.dirname(__FILE__)) end end end diff --git a/bosh-stemcell/spec/support/spec_ordering.rb b/bosh-stemcell/spec/support/spec_ordering.rb index 4a8d2f987e..4b660c6412 100644 --- a/bosh-stemcell/spec/support/spec_ordering.rb +++ b/bosh-stemcell/spec/support/spec_ordering.rb @@ -1,4 +1,3 @@ - RSpec.configure do |config| config.register_ordering(:global) do |list| # make sure that stig test case check will be run at last diff --git a/bosh-stemcell/spec/support/stemcell_image.rb b/bosh-stemcell/spec/support/stemcell_image.rb index a0c90b9782..f4defc0e11 100644 --- a/bosh-stemcell/spec/support/stemcell_image.rb +++ b/bosh-stemcell/spec/support/stemcell_image.rb @@ -1,21 +1,22 @@ -require 'bosh/stemcell/disk_image' -require 'shellout_types/chroot' -require_relative 'shellout_type_assertions' +require "bosh/stemcell/disk_image" +require "shellout_types/chroot" +require_relative "shellout_type_assertions" RSpec.configure do |config| # do not run stemcell image tests when shellout types tests are executed. unless config.inclusion_filter[:shellout_types] - if ENV['STEMCELL_IMAGE'] + if ENV["STEMCELL_IMAGE"] # if `config.filter[exclude_on_softlayer]` is set, it means you're building the SoftLayer stemcell. + config.filter_run_including stemcell_image: true + if config.filter[:exclude_on_softlayer] - config.filter_run_including stemcell_image: true shell = Bosh::Core::Shell.new verbose = true - image_file_path = ENV['STEMCELL_IMAGE'] + image_file_path = ENV["STEMCELL_IMAGE"] device = shell.run("sudo losetup --show --find #{image_file_path}", output_command: verbose) kpartx_output = shell.run("sudo kpartx -sav #{device}", output_command: verbose) - device_partition1 = kpartx_output.lines.first.split(' ')[2] - device_partition2 = kpartx_output.lines.last.split(' ')[2] + device_partition1 = kpartx_output.lines.first.split(" ")[2] + device_partition2 = kpartx_output.lines.last.split(" ")[2] loopback_dev1 = "/dev/mapper/#{device_partition1}" loopback_dev2 = "/dev/mapper/#{device_partition2}" image_mount_point = Dir.mktmpdir @@ -31,8 +32,7 @@ shell.run("sudo umount #{image_mount_point}", output_command: verbose) end else - config.filter_run_including stemcell_image: true - disk_image = Bosh::Stemcell::DiskImage.new(image_file_path: ENV['STEMCELL_IMAGE']) + disk_image = Bosh::Stemcell::DiskImage.new(image_file_path: ENV["STEMCELL_IMAGE"]) config.before(:suite) do |example| disk_image.mount ShelloutTypes::Chroot.chroot_dir = disk_image.image_mount_point @@ -43,7 +43,7 @@ end end else - warning = 'All stemcell_image tests are being skipped. STEMCELL_IMAGE needs to be set' + warning = "All stemcell_image tests are being skipped. STEMCELL_IMAGE needs to be set" puts RSpec::Core::Formatters::ConsoleCodes.wrap(warning, :yellow) config.filter_run_excluding stemcell_image: true end diff --git a/bosh-stemcell/spec/support/stemcell_shared_examples.rb b/bosh-stemcell/spec/support/stemcell_shared_examples.rb index 7d3f9f5566..232c596366 100644 --- a/bosh-stemcell/spec/support/stemcell_shared_examples.rb +++ b/bosh-stemcell/spec/support/stemcell_shared_examples.rb @@ -1,35 +1,34 @@ -require 'rspec' +require "rspec" -shared_examples_for 'All Stemcells' do - - context 'building a new stemcell' do - describe file '/var/vcap/bosh/etc/stemcell_version' do - let(:expected_version) { ENV['CANDIDATE_BUILD_NUMBER'] || '0000' } +shared_examples_for "All Stemcells" do + context "building a new stemcell" do + describe file "/var/vcap/bosh/etc/stemcell_version" do + let(:expected_version) { ENV["CANDIDATE_BUILD_NUMBER"] || "0000" } it { should be_file } its(:content) { should eq expected_version } end - describe file '/var/vcap/bosh/etc/stemcell_git_sha1' do + describe file "/var/vcap/bosh/etc/stemcell_git_sha1" do it { should be_file } its(:content) { should match '^[0-9a-f]{40}\+?$' } end - describe command('ls -l /etc/ssh/*_key*') do - its(:stderr) { should match /No such file or directory/ } + describe command("ls -l /etc/ssh/*_key*") do + its(:stderr) { should match(/No such file or directory/) } end end - context 'ipv6 is disabled in the kernel', { + context "ipv6 is disabled in the kernel", { exclude_on_vsphere: true, - exclude_on_vcloud: true, + exclude_on_vcloud: true } do describe file(grub_cfg_path) do its(:content) { should match(/^\s+(kernel|linux)\s.*\sipv6\.disable=1\s.*$/) } end end - context 'ipv6 is disabled in the kernel on EFI', { + context "ipv6 is disabled in the kernel on EFI", { exclude_on_alicloud: true, exclude_on_softlayer: true, exclude_on_cloudstack: true, @@ -37,76 +36,76 @@ exclude_on_openstack: true, exclude_on_azure: true, exclude_on_aws: true, - exclude_on_google: true, + exclude_on_google: true } do - describe file('/boot/efi/EFI/grub/grub.cfg') do + describe file("/boot/efi/EFI/grub/grub.cfg") do its(:content) { should match(/^\s+(kernel|linux)\s.*\sipv6\.disable=1\s.*$/) } end end - context 'disable remote host login (stig: V-38491)' do - describe command('find /home -name .rhosts') do - its (:stdout) { should eq('') } + context "disable remote host login (stig: V-38491)" do + describe command("find /home -name .rhosts") do + its(:stdout) { should eq("") } end - describe file('/etc/hosts.equiv') do + describe file("/etc/hosts.equiv") do it { should_not be_file } end end - context 'system library files' do - describe file('/lib') do - it('should be owned by root user (stig: V-38466)') { should be_owned_by('root') } + context "system library files" do + describe file("/lib") do + it("should be owned by root user (stig: V-38466)") { should be_owned_by("root") } end - describe file('/lib64') do - it('should be owned by root user (stig: V-38466)') { should be_owned_by('root') } + describe file("/lib64") do + it("should be owned by root user (stig: V-38466)") { should be_owned_by("root") } end - describe file('/usr/lib') do - it('should be owned by root user (stig: V-38466)') { should be_owned_by('root') } + describe file("/usr/lib") do + it("should be owned by root user (stig: V-38466)") { should be_owned_by("root") } end describe command('if [ -e /usr/lib64 ]; then stat -c "%U" /usr/lib64 ; else echo "root" ; fi') do - its (:stdout) { should eq("root\n") } + its(:stdout) { should eq("root\n") } end end - describe file('/var/vcap/micro_bosh/data/cache') do - it('should still be created') { should be_directory } + describe file("/var/vcap/micro_bosh/data/cache") do + it("should still be created") { should be_directory } end - context 'Library files must have mode 0755 or less permissive (stig: V-38465)' do + context "Library files must have mode 0755 or less permissive (stig: V-38465)" do describe command("find -L /lib /lib64 /usr/lib $( [ ! -e /usr/lib64 ] || echo '/usr/lib64' ) -perm /022 -type f") do - its (:stdout) { should eq('') } + its(:stdout) { should eq("") } end end - context 'System command files must have mode 0755 or less permissive (stig: V-38469)' do - describe command('find -L /bin /usr/bin /usr/local/bin /sbin /usr/sbin /usr/local/sbin -perm /022 -type f') do - its (:stdout) { should eq('') } + context "System command files must have mode 0755 or less permissive (stig: V-38469)" do + describe command("find -L /bin /usr/bin /usr/local/bin /sbin /usr/sbin /usr/local/sbin -perm /022 -type f") do + its(:stdout) { should eq("") } end end - context 'all system command files must be owned by root (stig: V-38472)' do - describe command('find -L /bin /usr/bin /usr/local/bin /sbin /usr/sbin /usr/local/sbin ! -user root') do - its (:stdout) { should eq('') } + context "all system command files must be owned by root (stig: V-38472)" do + describe command("find -L /bin /usr/bin /usr/local/bin /sbin /usr/sbin /usr/local/sbin ! -user root") do + its(:stdout) { should eq("") } end end - context 'There must be no .netrc files on the system (stig: V-38619)' do - describe command('sudo find /root /home /var/vcap -xdev -name .netrc') do + context "There must be no .netrc files on the system (stig: V-38619)" do + describe command("sudo find /root /home /var/vcap -xdev -name .netrc") do # its (:stdout) { should eq('') } - it 'does not include .netrc' do + it "does not include .netrc" do results = subject.stdout.split("\n").reject { |str| str.match(/^Last login/) } expect(results).to eq [] end end end - context 'rsyslog conf directory only contains the builder-specified config files', exclude_on_google: true do - describe command('ls -A /etc/rsyslog.d') do - its (:stdout) do + context "rsyslog conf directory only contains the builder-specified config files", exclude_on_google: true do + describe command("ls -A /etc/rsyslog.d") do + its(:stdout) do should eq(<<~FILELIST) 50-default.conf FILELIST @@ -114,22 +113,22 @@ end end - describe file('/var/vcap/bosh/bin/restart_networking') do + describe file("/var/vcap/bosh/bin/restart_networking") do it { should be_file } it { should be_executable } - it { should be_owned_by('root') } - its(:group) { should eq('root') } + it { should be_owned_by("root") } + its(:group) { should eq("root") } - context 'restarts systemd-networkd on non-warden images', { - exclude_on_warden: true, + context "restarts systemd-networkd on non-warden images", { + exclude_on_warden: true } do - its(:content) { should eql(< Date: Fri, 10 Apr 2026 07:26:35 +0000 Subject: [PATCH 19/27] Bump actions/upload-artifact from 4 to 7 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v4...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/sbom.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sbom.yml b/.github/workflows/sbom.yml index 27f720ea49..e2969ab16e 100644 --- a/.github/workflows/sbom.yml +++ b/.github/workflows/sbom.yml @@ -49,7 +49,7 @@ jobs: mv tmp.sarif trivy-results-${n}.sarif done - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: sbom path: sbom.spdx.json From f0cd334610aaad0a09ce5bbf5fbac923d38e6092 Mon Sep 17 00:00:00 2001 From: aram price Date: Mon, 13 Apr 2026 16:10:19 -0700 Subject: [PATCH 20/27] StemcellBuilder needs to bundle install now --- README.md | 2 ++ bosh-stemcell/bosh-stemcell.gemspec | 1 - bosh-stemcell/lib/bosh/stemcell/build_environment.rb | 2 ++ bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb | 2 ++ 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2961ee5713..5ccb0d5b08 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,7 @@ container): ```shell export short_name="jammy" cd /opt/bosh/bosh-stemcell + bundle install OS_IMAGE=/opt/bosh/tmp/ubuntu_base_image.tgz bundle exec rspec -fd spec/os_image/ubuntu_${short_name}_spec.rb ``` @@ -149,6 +150,7 @@ container, you should be able to run the specific tests: ```shell cd /opt/bosh/bosh-stemcell; \ +bundle install \ STEMCELL_IMAGE=/mnt/stemcells/vsphere/esxi/ubuntu/work/work/vsphere-esxi-ubuntu.raw \ STEMCELL_WORKDIR=/mnt/stemcells/vsphere/esxi/ubuntu/work/work/chroot \ OS_NAME=ubuntu \ diff --git a/bosh-stemcell/bosh-stemcell.gemspec b/bosh-stemcell/bosh-stemcell.gemspec index 56f9a22f9f..3aa34567d6 100644 --- a/bosh-stemcell/bosh-stemcell.gemspec +++ b/bosh-stemcell/bosh-stemcell.gemspec @@ -21,7 +21,6 @@ Gem::Specification.new do |spec| spec.add_development_dependency "fakefs" spec.add_development_dependency "rake" spec.add_development_dependency "rspec" - spec.add_development_dependency "rspec-instafail" spec.add_development_dependency "rspec-its" spec.add_development_dependency "standard" spec.add_development_dependency "timecop" diff --git a/bosh-stemcell/lib/bosh/stemcell/build_environment.rb b/bosh-stemcell/lib/bosh/stemcell/build_environment.rb index 5bb6375e35..cfa687a19a 100644 --- a/bosh-stemcell/lib/bosh/stemcell/build_environment.rb +++ b/bosh-stemcell/lib/bosh/stemcell/build_environment.rb @@ -41,6 +41,7 @@ def prepare_build def os_image_rspec_command [ "cd #{STEMCELL_SPECS_DIR};", + "bundle install;", "OS_IMAGE=#{os_image_tarball_path}", "bundle exec rspec -fd", "spec/os_image/#{operating_system_spec_name}_spec.rb" @@ -50,6 +51,7 @@ def os_image_rspec_command def stemcell_rspec_command cmd = [ "cd #{STEMCELL_SPECS_DIR};", + "bundle install;", "STEMCELL_IMAGE=#{image_file_path}", "STEMCELL_WORKDIR=#{work_path}", "STEMCELL_INFRASTRUCTURE=#{infrastructure.name}", diff --git a/bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb b/bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb index c0437c9f5b..664e28b699 100644 --- a/bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb @@ -185,6 +185,7 @@ module Bosh::Stemcell it "returns the correct command" do expected_rspec_command = [ "cd #{stemcell_specs_dir};", + "bundle install;", "OS_IMAGE=/some/os_image.tgz", "bundle exec rspec -fd", "spec/os_image/#{operating_system.name}_spec.rb" @@ -203,6 +204,7 @@ module Bosh::Stemcell it "returns the correct command" do expected_rspec_command = [ "cd #{stemcell_specs_dir};", + "bundle install;", "STEMCELL_IMAGE=#{File.join(work_path, "fake-root-disk-image.raw")}", "STEMCELL_WORKDIR=#{work_path}", "STEMCELL_INFRASTRUCTURE=#{infrastructure.name}", From cd1edc8beee8480aae8adc7888eefc6839aa9b73 Mon Sep 17 00:00:00 2001 From: aram price Date: Mon, 13 Apr 2026 16:47:41 -0700 Subject: [PATCH 21/27] Fix: remove vestiges of `vendor/` --- vendor/cache/rake-13.3.1.gem | Bin 86528 -> 0 bytes vendor/package/multi_json-1.20.0.gem | Bin 35328 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 vendor/cache/rake-13.3.1.gem delete mode 100644 vendor/package/multi_json-1.20.0.gem diff --git a/vendor/cache/rake-13.3.1.gem b/vendor/cache/rake-13.3.1.gem deleted file mode 100644 index 75b4aab47cee66411d79c7f8a36c103dc3f57ac7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86528 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

_+kG)0`f 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

I*-fW7U~MOFJFAV=OmQJuYG7S~r8U3WF9)Bdg< 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 From 137df55388596c825aa9c1730d12b508ae3f1120 Mon Sep 17 00:00:00 2001 From: aram price Date: Mon, 13 Apr 2026 17:10:53 -0700 Subject: [PATCH 22/27] Fixes: cleanup from vendored gem usage --- README.md | 4 ++-- ci/tasks/build.sh | 9 +++++---- ci/tasks/os-images/build.sh | 2 +- scripts/build.sh | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 5ccb0d5b08..02479764d9 100644 --- a/README.md +++ b/README.md @@ -150,7 +150,7 @@ container, you should be able to run the specific tests: ```shell cd /opt/bosh/bosh-stemcell; \ -bundle install \ +bundle install; \ STEMCELL_IMAGE=/mnt/stemcells/vsphere/esxi/ubuntu/work/work/vsphere-esxi-ubuntu.raw \ STEMCELL_WORKDIR=/mnt/stemcells/vsphere/esxi/ubuntu/work/work/chroot \ OS_NAME=ubuntu \ @@ -174,8 +174,8 @@ an ubuntu chroot environment to run. For this reason, we use the locally, run: ```shell -bundle install --local cd /opt/bosh/bosh-stemcell +bundle install OS_IMAGE=/opt/bosh/tmp/ubuntu_base_image.tgz bundle exec rake spec:shellout_types ``` diff --git a/ci/tasks/build.sh b/ci/tasks/build.sh index 4d9ccc7b9f..22fca0e4e2 100755 --- a/ci/tasks/build.sh +++ b/ci/tasks/build.sh @@ -82,12 +82,13 @@ fi sudo chmod u+s "$(which sudo)" sudo --preserve-env --set-home --user ubuntu -- /bin/bash --login -i < Date: Mon, 13 Apr 2026 17:40:33 -0700 Subject: [PATCH 23/27] CI: cleanup shell issues; fix bundler invocation --- README.md | 5 +++-- ci/tasks/build-release-metadata.sh | 6 +++--- ci/tasks/build.sh | 26 ++++++++++++++++---------- ci/tasks/bump-bosh-agent.sh | 2 +- ci/tasks/bump-bosh-blobstore-cli.sh | 2 +- ci/tasks/commit-build-time.sh | 2 +- ci/tasks/os-images/build.sh | 12 ++++++++---- ci/tasks/test-stemcell.sh | 2 +- 8 files changed, 34 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 02479764d9..3f2a97aa5e 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,9 @@ docker run \ bosh/os-image-stemcell-builder:${short_name} # You're now in the Docker container -gem install bundler -bundle install +pushd bosh-stemcell + bundle install +popd # build OS image bundle exec rake stemcell:build_os_image[ubuntu,${short_name},${PWD}/tmp/ubuntu_base_image.tgz] diff --git a/ci/tasks/build-release-metadata.sh b/ci/tasks/build-release-metadata.sh index 5ef9a4049d..e9e5d08600 100755 --- a/ci/tasks/build-release-metadata.sh +++ b/ci/tasks/build-release-metadata.sh @@ -36,7 +36,7 @@ pushd "${REPO_PARENT}/candidate-stemcell" kernel_version=$(grep "${KERNEL_PACKAGE}" packages.txt | awk '{print $3}') popd -bosh_agent_version=$(cat "${REPO_PARENT}/bosh-linux-stemcell-builder/stemcell_builder/stages/bosh_go_agent/assets/bosh-agent-version") +bosh_agent_version=$(cat "${REPO_ROOT}/stemcell_builder/stages/bosh_go_agent/assets/bosh-agent-version") { echo "## Metadata:" echo "**BOSH Agent Version**: ${bosh_agent_version}" @@ -45,9 +45,9 @@ bosh_agent_version=$(cat "${REPO_PARENT}/bosh-linux-stemcell-builder/stemcell_bu if [[ "${OS_NAME}" == "ubuntu" ]]; then # Ensure URL for usn-log from metalink exists before attempting to download. - usn_log_json_file="${REPO_PARENT}/bosh-linux-stemcell-builder/usn-log.json" + usn_log_json_file="${REPO_ROOT}/usn-log.json" touch "${usn_log_json_file}" - usn_metalink_path="${REPO_PARENT}/bosh-linux-stemcell-builder/bosh-stemcell/image-metalinks/${BRANCH}/${OS_NAME}-${OS_VERSION}.meta4" + usn_metalink_path="${REPO_ROOT}/bosh-stemcell/image-metalinks/${BRANCH}/${OS_NAME}-${OS_VERSION}.meta4" if [[ -n "$(meta4 file-urls --metalink "${usn_metalink_path}" --file usn-log.json)" ]]; then meta4 file-download \ --skip-hash-verification \ diff --git a/ci/tasks/build.sh b/ci/tasks/build.sh index 22fca0e4e2..1cda00f4b0 100755 --- a/ci/tasks/build.sh +++ b/ci/tasks/build.sh @@ -71,7 +71,7 @@ for i in $(seq 0 64); do fi done -chown -R ubuntu:ubuntu "${REPO_PARENT}/bosh-linux-stemcell-builder" +chown -R ubuntu:ubuntu "${REPO_ROOT}" chown -R ubuntu:ubuntu /mnt OS_IMAGE="" @@ -101,27 +101,33 @@ SUDO # Output and checksum the stemcell artifacts # -stemcell_name="bosh-stemcell-$CANDIDATE_BUILD_NUMBER-$IAAS-$HYPERVISOR-$OS_NAME-$OS_VERSION${AGENT_SUFFIX}" -meta4_path="${REPO_PARENT}/stemcells-index-output/dev/$OS_NAME-$OS_VERSION/$CANDIDATE_BUILD_NUMBER/$IAAS-$HYPERVISOR${AGENT_SUFFIX}.meta4" +stemcell_name="bosh-stemcell-${CANDIDATE_BUILD_NUMBER}-$IAAS-$HYPERVISOR-$OS_NAME-$OS_VERSION${AGENT_SUFFIX}" +meta4_path="${REPO_PARENT}/stemcells-index-output/dev/$OS_NAME-$OS_VERSION/${CANDIDATE_BUILD_NUMBER}/$IAAS-$HYPERVISOR${AGENT_SUFFIX}.meta4" -echo $CANDIDATE_BUILD_NUMBER > "${REPO_PARENT}/candidate-build-number/number" +echo "${CANDIDATE_BUILD_NUMBER}" > "${REPO_PARENT}/candidate-build-number/number" mkdir -p "$( dirname "$meta4_path" )" rm -f "$meta4_path" meta4 create --metalink="$meta4_path" -if [ -e "${REPO_PARENT}/bosh-linux-stemcell-builder/tmp"/*-raw.tgz ] ; then +raw_images=( "${REPO_ROOT}/tmp"/*-raw.tgz ) +if [ "${#raw_images[@]}" -ge 2 ]; then + echo "Found more than one raw image: '${raw_images[*]}'" >&2 + exit 1 +fi + +if [ -e "${raw_images[0]}" ] ; then # openstack currently publishes raw files raw_stemcell_filename="${stemcell_name}-raw.tgz" - mv "${REPO_PARENT}/bosh-linux-stemcell-builder/tmp"/*-raw.tgz "${REPO_PARENT}/stemcell/${raw_stemcell_filename}" + mv "${REPO_ROOT}/tmp"/*-raw.tgz "${REPO_PARENT}/stemcell/${raw_stemcell_filename}" - meta4 import-file --metalink="$meta4_path" --version="$CANDIDATE_BUILD_NUMBER" "${REPO_PARENT}/stemcell/${raw_stemcell_filename}" + meta4 import-file --metalink="$meta4_path" --version="${CANDIDATE_BUILD_NUMBER}" "${REPO_PARENT}/stemcell/${raw_stemcell_filename}" meta4 file-set-url --metalink="$meta4_path" --file="${raw_stemcell_filename}" "https://${S3_API_ENDPOINT}/${STEMCELL_BUCKET}/${IAAS}/${raw_stemcell_filename}" fi stemcell_filename="${stemcell_name}.tgz" -mv "${REPO_PARENT}/bosh-linux-stemcell-builder/tmp/${stemcell_filename}" "${REPO_PARENT}/stemcell/${stemcell_filename}" +mv "${REPO_ROOT}/tmp/${stemcell_filename}" "${REPO_PARENT}/stemcell/${stemcell_filename}" -meta4 import-file --metalink="$meta4_path" --version="$CANDIDATE_BUILD_NUMBER" "${REPO_PARENT}/stemcell/${stemcell_filename}" +meta4 import-file --metalink="$meta4_path" --version="${CANDIDATE_BUILD_NUMBER}" "${REPO_PARENT}/stemcell/${stemcell_filename}" meta4 file-set-url --metalink="$meta4_path" --file="${stemcell_filename}" "https://${S3_API_ENDPOINT}/${STEMCELL_BUCKET}/${IAAS}/${stemcell_filename}" # just in case we need to debug/verify the live results @@ -132,4 +138,4 @@ cd "${REPO_PARENT}/stemcells-index-output" git add -A git config --global user.email "ci@localhost" git config --global user.name "CI Bot" -git commit -m "dev: $OS_NAME-$OS_VERSION/$CANDIDATE_BUILD_NUMBER ($IAAS-$HYPERVISOR)" +git commit -m "dev: ${OS_NAME}-${OS_VERSION}/${CANDIDATE_BUILD_NUMBER} ($IAAS-$HYPERVISOR)" diff --git a/ci/tasks/bump-bosh-agent.sh b/ci/tasks/bump-bosh-agent.sh index e5ee902164..ecf8fa91bc 100755 --- a/ci/tasks/bump-bosh-agent.sh +++ b/ci/tasks/bump-bosh-agent.sh @@ -10,7 +10,7 @@ if [[ -n "${DEBUG:-}" ]]; then export BOSH_LOG_PATH="${BOSH_LOG_PATH:-${REPO_PARENT}/bosh-debug.log}" fi -git clone "${REPO_PARENT}/bosh-linux-stemcell-builder" "${REPO_PARENT}/bosh-linux-stemcell-builder-out" +git clone "${REPO_ROOT}" "${REPO_PARENT}/bosh-linux-stemcell-builder-out" version=$( cat "${REPO_PARENT}/bosh-agent/.resource/version" ) diff --git a/ci/tasks/bump-bosh-blobstore-cli.sh b/ci/tasks/bump-bosh-blobstore-cli.sh index f82d23ca1a..e37bfb6c51 100755 --- a/ci/tasks/bump-bosh-blobstore-cli.sh +++ b/ci/tasks/bump-bosh-blobstore-cli.sh @@ -10,7 +10,7 @@ if [[ -n "${DEBUG:-}" ]]; then export BOSH_LOG_PATH="${BOSH_LOG_PATH:-${REPO_PARENT}/bosh-debug.log}" fi -git clone "${REPO_PARENT}/bosh-linux-stemcell-builder" "${REPO_PARENT}/bosh-linux-stemcell-builder-out" +git clone "${REPO_ROOT}" "${REPO_PARENT}/bosh-linux-stemcell-builder-out" url=$(cat "${REPO_PARENT}/bosh-blobstore-cli/url") version=$(cat "${REPO_PARENT}/bosh-blobstore-cli/version") diff --git a/ci/tasks/commit-build-time.sh b/ci/tasks/commit-build-time.sh index 3d8688a1b9..e1850726c3 100755 --- a/ci/tasks/commit-build-time.sh +++ b/ci/tasks/commit-build-time.sh @@ -13,7 +13,7 @@ fi build_time="$(cat "${REPO_PARENT}/build-time/timestamp")" formatted_build_time="$(date --date "${build_time%.*}" +%Y%m%dT%H%M%SZ)" -pushd "${REPO_PARENT}/bosh-linux-stemcell-builder" +pushd "${REPO_ROOT}" echo "${formatted_build_time}" > build_time.txt git add -A git config --global user.email "ci@localhost" diff --git a/ci/tasks/os-images/build.sh b/ci/tasks/os-images/build.sh index 6b0cf609f8..0de7593d4c 100755 --- a/ci/tasks/os-images/build.sh +++ b/ci/tasks/os-images/build.sh @@ -10,8 +10,6 @@ if [[ -n "${DEBUG:-}" ]]; then export BOSH_LOG_PATH="${BOSH_LOG_PATH:-${REPO_PARENT}/bosh-debug.log}" fi -cd "${REPO_PARENT}/bosh-linux-stemcell-builder" - function check_param() { local name=$1 local value=$(eval echo '$'$name) @@ -33,7 +31,13 @@ fi sudo chown -R ubuntu . sudo chown -R ubuntu:ubuntu /mnt sudo chmod u+s "$(which sudo)" -bundle install + +cd "${REPO_ROOT}" + sudo --preserve-env --set-home --user ubuntu -- /bin/bash --login -i < Date: Mon, 13 Apr 2026 18:14:36 -0700 Subject: [PATCH 24/27] Fix: invoke bundler in sudo --- ci/tasks/os-images/build.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ci/tasks/os-images/build.sh b/ci/tasks/os-images/build.sh index 0de7593d4c..625be9b585 100755 --- a/ci/tasks/os-images/build.sh +++ b/ci/tasks/os-images/build.sh @@ -32,12 +32,16 @@ sudo chown -R ubuntu . sudo chown -R ubuntu:ubuntu /mnt sudo chmod u+s "$(which sudo)" -cd "${REPO_ROOT}" +pushd "${REPO_ROOT}/bosh-stemcell" + bundle install +popd sudo --preserve-env --set-home --user ubuntu -- /bin/bash --login -i < Date: Tue, 14 Apr 2026 01:31:44 +0000 Subject: [PATCH 25/27] [ci skip] bump OS image --- .../ubuntu-jammy/ubuntu-jammy.meta4 | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 index 2a844022ba..df5e18ed23 100644 --- a/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 +++ b/bosh-stemcell/image-metalinks/ubuntu-jammy/ubuntu-jammy.meta4 @@ -1,22 +1,22 @@ - 10b15d49dfd4100571add2455eb4153c80b9bd5c6e22ccd9aeed8194905a878641b6963c70563e5b938daf09867a23b9189e2305c6f92020b20a2c74d545fd87 - 7eb2cd875443ee45109079dd8599fc2b5751eeadb907c5715badd15a657fbad7 - 30564a85530fbec4981d44cd77a613ae815828ed - 70d767afa18dff2cb92dfe81c5ea791e - 434701107 + ff43886bc31be3ec055b0d3f727aa6256eda259344270cd4619a90bad3b220c06000e3c57b32c24b4038eae5e2ac64191a7312c19c42fc91a7928029031347cb + c258788e0d058a0a83d9dbd9b83943e2d53094cd801c81646775019cae4a47b0 + 18b3d8049adc6e1e86074e86c00a69485a60a416 + 8b1d24adff7f63ad9cdd0e23cde32c98 + 434702187 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/ubuntu-jammy.tgz - 1016.0.0 + 1017.0.0 - 5d6b0dc853928f6b0edae962b9cc887932435e1c3f9e11510e75cf370c3c60d007aa0ce8be3a61439232abe774fc0f9eef7f1d2cd147d63e2e9dc0365d2f8bfc - 16dfb98c14519455b73b4f6449214bdd2b7d0be2f6081ee9697045debf1f18bc - f2823709a53482bedd0444b14c9d2b6e185d4f94 - 5063455fe73eead9a3e05530da40a237 - 32163 + c03931a922ef64d2b6940a1d6a74bc7d6c923d5f7a0103fde7d5badd4b27d184ceb17f0ea9fb4e3d0fdef8e5ffc8332ae92dbeaa2ce0ff8b9411ba27715f77b5 + caa477de0c9b7ae163d684274f444cdd7114c8f047ccc7c55f80a636032fd38b + 2372defcd63a0dd06c8be838856124f586ebaaf6 + 89491d68f7b2679b8bf2204165de2c37 + 37318 https://storage.googleapis.com/bosh-os-images/ubuntu-jammy/usn-log.json - 1016.0.0 + 1017.0.0 metalink-repository-resource/0.0.0 - 2026-04-13T12:39:07.118788375Z + 2026-04-14T01:31:34.698655659Z From 44e1e1b03c903184f5213343506a7c3b6abbea97 Mon Sep 17 00:00:00 2001 From: aram price Date: Mon, 13 Apr 2026 18:35:49 -0700 Subject: [PATCH 26/27] CI: bundle as ubuntu; add `set -e` for sudo scripts --- ci/tasks/os-images/build.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ci/tasks/os-images/build.sh b/ci/tasks/os-images/build.sh index 625be9b585..770a394dea 100755 --- a/ci/tasks/os-images/build.sh +++ b/ci/tasks/os-images/build.sh @@ -32,11 +32,9 @@ sudo chown -R ubuntu . sudo chown -R ubuntu:ubuntu /mnt sudo chmod u+s "$(which sudo)" -pushd "${REPO_ROOT}/bosh-stemcell" - bundle install -popd - sudo --preserve-env --set-home --user ubuntu -- /bin/bash --login -i < Date: Mon, 13 Apr 2026 19:21:26 -0700 Subject: [PATCH 27/27] Fix: rake, rspec, etc are non-dev dependencies --- Gemfile.lock | 20 +++++++++++++++++++ bosh-stemcell/bosh-stemcell.gemspec | 9 ++++++--- .../lib/bosh/stemcell/build_environment.rb | 2 -- .../bosh/stemcell/build_environment_spec.rb | 3 +-- .../spec/bosh/stemcell/stage_runner_spec.rb | 3 ++- bosh-stemcell/spec/spec_helper.rb | 1 - ci/tasks/build.sh | 12 +++++------ ci/tasks/os-images/build.sh | 5 +---- 8 files changed, 35 insertions(+), 20 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 96830d4736..541f2268e8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,11 +2,31 @@ PATH remote: bosh-stemcell specs: bosh-stemcell (0.0.0) + rake + rspec + rspec-its GEM remote: https://rubygems.org/ specs: + diff-lcs (1.6.2) rake (13.3.1) + rspec (3.13.2) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.6) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.5) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-its (2.0.0) + rspec-core (>= 3.13.0) + rspec-expectations (>= 3.13.0) + rspec-mocks (3.13.8) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.7) PLATFORMS ruby diff --git a/bosh-stemcell/bosh-stemcell.gemspec b/bosh-stemcell/bosh-stemcell.gemspec index 3aa34567d6..89ab0658d2 100644 --- a/bosh-stemcell/bosh-stemcell.gemspec +++ b/bosh-stemcell/bosh-stemcell.gemspec @@ -18,10 +18,13 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.require_paths = %w[lib] + # TODO: separate stemcell specs from gem specs + spec.add_dependency "rake" + spec.add_dependency "rspec" + spec.add_dependency "rspec-its" + + # used only in gem's own specs spec.add_development_dependency "fakefs" - spec.add_development_dependency "rake" - spec.add_development_dependency "rspec" - spec.add_development_dependency "rspec-its" spec.add_development_dependency "standard" spec.add_development_dependency "timecop" end diff --git a/bosh-stemcell/lib/bosh/stemcell/build_environment.rb b/bosh-stemcell/lib/bosh/stemcell/build_environment.rb index cfa687a19a..5bb6375e35 100644 --- a/bosh-stemcell/lib/bosh/stemcell/build_environment.rb +++ b/bosh-stemcell/lib/bosh/stemcell/build_environment.rb @@ -41,7 +41,6 @@ def prepare_build def os_image_rspec_command [ "cd #{STEMCELL_SPECS_DIR};", - "bundle install;", "OS_IMAGE=#{os_image_tarball_path}", "bundle exec rspec -fd", "spec/os_image/#{operating_system_spec_name}_spec.rb" @@ -51,7 +50,6 @@ def os_image_rspec_command def stemcell_rspec_command cmd = [ "cd #{STEMCELL_SPECS_DIR};", - "bundle install;", "STEMCELL_IMAGE=#{image_file_path}", "STEMCELL_WORKDIR=#{work_path}", "STEMCELL_INFRASTRUCTURE=#{infrastructure.name}", diff --git a/bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb b/bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb index 664e28b699..1cf26595a9 100644 --- a/bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/build_environment_spec.rb @@ -3,6 +3,7 @@ require "bosh/stemcell/infrastructure" require "bosh/stemcell/operating_system" require "bosh/stemcell/definition" +require "fakefs/spec_helpers" module Bosh::Stemcell describe BuildEnvironment do @@ -185,7 +186,6 @@ module Bosh::Stemcell it "returns the correct command" do expected_rspec_command = [ "cd #{stemcell_specs_dir};", - "bundle install;", "OS_IMAGE=/some/os_image.tgz", "bundle exec rspec -fd", "spec/os_image/#{operating_system.name}_spec.rb" @@ -204,7 +204,6 @@ module Bosh::Stemcell it "returns the correct command" do expected_rspec_command = [ "cd #{stemcell_specs_dir};", - "bundle install;", "STEMCELL_IMAGE=#{File.join(work_path, "fake-root-disk-image.raw")}", "STEMCELL_WORKDIR=#{work_path}", "STEMCELL_INFRASTRUCTURE=#{infrastructure.name}", diff --git a/bosh-stemcell/spec/bosh/stemcell/stage_runner_spec.rb b/bosh-stemcell/spec/bosh/stemcell/stage_runner_spec.rb index 9aade7c61e..3967ca3454 100644 --- a/bosh-stemcell/spec/bosh/stemcell/stage_runner_spec.rb +++ b/bosh-stemcell/spec/bosh/stemcell/stage_runner_spec.rb @@ -1,6 +1,7 @@ require "spec_helper" -require "timecop" require "bosh/stemcell/stage_runner" +require "timecop" +require "fakefs/spec_helpers" module Bosh::Stemcell describe StageRunner do diff --git a/bosh-stemcell/spec/spec_helper.rb b/bosh-stemcell/spec/spec_helper.rb index dfeef1a421..c16277e52b 100644 --- a/bosh-stemcell/spec/spec_helper.rb +++ b/bosh-stemcell/spec/spec_helper.rb @@ -1,6 +1,5 @@ require "rspec" require "rspec/its" -require "fakefs/spec_helpers" require "support/shellout_type_assertions" require "tmpdir" diff --git a/ci/tasks/build.sh b/ci/tasks/build.sh index 1cda00f4b0..00c34a73d8 100755 --- a/ci/tasks/build.sh +++ b/ci/tasks/build.sh @@ -84,16 +84,14 @@ sudo chmod u+s "$(which sudo)" sudo --preserve-env --set-home --user ubuntu -- /bin/bash --login -i <