Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(PE-37233) Adding add_compiler to test matrix #434

Merged
merged 1 commit into from
May 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions .github/workflows/test-add-compiler-matrix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
---
name: "Add compiler matrix"

on:
pull_request:
paths:
- ".github/workflows/**/*"
- "spec/**/*"
- "lib/**/*"
- "tasks/**/*"
- "functions/**/*"
- "types/**/*"
- "plans/**/*"
- "hiera/**/*"
- "manifests/**/*"
- "templates/**/*"
- "files/**/*"
- "metadata.json"
- "Rakefile"
- "Gemfile"
- "provision.yaml"
- ".rspec"
- ".rubocop.yml"
- ".puppet-lint.rc"
- ".fixtures.yml"
branches: [main]
workflow_dispatch: {}

jobs:
test-add-compiler:
name: "PE ${{ matrix.version }} ${{ matrix.architecture }} on ${{ matrix.image }}"
runs-on: ubuntu-20.04
env:
BOLT_GEM: true
BOLT_DISABLE_ANALYTICS: true
LANG: "en_US.UTF-8"
strategy:
fail-fast: false
matrix:
architecture:
- standard
- large
- extra-large
version:
- 2021.7.7
- 2023.6.0
image:
- centos-7
- almalinux-cloud/almalinux-8
steps:
- name: "Checkout Source"
uses: actions/checkout@v2

- name: "Activate Ruby 2.7"
uses: ruby/setup-ruby@v1
with:
ruby-version: "2.7"
bundler-cache: true

- name: "Print bundle environment"
if: ${{ github.repository_owner == 'puppetlabs' }}
run: |
echo ::group::info:bundler
bundle env
echo ::endgroup::

- name: "Provision test cluster"
timeout-minutes: 15
run: |
echo ::group::prepare
mkdir -p $HOME/.ssh
echo 'Host *' > $HOME/.ssh/config
echo ' ServerAliveInterval 150' >> $HOME/.ssh/config
echo ' ServerAliveCountMax 2' >> $HOME/.ssh/config
bundle exec rake spec_prep
echo ::endgroup::

echo ::group::provision
bundle exec bolt plan run peadm_spec::provision_test_cluster \
--modulepath spec/fixtures/modules \
provider=provision_service \
image=${{ matrix.image }} \
architecture=${{ matrix.architecture }}-with-extra-compiler
echo ::endgroup::

echo ::group::info:request
cat request.json || true; echo
echo ::endgroup::

echo ::group::info:inventory
sed -e 's/password: .*/password: "[redacted]"/' < spec/fixtures/litmus_inventory.yaml || true
echo ::endgroup::

- name: "Install PE on test cluster"
timeout-minutes: 120
run: |
bundle exec bolt plan run peadm_spec::install_test_cluster \
--inventoryfile spec/fixtures/litmus_inventory.yaml \
--modulepath spec/fixtures/modules \
architecture=${{ matrix.architecture }} \
version=${{ matrix.version }}

- name: 'Run add_compiler plan'
timeout-minutes: 50
run: |
bundle exec bolt plan run peadm_spec::add_compiler -v \
--inventoryfile spec/fixtures/litmus_inventory.yaml \
--modulepath spec/fixtures/modules \
architecture=${{ matrix.architecture }}

- name: 'Tear down test cluster'
if: ${{ always() }}
continue-on-error: true
run: |
if [ -f spec/fixtures/litmus_inventory.yaml ]; then
echo ::group::tear_down
bundle exec rake 'litmus:tear_down'
echo ::endgroup::

echo ::group::info:request
cat request.json || true; echo
echo ::endgroup::
fi
7 changes: 4 additions & 3 deletions .github/workflows/test-add-compiler.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
bundle env
echo ::endgroup::

- name: 'Provision test cluster (specified architecture with added DR)'
- name: 'Provision test cluster (specified architecture with added compiler)'
timeout-minutes: 15
run: |
echo ::group::prepare
Expand Down Expand Up @@ -100,12 +100,13 @@ jobs:
version=${{ matrix.version }}

