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

Error on whitespace with 2.2.0 #683

Closed
petems opened this issue Mar 29, 2017 · 2 comments
Closed

Error on whitespace with 2.2.0 #683

petems opened this issue Mar 29, 2017 · 2 comments

Comments

@petems
Copy link
Contributor

petems commented Mar 29, 2017

This is a regression for 2.1.1 for me, where no error was shown.

I'm assuming it has to do with case statement stuff, I'll see if I can dig a bit

Whoops! It looks like puppet-lint has encountered an error that it doesn't
know how to handle. Please open an issue at https://github.com/rodjek/puppet-lint
and paste the following output into the issue description.

puppet-lint version: 2.2.0
ruby version: 2.3.3-p222
platform: x86_64-darwin15
file path: manifests/files.pp
file contents:

# Define: swap_file::files
#
# This is a defined type to create a swap_file
#
# == Parameters
# [*ensure*]
#   Allows creation or removal of swapspace and the corresponding file.
# [*swapfile*]
#   Location of swapfile, defaults to /mnt
# [*swapfilesize*]
#   Size of the swapfile as a string (eg. 10 MB, 1.2 GB).
#   Defaults to $::memorysize fact on the node
# [*add_mount*]
#   Add a mount to the swapfile so it persists on boot
# [*options*]
#   Mount options for the swapfile
# [*timeout*]
#   dd command exec timeout.
#   Defaults to 300
# [*cmd*]
#   What command is used to create the file, dd or fallocate. dd is better tested and safer but fallocate is significantly faster.
#   Defaults to dd
#
# == Examples
#
#   swap_file::files { 'default':
#     ensure   => present,
#     swapfile => '/mnt/swap.55',
#   }
#
# == Authors
#    @petems - Peter Souter
#
define swap_file::files (
  $ensure        = 'present',
  $swapfile      = '/mnt/swap.1',
  $swapfilesize  = $::memorysize,
  $add_mount     = true,
  $options       = 'defaults',
  $timeout       = 300,
  $cmd           = 'dd',
  $resize_existing = false,
  $resize_margin   = '50MB',
  $resize_verbose  = false,
)
{
  # Parameter validation
  validate_re($ensure, ['^absent$', '^present$'], "Invalid ensure: ${ensure} - (Must be 'present' or 'absent')")
  validate_string($swapfile)
  $swapfilesize_mb = to_bytes($swapfilesize) / 1048576
  validate_bool($add_mount)

  if $ensure == 'present' {

    if ($resize_existing and $::swapfile_sizes) {

      if (is_hash($::swapfile_sizes)) {

        if (has_key($::swapfile_sizes,$swapfile)) {
          ::swap_file::resize { $swapfile:
            swapfile_path          => $swapfile,
            margin                 => $resize_margin,
            expected_swapfile_size => $swapfilesize,
            actual_swapfile_size   => $::swapfile_sizes[$swapfile],
            verbose                => $resize_verbose,
            before                 => Exec["Create swap file ${swapfile}"],
          }
        }

      } else {
        $existing_swapfile_size = swap_file_size_from_csv($swapfile,$::swapfile_sizes_csv)
        if ($existing_swapfile_size) {
          ::swap_file::resize { $swapfile:
            swapfile_path          => $swapfile,
            margin                 => $resize_margin,
            expected_swapfile_size => $swapfilesize,
            actual_swapfile_size   => $existing_swapfile_size,
            verbose                => $resize_verbose,
            before                 => Exec["Create swap file ${swapfile}"],
          }
        }
      }
    }

    exec { "Create swap file ${swapfile}":
      creates => $swapfile,
      timeout => $timeout,
    }
    case $cmd {
      'dd': {
        Exec["Create swap file ${swapfile}"] { command => "/bin/dd if=/dev/zero of=${swapfile} bs=1M count=${swapfilesize_mb}" }
      }
      'fallocate': {
        Exec["Create swap file ${swapfile}"] { command => "/usr/bin/fallocate -l ${swapfilesize_mb}M ${swapfile}" }
      }
      default: {
        fail("Invalid cmd: ${cmd} - (Must be 'dd' or 'fallocate')")
      }
    }
    file { $swapfile:
      owner   => root,
      group   => root,
      mode    => '0600',
      require => Exec["Create swap file ${swapfile}"],
    }

    if $::selinux {
      File[$swapfile] {
        seltype => 'swapfile_t',
      }
    }

    swap_file { $swapfile:
      ensure  => 'present',
      require => File[$swapfile]
    }
    if $add_mount {
      mount { $swapfile:
        ensure  => present,
        fstype  => swap,
        device  => $swapfile,
        options => $options,
        dump    => 0,
        pass    => 0,
        require => Swap_file[$swapfile],
      }
    }
  }
  elsif $ensure == 'absent' {
    swap_file { $swapfile:
      ensure  => 'absent',
    }
    file { $swapfile:
      ensure  => absent,
      backup  => false,
      require => Swap_file[$swapfile],
    }
    mount { $swapfile:
      ensure => absent,
      device => $swapfile,
    }
  }
}

