diff --git a/.github/workflows/integration_block_storage.yml b/.github/workflows/integration_block_storage.yml index 495ed0c7..371c6573 100644 --- a/.github/workflows/integration_block_storage.yml +++ b/.github/workflows/integration_block_storage.yml @@ -65,7 +65,7 @@ jobs: echo OS_PASSWORD=secret echo OS_PROJECT_ID=$(openstack --os-cloud=devstack-admin project show admin -f value -c id) echo OS_PROJECT_NAME=admin - echo OS_RESIZE_FLAVOR=2 + echo OS_RESIZE_FLAVOR=c1 echo OS_FLAVOR=1 echo OS_DOMAIN_ID=default } >> "$GITHUB_ENV" diff --git a/.github/workflows/integration_compute.yml b/.github/workflows/integration_compute.yml new file mode 100644 index 00000000..7d072378 --- /dev/null +++ b/.github/workflows/integration_compute.yml @@ -0,0 +1,73 @@ +name: Run Compute Integration Tests +on: + workflow_dispatch: + pull_request: + paths: + - '**Compute**' + - '**Common**' + +jobs: + tests: + if: "!contains(github.event.head_commit.message, 'skip ci') && !contains(github.event.head_commit.message, 'ci skip')" + strategy: + fail-fast: false + matrix: + openstack_version: [ "stable/wallaby" ] # Cinder v2 is removed from xena + php_version: [ 8.1 ] + ubuntu_version: [ 20.04 ] + runs-on: ubuntu-${{ matrix.ubuntu_version }} + name: Deploy OpenStack ${{ matrix.name }} with Nova and run Compute integration tests with php ${{matrix.php_version}} + steps: + - uses: actions/checkout@v2 + - name: get cache directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + - uses: actions/cache@v3 + with: + path: | + ~/.php_cs.cache + ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ matrix.php_version }}-${{ hashFiles('**.composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer-${{ matrix.php_version }}- + - uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php_version }} + extensions: curl + tools: composer:v2 + coverage: none + - run: composer install --prefer-dist --no-interaction --no-progress + - name: Restore devstack cache + uses: actions/cache@v3 + with: + path: | + /opt/stack/* + !/opt/stack/data + ~/devstack/ + key: ${{ runner.os }}-openstack-${{ matrix.openstack_version }}-${{ github.workflow }} + - name: Deploy devstack + uses: EmilienM/devstack-action@v0.11 + with: + branch: ${{ matrix.openstack_version }} + conf_overrides: | + CINDER_ISCSI_HELPER=lioadm + enabled_services: 's-account,s-container,s-object,s-proxy,s-bak' + - name: Set env variables + run: | + { + echo OS_AUTH_URL="$(grep -oP -m 1 "(?<=auth_url: )(.*)\$" /etc/openstack/clouds.yaml)/v3" + echo OS_REGION=RegionOne + echo OS_REGION_NAME=RegionOne + echo OS_USER_ID=$(openstack --os-cloud=devstack-admin user show admin -f value -c id) + echo OS_USERNAME=admin + echo OS_PASSWORD=secret + echo OS_PROJECT_ID=$(openstack --os-cloud=devstack-admin project show admin -f value -c id) + echo OS_PROJECT_NAME=admin + echo OS_RESIZE_FLAVOR=c1 + echo OS_FLAVOR=1 + echo OS_DOMAIN_ID=default + } >> "$GITHUB_ENV" + - name: Execute integration tests + run: php ./tests/integration/run.php -s=Compute + diff --git a/.github/workflows/integration_identity.yml b/.github/workflows/integration_identity.yml index 0de8f1ab..c7f2f8a9 100644 --- a/.github/workflows/integration_identity.yml +++ b/.github/workflows/integration_identity.yml @@ -61,7 +61,7 @@ jobs: echo OS_PASSWORD=secret echo OS_PROJECT_ID=$(openstack --os-cloud=devstack-admin project show admin -f value -c id) echo OS_PROJECT_NAME=admin - echo OS_RESIZE_FLAVOR=2 + echo OS_RESIZE_FLAVOR=c1 echo OS_FLAVOR=1 echo OS_DOMAIN_ID=default } >> "$GITHUB_ENV" diff --git a/.github/workflows/integration_images.yml b/.github/workflows/integration_images.yml index b6a216b9..98e5b3d0 100644 --- a/.github/workflows/integration_images.yml +++ b/.github/workflows/integration_images.yml @@ -63,7 +63,7 @@ jobs: echo OS_PASSWORD=secret echo OS_PROJECT_ID=$(openstack --os-cloud=devstack-admin project show admin -f value -c id) echo OS_PROJECT_NAME=admin - echo OS_RESIZE_FLAVOR=2 + echo OS_RESIZE_FLAVOR=c1 echo OS_FLAVOR=1 echo OS_DOMAIN_ID=default } >> "$GITHUB_ENV" diff --git a/.github/workflows/integration_networking.yml b/.github/workflows/integration_networking.yml index ba651c16..51c8e3c6 100644 --- a/.github/workflows/integration_networking.yml +++ b/.github/workflows/integration_networking.yml @@ -63,7 +63,7 @@ jobs: echo OS_PASSWORD=secret echo OS_PROJECT_ID=$(openstack --os-cloud=devstack-admin project show admin -f value -c id) echo OS_PROJECT_NAME=admin - echo OS_RESIZE_FLAVOR=2 + echo OS_RESIZE_FLAVOR=c1 echo OS_FLAVOR=1 echo OS_DOMAIN_ID=default } >> "$GITHUB_ENV" diff --git a/.github/workflows/integration_object_storage.yml b/.github/workflows/integration_object_storage.yml index ee3a484b..252e4e37 100644 --- a/.github/workflows/integration_object_storage.yml +++ b/.github/workflows/integration_object_storage.yml @@ -68,7 +68,7 @@ jobs: echo OS_PASSWORD=secret echo OS_PROJECT_ID=$(openstack --os-cloud=devstack-admin project show admin -f value -c id) echo OS_PROJECT_NAME=admin - echo OS_RESIZE_FLAVOR=2 + echo OS_RESIZE_FLAVOR=c1 echo OS_FLAVOR=1 echo OS_DOMAIN_ID=default } >> "$GITHUB_ENV" diff --git a/tests/integration/Compute/v2/CoreTest.php b/tests/integration/Compute/v2/CoreTest.php index 5d7c0b67..f1f20528 100644 --- a/tests/integration/Compute/v2/CoreTest.php +++ b/tests/integration/Compute/v2/CoreTest.php @@ -139,7 +139,7 @@ protected function setUp(): void $this->logStep('Created volume {name} with {id}', ['name' => $this->volume->name, 'id' => $this->volume->id]); - $this->getSecurityGroupService()->createSecurityGroup(['name' => self::SECGROUP]); + $this->secgroup = $this->getSecurityGroupService()->createSecurityGroup(['name' => self::SECGROUP]); $this->logStep('Created security group {secgroup}', ['secgroup' => self::SECGROUP]); } @@ -498,7 +498,7 @@ private function createServerImage() ]; /** @var $server \OpenStack\Compute\v2\Models\Server */ - require_once $this->sampleFile($replacements, 'Images/create_server_image.php'); + require_once $this->sampleFile($replacements, 'images/create_server_image.php'); $server->waitWithCallback(function (Server $server) { return !$server->taskState; @@ -511,7 +511,7 @@ private function createServerImage() private function listImages() { - require_once $this->sampleFile([], 'Images/list_images.php'); + require_once $this->sampleFile([], 'images/list_images.php'); $this->logStep('Listed all available images'); } @@ -520,7 +520,7 @@ private function getImage() { $replacements = ['{imageId}' => $this->imageId]; - require_once $this->sampleFile($replacements, 'Images/get_image.php'); + require_once $this->sampleFile($replacements, 'images/get_image.php'); $this->logStep('Retrieved details for image {imageId}', $replacements); } @@ -530,20 +530,20 @@ private function imageMetadata() $replacements = ['{imageId}' => $this->imageId]; /** @var $image \OpenStack\Compute\v2\Models\Image */ - require_once $this->sampleFile($replacements, 'Images/reset_image_metadata.php'); + require_once $this->sampleFile($replacements, 'images/reset_image_metadata.php'); $this->logStep('Reset metadata of image {imageId}', $replacements); - require_once $this->sampleFile($replacements, 'Images/retrieve_image_metadata.php'); + require_once $this->sampleFile($replacements, 'images/retrieve_image_metadata.php'); $this->logStep('Retrieved metadata of image {imageId}', $replacements); - require_once $this->sampleFile($replacements + ['{metadataKey}'], 'Images/delete_image_metadata_item.php'); + require_once $this->sampleFile($replacements + ['{metadataKey}'], 'images/delete_image_metadata_item.php'); $this->logStep('Deleted metadata key of image {imageId}', $replacements); } private function deleteServerImage() { $replacements = ['{imageId}' => $this->imageId]; - require_once $this->sampleFile($replacements, 'Images/delete_image.php'); + require_once $this->sampleFile($replacements, 'images/delete_image.php'); $this->logStep('Deleted image {imageId}', $replacements); }