Skip to content

Commit

Permalink
(PE-37233) Adding add_compiler to test matrix
Browse files Browse the repository at this point in the history
Updated add_compiler spec to check compiler has been added and puppet run before running add compiler
Added test matrix for add compiler
  • Loading branch information
ragingra committed Apr 30, 2024
1 parent fa0dc4c commit fdfbee1
Show file tree
Hide file tree
Showing 4 changed files with 166 additions and 10 deletions.
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
43 changes: 36 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,56 @@
$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' }

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"}'
$result = run_command("/opt/puppetlabs/bin/puppet query \'${compiler_count_query}\'", $primary_host).first['stdout']
$first_count = parsejson($result)[0]['count']

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

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

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

$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

0 comments on commit fdfbee1

Please sign in to comment.