#
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
#
# Author: Emilien Macchi <emilien.macchi@enovance.com>
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# == Class: ironic::params
#
# Parameters for puppet-ironic
#
class ironic::params {
  include openstacklib::defaults

  $pyver3 = $openstacklib::defaults::pyver3

  $dbsync_command               = 'ironic-dbsync'
  $inspector_dbsync_command     =
    'ironic-inspector-dbsync --config-file /etc/ironic-inspector/inspector.conf upgrade'
  $client_package               = 'python3-ironicclient'
  $inspector_client_package     = 'python3-ironic-inspector-client'
  $user                         = 'ironic'
  $group                        = 'ironic'
  $inspector_user               = 'ironic-inspector'
  $inspector_group              = 'ironic-inspector'
  $sushy_package_name           = 'python3-sushy'
  $proliantutils_package_name   = 'python3-proliantutils'
  $sushy_oem_idrac_package_name = 'python3-sushy-oem-idrac'

  case $facts['os']['family'] {
    'RedHat': {
      $common_package_name          = 'openstack-ironic-common'
      $api_package                  = 'openstack-ironic-api'
      $api_service                  = 'openstack-ironic-api'
      $conductor_package            = 'openstack-ironic-conductor'
      $conductor_service            = 'openstack-ironic-conductor'
      $novncproxy_package           = 'openstack-ironic-novncproxy'
      $novncproxy_service           = 'openstack-ironic-novncproxy'
      $dnsmasq_tftp_package         = 'openstack-ironic-dnsmasq-tftp-server'
      $dnsmasq_tftp_service         = 'openstack-ironic-dnsmasq-tftp-server'
      $inspector_package            = 'openstack-ironic-inspector'
      $inspector_service            = 'openstack-ironic-inspector'
      $inspector_dnsmasq_package    = 'openstack-ironic-inspector-dnsmasq'
      $inspector_dnsmasq_service    = 'openstack-ironic-inspector-dnsmasq'
      $inspector_api_package        = 'openstack-ironic-inspector-api'
      $inspector_api_service        = undef
      $inspector_conductor_package  = 'openstack-ironic-inspector-conductor'
      $inspector_conductor_service  = 'openstack-ironic-inspector-conductor'
      $systemd_python_package       = 'systemd-python'
      $ipxe_rom_dir                 = '/usr/share/ipxe'
      $ipxe_name_base               = 'ipxe-snponly'
      $uefi_pxe_bootfile_name       = 'bootx64.efi'
      $uefi_ipxe_bootfile_name      = 'snponly.efi'
      $ironic_wsgi_script_path      = '/var/www/cgi-bin/ironic'
      $ironic_wsgi_script_source    = "/usr/lib/python${pyver3}/site-packages/ironic/wsgi/__init__.py"
      $inspector_wsgi_script_path   = '/var/www/cgi-bin/ironic-inspector'
      $inspector_wsgi_script_source = '/usr/bin/ironic-inspector-api-wsgi'
      $xinetd_available             = false
      $tftpd_package                = undef
      $ipxe_package                 = 'ipxe-bootimgs'
      $pxelinux_package             = undef
      $pxelinux_path                = undef
      $syslinux_package             = 'syslinux-tftpboot'
      $syslinux_path                = '/tftpboot'
      $syslinux_files               = ['pxelinux.0', 'chain.c32', 'ldlinux.c32']
      $grub_efi_package             = 'grub2-efi-x64'
      $grub_efi_file                = "/boot/efi/EFI/${downcase($facts['os']['name'])}/grubx64.efi"
      $shim_package                 = 'shim'
      $shim_file                    = "/boot/efi/EFI/${downcase($facts['os']['name'])}/shimx64.efi"
    }
    'Debian': {
      $common_package_name          = 'ironic-common'
      $api_service                  = 'ironic-api'
      $api_package                  = 'ironic-api'
      $conductor_package            = 'ironic-conductor'
      $conductor_service            = 'ironic-conductor'
      $novncproxy_package           = undef
      $novncproxy_service           = undef
      $dnsmasq_tftp_package         = undef
      $dnsmasq_tftp_service         = undef
      $inspector_package            = 'ironic-inspector'
      $inspector_service            = 'ironic-inspector'
      $inspector_dnsmasq_package    = undef
      $inspector_dnsmasq_service    = undef
      $inspector_api_package        = undef
      $inspector_api_service        = undef
      $inspector_conductor_package  = undef
      $inspector_conductor_service  = undef
      $systemd_python_package       = 'python3-systemd'
      $ipxe_rom_dir                 = '/usr/lib/ipxe'
      $ipxe_name_base               = 'snponly'
      $uefi_pxe_bootfile_name       = 'bootx64.efi'
      $uefi_ipxe_bootfile_name      = 'snponly.efi'
      $ironic_wsgi_script_path      = '/usr/lib/cgi-bin/ironic'
      $ironic_wsgi_script_source    = '/usr/bin/ironic-api-wsgi'
      $inspector_wsgi_script_path   = '/usr/lib/cgi-bin/ironic-inspector'
      $inspector_wsgi_script_source = '/usr/bin/ironic-inspector-api-wsgi'
      $xinetd_available             = true
      $tftpd_package                = 'tftpd-hpa'
      $ipxe_package                 = 'ipxe'
      $pxelinux_package             = 'pxelinux'
      $pxelinux_path                = '/usr/lib/PXELINUX'
      $syslinux_package             = 'syslinux-common'
      $syslinux_path                = '/usr/lib/syslinux/modules/bios'
      $syslinux_files               = ['chain.c32', 'libcom32.c32', 'libutil.c32']
      $grub_efi_package             = 'grub-efi-amd64-signed'
      $grub_efi_file                = '/usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed'
      $shim_package                 = 'shim-signed'
      $shim_file                    = '/usr/lib/shim/shimx64.efi.signed'
    }
    default: {
      fail("Unsupported osfamily: ${facts['os']['family']}")
    }
  }
}
