puppet_litmus 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/exe/matrix_from_metadata_v2 +71 -22
- data/lib/puppet_litmus/rake_helper.rb +1 -1
- data/lib/puppet_litmus/version.rb +1 -1
- data/spec/exe/matrix_from_metadata_v2_spec.rb +6 -6
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4433a55c5c24b484d53d1584036b0bc8371f784dd762ce92eaff928ae984cb66
         | 
| 4 | 
            +
              data.tar.gz: '08c533a7048dce835a3af639dad0c5f481533fd50be36739c0a0be416e450634'
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c52c6c1b0fa3908ecc2dda5bbc4502e0acc4e03c3eb41704f20a729acfa04f13abd3c8c1ede9f38ba69ea6476d0e32eb3870e36db1862c94dd0195dd79e3dc9b
         | 
| 7 | 
            +
              data.tar.gz: 44c24366269ac536d2089a3051099c2deeb1312f2b2e73ef64d99a2b9d2348abd0a173a4f65150ba19ffc56e1f7d3264dc1ca81796b278908c93222603b07804
         | 
    
        data/exe/matrix_from_metadata_v2
    CHANGED
    
    | @@ -94,29 +94,79 @@ else | |
| 94 94 | 
             
              exclude_list = []
         | 
| 95 95 | 
             
            end
         | 
| 96 96 |  | 
| 97 | 
            +
            # Force the use of the provision_service provisioner, if the --provision-service argument is present
         | 
| 98 | 
            +
            if ARGV.include?('--provision-service')
         | 
| 99 | 
            +
              provision_service_occurrences = ARGV.count { |arg| arg == '--provision-service' }
         | 
| 100 | 
            +
              raise 'the --provision-service argument should be present just one time in the command' unless provision_service_occurrences <= 1
         | 
| 101 | 
            +
             | 
| 102 | 
            +
              # NOTE: that the below are the only available images for the provision service
         | 
| 103 | 
            +
              updated_platforms = {
         | 
| 104 | 
            +
                'AlmaLinux-8' => 'almalinux-cloud/almalinux-8',
         | 
| 105 | 
            +
                'CentOS-7' => 'centos-7',
         | 
| 106 | 
            +
                'CentOS-8' => 'centos-stream-8',
         | 
| 107 | 
            +
                'Rocky-8' => 'rocky-linux-cloud/rocky-linux-8',
         | 
| 108 | 
            +
                'Debian-10' => 'debian-10',
         | 
| 109 | 
            +
                'Debian-11' => 'debian-11',
         | 
| 110 | 
            +
                'Ubuntu-20.04' => 'ubuntu-2004-lts',
         | 
| 111 | 
            +
                'Ubuntu-22.04' => 'ubuntu-2204-lts'
         | 
| 112 | 
            +
              }
         | 
| 113 | 
            +
             | 
| 114 | 
            +
              updated_list = IMAGE_TABLE.dup.clone
         | 
| 115 | 
            +
              updated_list.merge!(updated_platforms)
         | 
| 116 | 
            +
             | 
| 117 | 
            +
              IMAGE_TABLE = updated_list.freeze
         | 
| 118 | 
            +
              DOCKER_PLATFORMS = {}.freeze
         | 
| 119 | 
            +
            end
         | 
| 120 | 
            +
             | 
| 97 121 | 
             
            metadata_path = ENV['TEST_MATRIX_FROM_METADATA'] || 'metadata.json'
         | 
| 98 122 | 
             
            metadata = JSON.parse(File.read(metadata_path))
         | 
| 99 | 
            -
             | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
               | 
| 103 | 
            -
             | 
| 104 | 
            -
             | 
| 105 | 
            -
             | 
| 106 | 
            -
             | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 110 | 
            -
             | 
| 111 | 
            -
                 | 
| 112 | 
            -
             | 
| 113 | 
            -
             | 
| 114 | 
            -
             | 
| 115 | 
            -
             | 
| 116 | 
            -
                  }
         | 
| 123 | 
            +
             | 
| 124 | 
            +
            # Allow the user to pass a file containing a custom matrix
         | 
| 125 | 
            +
            if ARGV.include?('--custom-matrix')
         | 
