Loading ansible/inventory/r2-sdk-lab.example.yml +10 −12 Changes for ansible/inventory/r2-sdk-lab.example.yml: 10 added lines, 12 removed lines. Original line number Diff line number Diff line Loading @@ -18,22 +18,12 @@ all: oop_platform_mncs: ["01"] oop_platform_federation_clients: [] oop_platform_portal_enabled: false oop_platform_chart_version: 36dda75882352216ced21475786160ee2e669a6b oop_platform_chart_version: 04a5b7b2fd50ea2b2a321966ca6437a369cdadbf oop_platform_fm_image_tag: REPLACE_WITH_REVIEWED_FM_TAG oop_platform_oeg_image_tag: REPLACE_WITH_REVIEWED_OEG_TAG oop_platform_srm_image_tag: REPLACE_WITH_REVIEWED_SRM_TAG e2e_temp_dir: "{{ playbook_dir }}/../../../.cache/sdk-e2e-tmp" oop_platform_extra_values: srm: srmcontroller: workloads: namespaces: [oop-e2e-workloads] controlPaths: - control_path_ref: sdk-lab-k8s adapter: kubernetes config: namespace: oop-e2e-workloads topology: | oop_platform_bootstrap: version: openop.srm.bootstrap/v1 platform_instance_id: sdk-lab control_paths: Loading @@ -43,6 +33,8 @@ all: adapter_contract_version: v1 infrastructure: namespace: oop-e2e-workloads in_cluster: true endpoint_host: sdk-lab.example.test zones: - ref: sdk-lab-zone name: SDK lab Loading @@ -63,3 +55,9 @@ all: control_path_ref: sdk-lab-k8s is_default: true state: active oop_platform_extra_values: srm: srmcontroller: workloads: namespaces: - oop-e2e-workloads ansible/tests/r2_e2e/SDK_ACCEPTANCE.md +26 −0 Changes for ansible/tests/r2_e2e/SDK_ACCEPTANCE.md: 26 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -131,3 +131,29 @@ object can select {"cpu":2,"memory_mb":257}; CPU must be an integer1–256 and memory_mb an integer1–16384. Invalid values fail during profile loading, before creating lab clients. This bounded repair fixes request construction; observing applied Deployment/Pod resources belongs to the next cumulative checkpoint. ## Bootstrap prerequisite This lab reuses the single-bootstrap producer from Ansible !6 and the reviewed chart source04a5b7b2 from Helm !17. Integrate those prerequisites and SRM !43 before claiming a deployable release lab. Keep the actual candidate package and component image pins explicit in the private profile. The inventory declares oop_platform_bootstrap once. Its Kubernetes control path explicitly selects in_cluster=true, oop-e2e-workloads and the reachable endpoint_host. The existing role generates topology and runtime_directory; SRM constructs the SDK instance from that same bootstrap. There is no separate controlPaths registry input or ambient kubeconfig fallback. The deployment provides the chart's service account and workload-namespace RBAC. Remote clusters use the existing kubeconfig_secret/kube_context mechanism instead. The same role test now reads this example inventory and verifies the generated path, connection mode, namespace, endpoint host and binding reference without contacting a cluster. Final current-image OEG acceptance still needs a live lab. The application-wide TI recipe above remains unqualified for this release. Its explicit opt-in gate must stay false until the whole selected route/provider path supports it; enabling a NEF option alone is insufficient. The current device-scoped TI route requires its own aligned acceptance increment. This request/bootstrap repair makes no TI pass claim. ansible/tests/test_platform_bootstrap.yml +40 −0 Changes for ansible/tests/test_platform_bootstrap.yml: 40 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -75,3 +75,43 @@ ansible.builtin.assert: that: - bootstrap_competing_rejected | default(false) - name: Load the dedicated SDK acceptance inventory ansible.builtin.set_fact: sdk_lab_inventory: >- {{ (lookup('ansible.builtin.file', playbook_dir ~ '/../inventory/r2-sdk-lab.example.yml') | from_yaml).all.children.oop_platform_operators.hosts.sdk_lab }} - name: Require one explicit SDK lab bootstrap declaration ansible.builtin.assert: that: - "'oop_platform_bootstrap' in sdk_lab_inventory" - >- not sdk_lab_inventory.oop_platform_extra_values.srm.srmcontroller.get('controlPaths', []) - >- not sdk_lab_inventory.oop_platform_extra_values.srm.srmcontroller.get('topology', '') - name: Generate the SDK inventory through the existing producer ansible.builtin.include_role: name: oop-platform tasks_from: bootstrap vars: oop_platform_bootstrap: "{{ sdk_lab_inventory.oop_platform_bootstrap }}" oop_platform_extra_values: "{{ sdk_lab_inventory.oop_platform_extra_values }}" - name: Verify the generated SDK execution connection ansible.builtin.assert: that: - sdk_lab_bootstrap.control_paths | length == 1 - sdk_lab_path.ref == 'sdk-lab-k8s' - sdk_lab_path.infrastructure.in_cluster - sdk_lab_path.infrastructure.namespace == 'oop-e2e-workloads' - sdk_lab_path.infrastructure.endpoint_host == sdk_lab_inventory.oop_platform_public_host - sdk_lab_path.infrastructure.runtime_directory == '/var/run/openop-tfsdk' - "'kubeconfig_path' not in sdk_lab_path.infrastructure" - oop_platform_bootstrap_values.srm.srmcontroller.controlPathCredentials | length == 0 - sdk_lab_binding.control_path_ref == sdk_lab_path.ref vars: sdk_lab_bootstrap: "{{ oop_platform_bootstrap_values.srm.srmcontroller.topology | from_yaml }}" sdk_lab_path: "{{ sdk_lab_bootstrap.control_paths[0] }}" sdk_lab_binding: "{{ sdk_lab_bootstrap.zones[0].domains[0].capabilities[0].control_path_bindings[0] }}" Loading
ansible/inventory/r2-sdk-lab.example.yml +10 −12 Changes for ansible/inventory/r2-sdk-lab.example.yml: 10 added lines, 12 removed lines. Original line number Diff line number Diff line Loading @@ -18,22 +18,12 @@ all: oop_platform_mncs: ["01"] oop_platform_federation_clients: [] oop_platform_portal_enabled: false oop_platform_chart_version: 36dda75882352216ced21475786160ee2e669a6b oop_platform_chart_version: 04a5b7b2fd50ea2b2a321966ca6437a369cdadbf oop_platform_fm_image_tag: REPLACE_WITH_REVIEWED_FM_TAG oop_platform_oeg_image_tag: REPLACE_WITH_REVIEWED_OEG_TAG oop_platform_srm_image_tag: REPLACE_WITH_REVIEWED_SRM_TAG e2e_temp_dir: "{{ playbook_dir }}/../../../.cache/sdk-e2e-tmp" oop_platform_extra_values: srm: srmcontroller: workloads: namespaces: [oop-e2e-workloads] controlPaths: - control_path_ref: sdk-lab-k8s adapter: kubernetes config: namespace: oop-e2e-workloads topology: | oop_platform_bootstrap: version: openop.srm.bootstrap/v1 platform_instance_id: sdk-lab control_paths: Loading @@ -43,6 +33,8 @@ all: adapter_contract_version: v1 infrastructure: namespace: oop-e2e-workloads in_cluster: true endpoint_host: sdk-lab.example.test zones: - ref: sdk-lab-zone name: SDK lab Loading @@ -63,3 +55,9 @@ all: control_path_ref: sdk-lab-k8s is_default: true state: active oop_platform_extra_values: srm: srmcontroller: workloads: namespaces: - oop-e2e-workloads
ansible/tests/r2_e2e/SDK_ACCEPTANCE.md +26 −0 Changes for ansible/tests/r2_e2e/SDK_ACCEPTANCE.md: 26 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -131,3 +131,29 @@ object can select {"cpu":2,"memory_mb":257}; CPU must be an integer1–256 and memory_mb an integer1–16384. Invalid values fail during profile loading, before creating lab clients. This bounded repair fixes request construction; observing applied Deployment/Pod resources belongs to the next cumulative checkpoint. ## Bootstrap prerequisite This lab reuses the single-bootstrap producer from Ansible !6 and the reviewed chart source04a5b7b2 from Helm !17. Integrate those prerequisites and SRM !43 before claiming a deployable release lab. Keep the actual candidate package and component image pins explicit in the private profile. The inventory declares oop_platform_bootstrap once. Its Kubernetes control path explicitly selects in_cluster=true, oop-e2e-workloads and the reachable endpoint_host. The existing role generates topology and runtime_directory; SRM constructs the SDK instance from that same bootstrap. There is no separate controlPaths registry input or ambient kubeconfig fallback. The deployment provides the chart's service account and workload-namespace RBAC. Remote clusters use the existing kubeconfig_secret/kube_context mechanism instead. The same role test now reads this example inventory and verifies the generated path, connection mode, namespace, endpoint host and binding reference without contacting a cluster. Final current-image OEG acceptance still needs a live lab. The application-wide TI recipe above remains unqualified for this release. Its explicit opt-in gate must stay false until the whole selected route/provider path supports it; enabling a NEF option alone is insufficient. The current device-scoped TI route requires its own aligned acceptance increment. This request/bootstrap repair makes no TI pass claim.
ansible/tests/test_platform_bootstrap.yml +40 −0 Changes for ansible/tests/test_platform_bootstrap.yml: 40 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -75,3 +75,43 @@ ansible.builtin.assert: that: - bootstrap_competing_rejected | default(false) - name: Load the dedicated SDK acceptance inventory ansible.builtin.set_fact: sdk_lab_inventory: >- {{ (lookup('ansible.builtin.file', playbook_dir ~ '/../inventory/r2-sdk-lab.example.yml') | from_yaml).all.children.oop_platform_operators.hosts.sdk_lab }} - name: Require one explicit SDK lab bootstrap declaration ansible.builtin.assert: that: - "'oop_platform_bootstrap' in sdk_lab_inventory" - >- not sdk_lab_inventory.oop_platform_extra_values.srm.srmcontroller.get('controlPaths', []) - >- not sdk_lab_inventory.oop_platform_extra_values.srm.srmcontroller.get('topology', '') - name: Generate the SDK inventory through the existing producer ansible.builtin.include_role: name: oop-platform tasks_from: bootstrap vars: oop_platform_bootstrap: "{{ sdk_lab_inventory.oop_platform_bootstrap }}" oop_platform_extra_values: "{{ sdk_lab_inventory.oop_platform_extra_values }}" - name: Verify the generated SDK execution connection ansible.builtin.assert: that: - sdk_lab_bootstrap.control_paths | length == 1 - sdk_lab_path.ref == 'sdk-lab-k8s' - sdk_lab_path.infrastructure.in_cluster - sdk_lab_path.infrastructure.namespace == 'oop-e2e-workloads' - sdk_lab_path.infrastructure.endpoint_host == sdk_lab_inventory.oop_platform_public_host - sdk_lab_path.infrastructure.runtime_directory == '/var/run/openop-tfsdk' - "'kubeconfig_path' not in sdk_lab_path.infrastructure" - oop_platform_bootstrap_values.srm.srmcontroller.controlPathCredentials | length == 0 - sdk_lab_binding.control_path_ref == sdk_lab_path.ref vars: sdk_lab_bootstrap: "{{ oop_platform_bootstrap_values.srm.srmcontroller.topology | from_yaml }}" sdk_lab_path: "{{ sdk_lab_bootstrap.control_paths[0] }}" sdk_lab_binding: "{{ sdk_lab_bootstrap.zones[0].domains[0].capabilities[0].control_path_bindings[0] }}"