- name: 'Run add_compiler plan'
timeout-minutes: 30
timeout-minutes: 50
run: |
bundle exec bolt plan run peadm_spec::add_compiler -v \
--inventoryfile spec/fixtures/litmus_inventory.yaml \
--modulepath spec/fixtures/modules \
architecture=${{ matrix.architecture }}
architecture=${{ matrix.architecture }} \
--stream

- name: 'Wait as long as the file ${HOME}/pause file is present'
if: ${{ always() && github.event.inputs.ssh-debugging == 'true' }}
Expand Down
44 changes: 37 additions & 7 deletions spec/acceptance/peadm_spec/plans/add_compiler.pp
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,57 @@
$target.set_var('certname', $fqdn.first['stdout'].chomp)
}

$primary_host = $t.filter |$n| { $n.vars['role'] == 'primary' }
$compiler_host = $t.filter |$n| { $n.vars['role'] == 'unconfigured-compiler' }
$compiler_fqdn = run_command('hostname -f', $compiler_host).first['stdout'].chomp

run_task('peadm::puppet_runonce', $primary_host)

$common_params = {
avail_group_letter => 'A',
}

$arch_params =
case $architecture {
'standard': {{
primary_host => $primary_host,
primary_postgresql_host => $primary_host,
compiler_host => $compiler_host,
}}
'large': {{
primary_host => $t.filter |$n| { $n.vars['role'] == 'primary' },
primary_postgresql_host => $t.filter |$n| { $n.vars['role'] == 'primary' },
compiler_host => $t.filter |$n| { $n.vars['role'] == 'unconfigured-compiler' },
primary_host => $primary_host,
primary_postgresql_host => $primary_host,
compiler_host => $compiler_host,
}}
'extra-large': {{
primary_host => $t.filter |$n| { $n.vars['role'] == 'primary' },
primary_host => $primary_host,
primary_postgresql_host => $t.filter |$n| { $n.vars['role'] == 'primary-pdb-postgresql' },
compiler_host => $t.filter |$n| { $n.vars['role'] == 'unconfigured-compiler' },
compiler_host => $compiler_host,
}}
default: { fail('Invalid architecture!') }
}

$result =
run_plan('peadm::add_compiler', $arch_params + $common_params)
$compiler_count_query = 'inventory[count()] { trusted.extensions.pp_auth_role = "pe_compiler"}'
$query_result = run_command("/opt/puppetlabs/bin/puppet query \'${compiler_count_query}\'", $primary_host).first['stdout']
$first_count = parsejson($query_result)[0]['count']

$result = run_plan('peadm::add_compiler', $arch_params + $common_params)

$query_result2 = run_command("/opt/puppetlabs/bin/puppet query \'${compiler_count_query}\'", $primary_host).first['stdout']
$second_count = parsejson($query_result2)[0]['count']

$compiler_query = "inventory[certname] { trusted.extensions.pp_auth_role = \"pe_compiler\" and certname = \"${compiler_fqdn}\"}"

$compiler_json = run_command("/opt/puppetlabs/bin/puppet query \'${compiler_query}\'", $primary_host).first['stdout']
$compiler = parsejson($compiler_json)

if $first_count + 1 != $second_count {
fail('Compiler count did not increase')
}

if $compiler == [] {
fail('Compiler not found')
}

return($result)
}
3 changes: 3 additions & 0 deletions spec/acceptance/peadm_spec/plans/provision_test_cluster.pp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
'extra-large-with-dr': {
['primary', 'primary-pdb-postgresql', 'compiler', 'replica', 'replica-pdb-postgresql', 'compiler']
}
'standard-with-extra-compiler': {
['primary', 'unconfigured-compiler']
}
'large-with-extra-compiler': {
['primary', 'compiler', 'unconfigured-compiler']
}
Expand Down
Loading