| 126 | 
            +
              custom_matrix_occurrences = ARGV.count { |arg| arg == '--custom-matrix' }
         | 
| 127 | 
            +
              raise '--custom-matrix argument should be present just one time in the command' unless custom_matrix_occurrences <= 1
         | 
| 128 | 
            +
             | 
| 129 | 
            +
              file_path = ARGV[ARGV.find_index('--custom-matrix') + 1]
         | 
| 130 | 
            +
              raise 'no file path specified' if file_path.nil?
         | 
| 131 | 
            +
             | 
| 132 | 
            +
              begin
         | 
| 133 | 
            +
                custom_matrix = JSON.parse(File.read(file_path))
         | 
| 134 | 
            +
              rescue StandardError => e
         | 
| 135 | 
            +
                case e
         | 
| 136 | 
            +
                when JSON::ParserError
         | 
| 137 | 
            +
                  raise 'the matrix must be an array of valid JSON objects'
         | 
| 138 | 
            +
                when Errno::ENOENT
         | 
| 139 | 
            +
                  raise "File not found: #{e.message}"
         | 
| 117 140 | 
             
                else
         | 
| 118 | 
            -
                   | 
| 119 | 
            -
             | 
| 141 | 
            +
                  raise "An unknown exception occurred: #{e.message}"
         | 
| 142 | 
            +
                end
         | 
| 143 | 
            +
              end
         | 
| 144 | 
            +
              custom_matrix.each do |platform|
         | 
| 145 | 
            +
                matrix[:platforms] << platform
         | 
| 146 | 
            +
              end
         | 
| 147 | 
            +
            else
         | 
| 148 | 
            +
              # Set platforms based on declared operating system support
         | 
| 149 | 
            +
              metadata['operatingsystem_support'].sort_by { |a| a['operatingsystem'] }.each do |sup|
         | 
| 150 | 
            +
                os = sup['operatingsystem']
         | 
| 151 | 
            +
                sup['operatingsystemrelease'].sort_by(&:to_i).each do |ver|
         | 
| 152 | 
            +
                  image_key = "#{os}-#{ver}"
         | 
| 153 | 
            +
             | 
| 154 | 
            +
                  if IMAGE_TABLE.key?(image_key) && !exclude_list.include?(image_key.downcase)
         | 
| 155 | 
            +
                    matrix[:platforms] << {
         | 
| 156 | 
            +
                      label: image_key,
         | 
| 157 | 
            +
                      provider: 'provision_service',
         | 
| 158 | 
            +
                      image: IMAGE_TABLE[image_key]
         | 
| 159 | 
            +
                    }
         | 
| 160 | 
            +
                  elsif DOCKER_PLATFORMS.key?(image_key) && !exclude_list.include?(image_key.downcase)
         | 
| 161 | 
            +
                    matrix[:platforms] << {
         | 
| 162 | 
            +
                      label: image_key,
         | 
| 163 | 
            +
                      provider: 'docker',
         | 
| 164 | 
            +
                      image: DOCKER_PLATFORMS[image_key]
         | 
| 165 | 
            +
                    }
         | 
| 166 | 
            +
                  else
         | 
| 167 | 
            +
                    puts "::warning::#{image_key} was excluded from testing" if exclude_list.include?(image_key.downcase)
         | 
| 168 | 
            +
                    puts "::warning::Cannot find image for #{image_key}" unless exclude_list.include?(image_key.downcase)
         | 
| 169 | 
            +
                  end
         | 
| 120 170 | 
             
                end
         | 
| 121 171 | 
             
              end
         | 
| 122 172 | 
             
            end
         | 
| @@ -155,9 +205,8 @@ end | |
| 155 205 |  | 
| 156 206 | 
             
            # Set to defaults (all collections) if no matches are found
         | 
| 157 207 | 
             
            matrix[:collection] = COLLECTION_TABLE.map { |collection| "puppet#{collection[:puppet_maj_version]}-nightly" } if matrix[:collection].empty?
         | 
| 158 | 
            -
             | 
| 159 208 | 
             
            # Just to make sure there aren't any duplicates
         | 