error:

NoMethodError: undefined method `map' for nil:NilClass
Did you mean?  tap
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/plugins/check_whitespace.rb:181:in `block (2 levels) in check'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/plugins/check_whitespace.rb:144:in `each'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/plugins/check_whitespace.rb:144:in `each_with_index'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/plugins/check_whitespace.rb:144:in `block in check'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/plugins/check_whitespace.rb:127:in `each'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/plugins/check_whitespace.rb:127:in `check'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/checkplugin.rb:21:in `run'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/checks.rb:58:in `block in run'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/checks.rb:56:in `each'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/checks.rb:56:in `run'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint.rb:191:in `run'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/tasks/puppet-lint.rb:79:in `block (3 levels) in define'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/tasks/puppet-lint.rb:77:in `each'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/tasks/puppet-lint.rb:77:in `block (2 levels) in define'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/file_utils_ext.rb:58:in `verbose'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/puppet-lint-2.2.0/lib/puppet-lint/tasks/puppet-lint.rb:71:in `block in define'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `block in execute'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `each'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `execute'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:194:in `block in invoke_with_call_chain'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/task.rb:180:in `invoke'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:152:in `invoke_task'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block (2 levels) in top_level'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `each'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block in top_level'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:117:in `run_with_threads'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:102:in `top_level'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:80:in `block in run'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:178:in `standard_exception_handling'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/lib/rake/application.rb:77:in `run'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rake-12.0.0/exe/rake:27:in `<top (required)>'
/Users/petersouter/.rbenv/versions/2.3.3/bin/rake:22:in `load'
/Users/petersouter/.rbenv/versions/2.3.3/bin/rake:22:in `<top (required)>'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/cli/exec.rb:74:in `load'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/cli/exec.rb:74:in `kernel_load'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/cli/exec.rb:27:in `run'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/cli.rb:335:in `exec'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor.rb:359:in `dispatch'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/cli.rb:20:in `dispatch'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor/base.rb:440:in `start'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/cli.rb:11:in `start'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/exe/bundle:32:in `block in <top (required)>'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/lib/bundler/friendly_errors.rb:121:in `with_friendly_errors'
/Users/petersouter/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/bundler-1.14.6/exe/bundle:24:in `<top (required)>'
/Users/petersouter/.rbenv/versions/2.3.3/bin/bundle:22:in `load'
/Users/petersouter/.rbenv/versions/2.3.3/bin/bundle:22:in `<main>'
@rodjek
Copy link
Owner

rodjek commented Mar 29, 2017

@petems, yep this is a duplicate of #681, I'll have a 2.2.1 release with the fix out in a few minutes.

@rodjek rodjek closed this as completed Mar 29, 2017
@petems
Copy link
Contributor Author

petems commented Mar 29, 2017

@rodjek++ awesome 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants