Commit 6835ae8a authored by Konstantinos Togias's avatar Konstantinos Togias
Browse files

test: configure the SDK lab through one explicit bootstrap

parent 94e3b119
Loading
Loading
Loading
Loading
Loading
+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
@@ -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:
@@ -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
@@ -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
+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
@@ -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.
+40 −0
Changes for ansible/tests/test_platform_bootstrap.yml: 40 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -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] }}"