| 160 | 
            -
            matrix[:platforms] = matrix[:platforms].uniq.sort_by { |a| a[:label] }
         | 
| 209 | 
            +
            matrix[:platforms] = matrix[:platforms].uniq.sort_by { |a| a[:label] } unless ARGV.include?('--custom-matrix')
         | 
| 161 210 | 
             
            matrix[:collection] = matrix[:collection].uniq.sort
         | 
| 162 211 |  | 
| 163 212 | 
             
            set_output('matrix', JSON.generate(matrix))
         | 
| @@ -287,7 +287,7 @@ module PuppetLitmus::RakeHelper | |
| 287 287 | 
             
                if SUPPORTED_PROVISIONERS.include?(provisioner)
         | 
| 288 288 | 
             
                  "provision::#{provisioner}"
         | 
| 289 289 | 
             
                else
         | 
| 290 | 
            -
                  warn "WARNING:  | 
| 290 | 
            +
                  warn "WARNING: Unsupported provisioner '#{provisioner}', try #{SUPPORTED_PROVISIONERS.join('/')}"
         | 
| 291 291 | 
             
                  provisioner.to_s
         | 
| 292 292 | 
             
                end
         | 
| 293 293 | 
             
              end
         | 
| @@ -22,9 +22,9 @@ RSpec.describe 'matrix_from_metadata_v2' do | |
| 22 22 | 
             
                    [
         | 
| 23 23 | 
             
                      'matrix={',
         | 
| 24 24 | 
             
                      '"platforms":[',
         | 
| 25 | 
            -
                      '{"label":"CentOS-6","provider":" | 
| 26 | 
            -
                      '{"label":"RedHat-8","provider":" | 
| 27 | 
            -
                      '{"label":"Ubuntu-18.04","provider":" | 
| 25 | 
            +
                      '{"label":"CentOS-6","provider":"docker","image":"litmusimage/centos:6"},',
         | 
| 26 | 
            +
                      '{"label":"RedHat-8","provider":"provision_service","image":"rhel-8"},',
         | 
| 27 | 
            +
                      '{"label":"Ubuntu-18.04","provider":"docker","image":"litmusimage/ubuntu:18.04"}',
         | 
| 28 28 | 
             
                      '],',
         | 
| 29 29 | 
             
                      '"collection":[',
         | 
| 30 30 | 
             
                      '"puppet7-nightly","puppet8-nightly"',
         | 
| @@ -59,8 +59,8 @@ RSpec.describe 'matrix_from_metadata_v2' do | |
| 59 59 | 
             
                    [
         | 
| 60 60 | 
             
                      'matrix={',
         | 
| 61 61 | 
             
                      '"platforms":[',
         | 
| 62 | 
            -
                      '{"label":"CentOS-6","provider":" | 
| 63 | 
            -
                      '{"label":"RedHat-8","provider":" | 
| 62 | 
            +
                      '{"label":"CentOS-6","provider":"docker","image":"litmusimage/centos:6"},',
         | 
| 63 | 
            +
                      '{"label":"RedHat-8","provider":"provision_service","image":"rhel-8"}',
         | 
| 64 64 | 
             
                      '],',
         | 
| 65 65 | 
             
                      '"collection":[',
         | 
| 66 66 | 
             
                      '"puppet7-nightly","puppet8-nightly"',
         | 
| @@ -96,7 +96,7 @@ RSpec.describe 'matrix_from_metadata_v2' do | |
| 96 96 | 
             
                    [
         | 
| 97 97 | 
             
                      'matrix={',
         | 
| 98 98 | 
             
                      '"platforms":[',
         | 
| 99 | 
            -
                      '{"label":"CentOS-6","provider":" | 
| 99 | 
            +
                      '{"label":"CentOS-6","provider":"docker","image":"litmusimage/centos:6"}',
         | 
| 100 100 | 
             
                      '],',
         | 
| 101 101 | 
             
                      '"collection":[',
         | 
| 102 102 | 
             
                      '"puppet7-nightly","puppet8-nightly"',
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: puppet_litmus
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0 | 
| 4 | 
            +
              version: 1.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Puppet, Inc.
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023- | 
| 11 | 
            +
            date: 2023-07-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bolt
         |