# ipmi class to load ipmi client modules except on VMware platforms

class base::ipmi {

  # disable ipmi and ipmievd on vmware (or others)
  if $::is_virtual == 'true' { # string comparison
    case $::operatingsystem {
      'debian', 'ubuntu': {
        package { 'ipmitool': ensure => purged }
      }
      'redhat': {
        service { 'ipmi':
          ensure  => stopped,
          enable  => false,
        }
      }
      default: {}
    }
  } else {
    case $::operatingsystem {
      'debian','ubuntu': {
        package { 'ipmitool':
          ensure => present;
        }
        base::os::kernel-module { 'ipmi_msghandler':
          ensure => present;
        }
        base::os::kernel-module { 'ipmi_si':
          ensure  => present,
          require => Os::Kernel-module['ipmi_msghandler'];
        }
        base::os::kernel-module { 'ipmi_devintf':
          ensure  => present,
          require => Os::Kernel-module['ipmi_si'];
        }
        service { 'ipmievd':
          ensure      => running,
          name        => 'ipmievd',
          enable      => true,
          hasstatus   => false,
          status      => 'pidof ipmievd',
          require     => [Os::Kernel-module['ipmi_devintf'],
                          File['/etc/default/ipmievd']
                          ],
        }
        file { '/etc/default/ipmievd':
          source => 'puppet:///modules/base/ipmi/etc/default/ipmievd',
          notify => Service['ipmievd'],
        }
      }
      'redhat': {
        case $::lsbmajdistrelease {
          '6': {
            package { 'OpenIPMI':   ensure => present; }
          }
          default: {
            package {
              'OpenIPMI-tools':   ensure => present;
              'OpenIPMI':         ensure => present;
            }
          }
        }
        service { 'ipmi':
          ensure    => running,
          name      => 'ipmi',
          enable    => true,
          hasstatus => true,
          require   => Package['OpenIPMI'],
        }
        case $::lsbdistcodename {
          'tikanga','santiago': {
            service { 'ipmievd':
              ensure      => running,
              name        => 'ipmievd',
              enable      => true,
              hasstatus   => true,
              require     => $::lsbdistcodename ? {
                'tikanaga' => Package['OpenIPMI-tools'],
                default    => Package['OpenIPMI'],
              },
              
            }
          }
        }
      }
    }
  }
}