diff --git a/.github/workflows/test-py38-functional-devstack.yaml b/.github/workflows/test-py38-functional-devstack.yaml deleted file mode 100644 index 6c9852fd..00000000 --- a/.github/workflows/test-py38-functional-devstack.yaml +++ /dev/null @@ -1,26 +0,0 @@ -name: test-py38-functional-devstack - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -jobs: - build: - runs-on: ubuntu-20.04 - - steps: - - uses: actions/checkout@v4 - - - name: Install Devstack and Keycloak - run: | - ./ci/devstack.sh - - - name: Install ColdFront and plugin - run: | - ./ci/setup.sh - - - name: Run functional tests - run: | - ./ci/run_functional_tests_openstack.sh diff --git a/.github/workflows/test-py39-functional.yaml b/.github/workflows/test-py39-functional-microstack.yaml similarity index 80% rename from .github/workflows/test-py39-functional.yaml rename to .github/workflows/test-py39-functional-microstack.yaml index acd5be86..a796f08d 100644 --- a/.github/workflows/test-py39-functional.yaml +++ b/.github/workflows/test-py39-functional-microstack.yaml @@ -1,4 +1,4 @@ -name: test-py39-functional +name: test-py39-functional-microstack on: push: @@ -8,7 +8,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 @@ -41,7 +41,11 @@ jobs: microstack.openstack application credential create "$CREDENTIAL_NAME" -f value -c secret) export OPENSTACK_DEVSTACK_APPLICATION_CREDENTIAL_ID=$( microstack.openstack application credential show "$CREDENTIAL_NAME" -f value -c id) + export OPENSTACK_ESI_APPLICATION_CREDENTIAL_SECRET=$OPENSTACK_DEVSTACK_APPLICATION_CREDENTIAL_SECRET + export OPENSTACK_ESI_APPLICATION_CREDENTIAL_ID=$OPENSTACK_DEVSTACK_APPLICATION_CREDENTIAL_ID + export OPENSTACK_PUBLIC_NETWORK_ID=$(microstack.openstack network show external -f value -c id) export OS_AUTH_URL="https://localhost:5000" coldfront test coldfront_plugin_cloud.tests.functional.openstack + coldfront test coldfront_plugin_cloud.tests.functional.esi diff --git a/ci/devstack-mapping.json b/ci/devstack-mapping.json deleted file mode 100644 index 5c8dd6ee..00000000 --- a/ci/devstack-mapping.json +++ /dev/null @@ -1,16 +0,0 @@ -[ - { - "local": [ - { - "user": { - "name": "{0}" - } - } - ], - "remote": [ - { - "type": "OIDC-preferred_username" - } - ] - } -] diff --git a/ci/devstack-test-oidc.py b/ci/devstack-test-oidc.py deleted file mode 100644 index ad92d3ea..00000000 --- a/ci/devstack-test-oidc.py +++ /dev/null @@ -1,26 +0,0 @@ -import os -import sys - -from keystoneauth1 import identity -from keystoneauth1 import session - -host_ip = os.getenv('HOST_IP', 'localhost') -auth = identity.v3.oidc.OidcPassword( - f'http://{host_ip}/identity/v3', - identity_provider='sso', - protocol='openid', - client_id='devstack', - client_secret='nomoresecret', - access_token_endpoint=f'https://{host_ip}:8443/realms/master/protocol/openid-connect/token', - discovery_endpoint=f'https://{host_ip}:8443/realms/master/.well-known/openid-configuration', - username='admin', - password='nomoresecret', - project_name='federated_project', - project_domain_name='federated_domain', -) -s = session.Session(auth) - -if s.get_token(): - print('Authentication successful!') -else: - sys.exit('OpenID Authentication failed') diff --git a/ci/devstack.sh b/ci/devstack.sh deleted file mode 100755 index ec0e4596..00000000 --- a/ci/devstack.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash - -# -# Installs Devstack with the OIDC plugin -# -set -xe -REPO_PATH=$PWD - -sudo apt-get update -# sudo apt-get upgrade -y - -sudo mkdir -p /opt/stack -sudo chown "$USER:$USER" /opt/stack - -# Install CA into keycloak container and host -mkdir /opt/stack/data -cd /opt/stack/data -openssl req -x509 -nodes -newkey rsa:2048 -keyout key.pem -out cert.pem -sha256 -subj "/CN=$(hostname -I | awk '{print $1}')" -cat cert.pem key.pem > devstack-cert.pem -sudo cp devstack-cert.pem /usr/local/share/ca-certificates/devstack-cert.crt -sudo update-ca-certificates - -# Install and start Devstack -git clone https://github.com/openstack/devstack.git /opt/stack/devstack -cd /opt/stack/devstack -git checkout "stable/2023.1" - -cp samples/local.conf . - -# Github Actions sets the CI environment variable -if [[ "${CI}" == "true" ]]; then - sudo systemctl start mysql - - echo " - INSTALL_DATABASE_SERVER_PACKAGES=False - DATABASE_PASSWORD=root - " >> local.conf -fi - -echo " - disable_service horizon - disable_service tempest - enable_service s-proxy s-object s-container s-account - SWIFT_REPLICAS=1 - IP_VERSION=4 - GIT_DEPTH=1 - GIT_BASE=https://github.com - - SWIFT_DEFAULT_BIND_PORT=8085 - SWIFT_DEFAULT_BIND_PORT_INT=8086 -" >> local.conf -./stack.sh - -source /opt/stack/devstack/openrc admin admin - -# Create role implication to allow admin to admin on Swift -openstack implied role create admin --implied-role ResellerAdmin - -# Create oidc protocol and mappings to register keycloak identity provider -openstack identity provider create --remote-id https://foo sso -openstack mapping create --rules $REPO_PATH/ci/devstack-mapping.json sso_oidc_mapping -openstack federation protocol create --identity-provider sso --mapping sso_oidc_mapping openid diff --git a/ci/run_functional_tests_openstack.sh b/ci/run_functional_tests_openstack.sh index 24e24222..8ec532a5 100755 --- a/ci/run_functional_tests_openstack.sh +++ b/ci/run_functional_tests_openstack.sh @@ -5,20 +5,19 @@ # Tests expect the resource to be name Devstack set -xe REPO_PATH=$PWD -source $REPO_PATH/ci/devstack-config-ip.sh -source /opt/stack/devstack/openrc admin admin +source $REPO_PATH/ci/devstack-config-ip.sh credential_name=$(openssl rand -base64 12) export OPENSTACK_DEVSTACK_APPLICATION_CREDENTIAL_SECRET=$( - openstack application credential create "$credential_name" -f value -c secret) + microstack.openstack application credential create "$credential_name" -f value -c secret) export OPENSTACK_DEVSTACK_APPLICATION_CREDENTIAL_ID=$( - openstack application credential show "$credential_name" -f value -c id) + microstack.openstack application credential show "$credential_name" -f value -c id) export OPENSTACK_ESI_APPLICATION_CREDENTIAL_SECRET=$OPENSTACK_DEVSTACK_APPLICATION_CREDENTIAL_SECRET export OPENSTACK_ESI_APPLICATION_CREDENTIAL_ID=$OPENSTACK_DEVSTACK_APPLICATION_CREDENTIAL_ID -export OPENSTACK_PUBLIC_NETWORK_ID=$(openstack network show public -f value -c id) +export OPENSTACK_PUBLIC_NETWORK_ID=$(microstack.openstack network show external -f value -c id) if [[ ! "${CI}" == "true" ]]; then source /tmp/coldfront_venv/bin/activate @@ -26,11 +25,7 @@ fi export DJANGO_SETTINGS_MODULE="local_settings" export FUNCTIONAL_TESTS="True" -export OS_AUTH_URL="http://$HOST_IP/identity" -export KEYCLOAK_URL="http://$HOST_IP:8080" -export KEYCLOAK_USER="admin" -export KEYCLOAK_PASS="nomoresecret" -export KEYCLOAK_REALM="master" +export OS_AUTH_URL="http://localhost:5000" coverage run --source="." -m django test coldfront_plugin_cloud.tests.functional.openstack coverage run --source="." -m django test coldfront_plugin_cloud.tests.functional.esi