Loading ci/lab/README.md +31 −16 Changes for ci/lab/README.md: 31 added lines, 16 removed lines. Original line number Diff line number Diff line Loading @@ -16,10 +16,10 @@ The default kubeconfig stays unchanged. Application NodePorts stay inside the temporary Docker network; the Kubernetes API mapping binds only to loopback. The controller joins that network. The checked-in `ci/lab/profile.health.json` selects published OEG, FM and SRM images for the first health run. SRM is develop commit e326ebe0; its declared SDK dependency is sunrise6g-opensdk 2.0.0. This baseline proves platform health, not acceptance of an unpublished SDK candidate. The same profile works locally. The checked-in [health profile](profile.health.json) selects the chart and published OEG, FM and SRM images for the default health run. The profile owns the exact immutable references; each run records the inputs it actually used. This baseline proves public platform health. The same profile works locally. The core profile enables OEG, SRM, FM, Keycloak, PostgreSQL and NATS. Portal, AI2, Data Lab, federation peers and external network providers remain outside Loading @@ -30,17 +30,30 @@ endpoint acceptance is inferred. ## Candidate inputs The local Release 2 candidate profile is `ci/lab/profile.release-2.0.json`: The [Release 2 candidate profile](profile.release-2.0.json) runs locally or in CI: ```sh sh ci/run_platform_lab.sh ci/lab/profile.release-2.0.json .cache/release-app-001 ``` It pins the published OEG 7434f8ae, FM 853bb20f and SRM 8fdb12a5 images by digest, the bootstrap-capable chart 52a7b0d9 and the installed SDK 2.0.0rc4 contents. Its terminated checkpoint runs all fourteen application cases. The report adds infrastructure/cleanup checkpoints separately; these are not additional business tests. This qualifies that candidate, not a different final package or image. The profile owns the chart commit, component image digests and expected SDK version, source revision and contents fingerprint. Its terminated checkpoint runs all fourteen application cases. Infrastructure and cleanup checkpoints are reported separately. The result qualifies the exact candidate in that run. For a new candidate, update the profile to its reviewed published artifacts and compute the SDK fingerprint from the selected wheel as described in [SDK acceptance](../../ansible/tests/r2_e2e/SDK_ACCEPTANCE.md#prepare-the-lab). Run acceptance again after changing those inputs. Keep concrete versions in profiles and observed identities in `chart.json`, `result.json` and the acceptance receipt. The README describes the procedure without duplicating release hashes. An ad hoc run can use a copied profile, including through `OOP_LAB_PROFILE`, without changing test code. Submit a small normal MR when updating the checked-in qualification baseline; include it in the existing MR if still open. Final SDK publication and its integration into a normal SRM image precede qualification of that final image. Use the same profile path as `OOP_LAB_PROFILE` in the GitLab platform-lab job. The application-checkpoint trial branch and its MR expose the existing job as Loading Loading @@ -99,9 +112,10 @@ The tenant-isolation xfail remains outside this checkpoint and unchanged. No instantiation request, application Pod or TF-SDK call is part of onboarding. The default health selection and all original default-suite test names remain. Copy `profile.example.json` outside tracked source and replace the SRM placeholder with a reviewed `repository:tag@sha256:digest`. OEG/FM defaults are inspected published candidates, not moving tags. The profile selects one full Helm chart commit. The controller fetches that For another candidate, copy a runnable profile and review all its artifact references. The example templates contain explicit chart/component placeholders; fill every placeholder before use. Component images use `repository:tag@sha256:digest`. The profile selects one full Helm chart commit. The controller fetches that exact revision before cluster creation and records the archive hash in `chart.json`; the controller image contains no independent chart revision. The pinned Linux amd64 tools are checksum-verified at image build; apt/Python transitive Loading Loading @@ -216,9 +230,10 @@ before requiring OEG ready state. Module-scoped fixtures own one fresh workload for the selected extensions; assertions do not consume state created by other test functions. Each independent invocation creates and cleans its own resources. For workload and later checkpoints, adapt `profile.application.example.json`. It selects the reviewed bootstrap-capable chart and an explicit in-cluster workload control path. A single bootstrap declaration feeds the existing For workload and later checkpoints, copy the runnable Release 2 profile or fill all placeholders in `profile.application.example.json`. Select a reviewed bootstrap-capable chart and an explicit in-cluster workload control path. A single bootstrap declaration feeds the existing Ansible producer, Helm mounts/RBAC and SDK-loaded SRM registry. The acceptance profile validates running OEG/SRM image identity and the installed SDK contents fingerprint before creating a workload. The namespace must be dedicated and Loading ci/lab/profile.application.example.json +3 −3 Changes for ci/lab/profile.application.example.json: 3 added lines, 3 removed lines. Original line number Diff line number Diff line { "chart_revision": "04a5b7b2fd50ea2b2a321966ca6437a369cdadbf", "chart_revision": "REPLACE_WITH_REVIEWED_CHART_COMMIT_SHA", "images": { "oeg": "labs.etsi.org:5050/oop/code/open-exposure-gateway:ci-develop-68ff79a6@sha256:f555ea3829af4f192dcc88e818f88077121d60e1eff7b93bc754b21c3fd6dc35", "fm": "labs.etsi.org:5050/oop/code/federation-manager:ci-develop-853bb20f@sha256:f41f2d0a972a76f49be074636bb459e1ac244471601900460c883aa5710cf998", "oeg": "REPLACE_WITH_REVIEWED_OEG_REPOSITORY:TAG@sha256:DIGEST", "fm": "REPLACE_WITH_REVIEWED_FM_REPOSITORY:TAG@sha256:DIGEST", "srm": "REPLACE_WITH_REVIEWED_SRM_REPOSITORY:TAG@sha256:DIGEST" }, "local_images": [], Loading ci/lab/profile.example.json +3 −3 Changes for ci/lab/profile.example.json: 3 added lines, 3 removed lines. Original line number Diff line number Diff line { "chart_revision": "1d0dd82231310f083e0a8411a9f81cbe2fc99da2", "chart_revision": "REPLACE_WITH_REVIEWED_CHART_COMMIT_SHA", "images": { "oeg": "labs.etsi.org:5050/oop/code/open-exposure-gateway:ci-develop-68ff79a6@sha256:f555ea3829af4f192dcc88e818f88077121d60e1eff7b93bc754b21c3fd6dc35", "fm": "labs.etsi.org:5050/oop/code/federation-manager:ci-develop-853bb20f@sha256:f41f2d0a972a76f49be074636bb459e1ac244471601900460c883aa5710cf998", "oeg": "REPLACE_WITH_REVIEWED_OEG_REPOSITORY:TAG@sha256:DIGEST", "fm": "REPLACE_WITH_REVIEWED_FM_REPOSITORY:TAG@sha256:DIGEST", "srm": "REPLACE_WITH_REVIEWED_SRM_REPOSITORY:TAG@sha256:DIGEST" }, "local_images": [] Loading Loading
ci/lab/README.md +31 −16 Changes for ci/lab/README.md: 31 added lines, 16 removed lines. Original line number Diff line number Diff line Loading @@ -16,10 +16,10 @@ The default kubeconfig stays unchanged. Application NodePorts stay inside the temporary Docker network; the Kubernetes API mapping binds only to loopback. The controller joins that network. The checked-in `ci/lab/profile.health.json` selects published OEG, FM and SRM images for the first health run. SRM is develop commit e326ebe0; its declared SDK dependency is sunrise6g-opensdk 2.0.0. This baseline proves platform health, not acceptance of an unpublished SDK candidate. The same profile works locally. The checked-in [health profile](profile.health.json) selects the chart and published OEG, FM and SRM images for the default health run. The profile owns the exact immutable references; each run records the inputs it actually used. This baseline proves public platform health. The same profile works locally. The core profile enables OEG, SRM, FM, Keycloak, PostgreSQL and NATS. Portal, AI2, Data Lab, federation peers and external network providers remain outside Loading @@ -30,17 +30,30 @@ endpoint acceptance is inferred. ## Candidate inputs The local Release 2 candidate profile is `ci/lab/profile.release-2.0.json`: The [Release 2 candidate profile](profile.release-2.0.json) runs locally or in CI: ```sh sh ci/run_platform_lab.sh ci/lab/profile.release-2.0.json .cache/release-app-001 ``` It pins the published OEG 7434f8ae, FM 853bb20f and SRM 8fdb12a5 images by digest, the bootstrap-capable chart 52a7b0d9 and the installed SDK 2.0.0rc4 contents. Its terminated checkpoint runs all fourteen application cases. The report adds infrastructure/cleanup checkpoints separately; these are not additional business tests. This qualifies that candidate, not a different final package or image. The profile owns the chart commit, component image digests and expected SDK version, source revision and contents fingerprint. Its terminated checkpoint runs all fourteen application cases. Infrastructure and cleanup checkpoints are reported separately. The result qualifies the exact candidate in that run. For a new candidate, update the profile to its reviewed published artifacts and compute the SDK fingerprint from the selected wheel as described in [SDK acceptance](../../ansible/tests/r2_e2e/SDK_ACCEPTANCE.md#prepare-the-lab). Run acceptance again after changing those inputs. Keep concrete versions in profiles and observed identities in `chart.json`, `result.json` and the acceptance receipt. The README describes the procedure without duplicating release hashes. An ad hoc run can use a copied profile, including through `OOP_LAB_PROFILE`, without changing test code. Submit a small normal MR when updating the checked-in qualification baseline; include it in the existing MR if still open. Final SDK publication and its integration into a normal SRM image precede qualification of that final image. Use the same profile path as `OOP_LAB_PROFILE` in the GitLab platform-lab job. The application-checkpoint trial branch and its MR expose the existing job as Loading Loading @@ -99,9 +112,10 @@ The tenant-isolation xfail remains outside this checkpoint and unchanged. No instantiation request, application Pod or TF-SDK call is part of onboarding. The default health selection and all original default-suite test names remain. Copy `profile.example.json` outside tracked source and replace the SRM placeholder with a reviewed `repository:tag@sha256:digest`. OEG/FM defaults are inspected published candidates, not moving tags. The profile selects one full Helm chart commit. The controller fetches that For another candidate, copy a runnable profile and review all its artifact references. The example templates contain explicit chart/component placeholders; fill every placeholder before use. Component images use `repository:tag@sha256:digest`. The profile selects one full Helm chart commit. The controller fetches that exact revision before cluster creation and records the archive hash in `chart.json`; the controller image contains no independent chart revision. The pinned Linux amd64 tools are checksum-verified at image build; apt/Python transitive Loading Loading @@ -216,9 +230,10 @@ before requiring OEG ready state. Module-scoped fixtures own one fresh workload for the selected extensions; assertions do not consume state created by other test functions. Each independent invocation creates and cleans its own resources. For workload and later checkpoints, adapt `profile.application.example.json`. It selects the reviewed bootstrap-capable chart and an explicit in-cluster workload control path. A single bootstrap declaration feeds the existing For workload and later checkpoints, copy the runnable Release 2 profile or fill all placeholders in `profile.application.example.json`. Select a reviewed bootstrap-capable chart and an explicit in-cluster workload control path. A single bootstrap declaration feeds the existing Ansible producer, Helm mounts/RBAC and SDK-loaded SRM registry. The acceptance profile validates running OEG/SRM image identity and the installed SDK contents fingerprint before creating a workload. The namespace must be dedicated and Loading
ci/lab/profile.application.example.json +3 −3 Changes for ci/lab/profile.application.example.json: 3 added lines, 3 removed lines. Original line number Diff line number Diff line { "chart_revision": "04a5b7b2fd50ea2b2a321966ca6437a369cdadbf", "chart_revision": "REPLACE_WITH_REVIEWED_CHART_COMMIT_SHA", "images": { "oeg": "labs.etsi.org:5050/oop/code/open-exposure-gateway:ci-develop-68ff79a6@sha256:f555ea3829af4f192dcc88e818f88077121d60e1eff7b93bc754b21c3fd6dc35", "fm": "labs.etsi.org:5050/oop/code/federation-manager:ci-develop-853bb20f@sha256:f41f2d0a972a76f49be074636bb459e1ac244471601900460c883aa5710cf998", "oeg": "REPLACE_WITH_REVIEWED_OEG_REPOSITORY:TAG@sha256:DIGEST", "fm": "REPLACE_WITH_REVIEWED_FM_REPOSITORY:TAG@sha256:DIGEST", "srm": "REPLACE_WITH_REVIEWED_SRM_REPOSITORY:TAG@sha256:DIGEST" }, "local_images": [], Loading
ci/lab/profile.example.json +3 −3 Changes for ci/lab/profile.example.json: 3 added lines, 3 removed lines. Original line number Diff line number Diff line { "chart_revision": "1d0dd82231310f083e0a8411a9f81cbe2fc99da2", "chart_revision": "REPLACE_WITH_REVIEWED_CHART_COMMIT_SHA", "images": { "oeg": "labs.etsi.org:5050/oop/code/open-exposure-gateway:ci-develop-68ff79a6@sha256:f555ea3829af4f192dcc88e818f88077121d60e1eff7b93bc754b21c3fd6dc35", "fm": "labs.etsi.org:5050/oop/code/federation-manager:ci-develop-853bb20f@sha256:f41f2d0a972a76f49be074636bb459e1ac244471601900460c883aa5710cf998", "oeg": "REPLACE_WITH_REVIEWED_OEG_REPOSITORY:TAG@sha256:DIGEST", "fm": "REPLACE_WITH_REVIEWED_FM_REPOSITORY:TAG@sha256:DIGEST", "srm": "REPLACE_WITH_REVIEWED_SRM_REPOSITORY:TAG@sha256:DIGEST" }, "local_images": [] Loading