summaryrefslogtreecommitdiffstats
path: root/manifests/init.pp
blob: 7f2d09d537ac48cf6411824c3ee6266abb76c747 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# == Class: fdio
#
# Installs vpp and configures /etc/vpp/startup.conf
#
# === Parameters:
# [*repo_branch*]
#   (optional) fd.io repo branch, valid values are 'release', 'master', and stable branch such as 'stable.1609'.
#   Defaults to 'release'.
#
# [*vpp_dpdk_devs*]
#   (optional) Array of PCI addresses to bind to vpp.
#   Defaults to undef.
#
# [*vpp_dpdk_uio_driver*]
#   (optional) VPP DPDK UIO driver type.
#   Defaults to 'uio_pci_generic'
#
# [*vpp_vlan_enabled*]
#   (optional) Enabled vlan tagged traffic on VPP interfaces. This is needed to configure
#              vlan_strip_offload option for Cisco VIC interfaces.
#   Default to false.
#
# [*vpp_cpu_main_core*]
#   (optional) VPP main thread pinning.
#   Defaults to undef (no pinning)
#
# [*vpp_cpu_corelist_workers*]
#   (optional) List of cores for VPP worker thread pinning in string format.
#   Defaults to undef (no pinning)
#
# [*copy_kernel_nic_ip*]
#   (optional) Configures VPP interface with IP settings found on its corresponding kernel NIC.
#   Defaults to true
#
class fdio (
  $repo_branch              = $::fdio::params::repo_branch,
  $vpp_dpdk_devs            = $::fdio::params::vpp_dpdk_devs,
  $vpp_dpdk_uio_driver      = $::fdio::params::vpp_dpdk_uio_driver,
  $vpp_vlan_enabled         = $::fdio::params::vpp_vlan_enabled,
  $vpp_cpu_main_core        = $::fdio::params::vpp_cpu_main_core,
  $vpp_cpu_corelist_workers = $::fdio::params::vpp_cpu_corelist_workers,
  $copy_kernel_nic_ip       = $::fdio::params::copy_kernel_nic_ip,
) inherits ::fdio::params {

  validate_array($vpp_dpdk_devs)
  validate_bool($vpp_vlan_enabled)
  validate_bool($copy_kernel_nic_ip)

  # Validate OS family
  case $::osfamily {
    'RedHat': {}
    'Debian': {
        warning('Debian has limited support, is less stable, less tested.')
    }
    default: {
        fail("Unsupported OS family: ${::osfamily}")
    }
  }

  # Validate OS
  case $::operatingsystem {
    'centos', 'redhat': {
      if $::operatingsystemmajrelease != '7' {
        # RHEL/CentOS versions < 7 not supported as they lack systemd
        fail("Unsupported OS: ${::operatingsystem} ${::operatingsystemmajrelease}")
      }
    }
    'fedora': {
      # Fedora distros < 23 are EOL as of 2016-07-19
      # https://fedoraproject.org/wiki/End_of_life
      if $::operatingsystemmajrelease < '23' {
        fail("Unsupported OS: ${::operatingsystem} ${::operatingsystemmajrelease}")
      }
    }
    'ubuntu': {
      if $::operatingsystemmajrelease != '16.04' {
        fail("Unsupported OS: ${::operatingsystem} ${::operatingsystemmajrelease}")
      }
    }
    default: {
      fail("Unsupported OS: ${::operatingsystem}")
    }
  }

  class { '::fdio::install': } ->
  class { '::fdio::config': } ~>
  class { '::fdio::service': } ->
  Class['::fdio']

}