HewlettPackard/oneview-puppet

View on GitHub
examples/demos/create_infrastructure_with_JBOD.pp

Summary

Maintainability
Test Coverage
################################################################################
# (C) Copyright 2016-2020 Hewlett Packard Enterprise Development LP
#
# 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.
################################################################################

oneview_ethernet_network{'Test Puppet Network':
  ensure => 'present',
  data   => {
    name           => 'Test Puppet Network',
    vlanId         => '1045',
    purpose        => 'General',
    smartLink      => true,
    privateNetwork => false,
  }
}

$interconnect_type_1 = 'Virtual Connect SE 40Gb F8 Module for Synergy'
$interconnect_type_2 = 'Synergy 20Gb Interconnect Link Module'
$network_names = [ 'Test Puppet Network' ]

oneview_logical_interconnect_group{'Test Puppet LIG':
  ensure  => 'present',
  require => Oneview_ethernet_network['Test Puppet Network'],
  data    => {
    name               => 'Test Puppet LIG',
    redundancyType     => 'HighlyAvailable',
    interconnectBaySet => 3,
    enclosureType      => 'SY12000',
    enclosureIndexes   => [1, 2, 3],
    uplinkSets         =>
    [
      {
        name                => 'TUNNEL_ETH_UP_01',
        ethernetNetworkType => 'Tagged',
        networkType         => 'Ethernet',
        lacpTimer           => 'Short',
        mode                => 'Auto',
        uplink_ports        => [{ bay             => 3,
                                  port            => 'Q1',
                                  type            => $interconnect_type_1,
                                  enclosure_index => 1 },
                                { bay             => 6,
                                  port            => 'Q1',
                                  type            => $interconnect_type_1,
                                  enclosure_index => 2 }
        ],
        networkUris         => $network_names
      }
    ],
    interconnects      =>
    [
      {
        bay             => 3,
        type            => $interconnect_type_1,
        enclosure_index => 1
      },
      {
        bay             => 6,
        type            => $interconnect_type_1,
        enclosure_index => 2
      },
      {
        bay             => 3,
        type            => $interconnect_type_2,
        enclosure_index => 2
      },
      {
        bay             => 6,
        type            => $interconnect_type_2,
        enclosure_index => 1
      },
      {
        bay             => 3,
        type            => $interconnect_type_2,
        enclosure_index => 3
      },
      {
        bay             => 6,
        type            => $interconnect_type_2,
        enclosure_index => 3
      }
    ]
  }
}

oneview_sas_logical_interconnect_group{'Test Puppet SAS LIG':
  ensure  => 'present',
  require => Oneview_logical_interconnect_group['Test Puppet LIG'],
  data    => {
    name          => 'Test Puppet SAS LIG',
    interconnects =>
    [
      {
        bay  => 1,
        type => 'Synergy 12Gb SAS Connection Module'
      },
      {
        bay  => 4,
        type => 'Synergy 12Gb SAS Connection Module'
      }
    ]
  }
}

oneview_enclosure_group{'Test Enclosure Group':
  ensure  => 'present',
  require => Oneview_sas_logical_interconnect_group['Test Puppet SAS LIG'],
  data    => {
    name                        => 'Test Enclosure Group',
    stackingMode                => 'Enclosure',
    interconnectBayMappingCount => '8',
    enclosureCount              => '3',
    interconnectBayMappings     =>
    [
      {
        interconnectBay             => '1',
        logicalInterconnectGroupUri => Oneview_sas_logical_interconnect_group['Test Puppet SAS LIG']['data']['name'],
        enclosureIndex              => '1'
      },
      {
        interconnectBay             => '4',
        logicalInterconnectGroupUri => Oneview_sas_logical_interconnect_group['Test Puppet SAS LIG']['data']['name'],
        enclosureIndex              => '1'
      },
      {
        interconnectBay             => '1',
        logicalInterconnectGroupUri => Oneview_sas_logical_interconnect_group['Test Puppet SAS LIG']['data']['name'],
        enclosureIndex              => '2'
      },
      {
        interconnectBay             => '4',
        logicalInterconnectGroupUri => Oneview_sas_logical_interconnect_group['Test Puppet SAS LIG']['data']['name'],
        enclosureIndex              => '2'
      },
      {
        interconnectBay             => '1',
        logicalInterconnectGroupUri => Oneview_sas_logical_interconnect_group['Test Puppet SAS LIG']['data']['name'],
        enclosureIndex              => '3'
      },
      {
        interconnectBay             => '4',
        logicalInterconnectGroupUri => Oneview_sas_logical_interconnect_group['Test Puppet SAS LIG']['data']['name'],
        enclosureIndex              => '3'
      },
      {
        interconnectBay             => '3',
        logicalInterconnectGroupUri => Oneview_logical_interconnect_group['Test Puppet LIG']['data']['name']
      },
      {
        interconnectBay             => '6',
        logicalInterconnectGroupUri => Oneview_logical_interconnect_group['Test Puppet LIG']['data']['name']
      },
    ]
  }
}

oneview_logical_enclosure{'Test LE':
  ensure  => 'present',
  require => Oneview_enclosure_group['Test Enclosure Group'],
  data    => {
    name                 => 'Test LE',
    enclosureUris        => ['/rest/enclosures/0000000000A66101', '/rest/enclosures/0000000000A66102', '/rest/enclosures/0000000000A66103'],
    enclosureGroupUri    => Oneview_enclosure_group['Test Enclosure Group']['data']['name'],
    firmwareBaselineUri  => 'null',
    forceInstallFirmware => 'false',
  }
}

oneview_server_profile_template{'Test SPT':
  ensure  => 'present',
  require => Oneview_logical_enclosure['Test LE'],
  data    => {
    name                  => 'Test SPT',
    enclosureGroupUri     => Oneview_enclosure_group['Test Enclosure Group']['data']['name'],
    serverHardwareTypeUri => 'SY 480 Gen9 1',
    connectionSettings    =>
    {
      manageConnections => true,
      connections       =>
      [
      {
          id            => 1,
          networkUri    => Oneview_ethernet_network['Test Puppet Network']['data']['name'],
          functionType  => 'Ethernet',
          portId        => 'Mezz 3:1-a',
          requestedMbps => '2000'
      }
      ]
    },
    firmware              =>
    {
      firmwareBaselineUri => 'HPE Synergy Custom SPP 201912 2019 12 19',
      manageFirmware      => true
    },
    boot                  =>
    {
      manageBoot        => true,
      order             =>
      [
      'CD',
      'USB',
      'HardDisk',
      'PXE'
      ],
      complianceControl => 'Checked'
    },
    bootMode              =>
    {
      manageMode => true,
      mode       => 'BIOS',
      secureBoot => 'Disabled'
    },
    bios                  =>
    {
      manageBios         => true
    },
    localStorage          =>
    {
      complianceControl => 'Checked',
      controllers       =>
      [
        {
          deviceSlot => 'Mezz 1',
          mode       => 'HBA',
          initialize => false
        }
      ],
      sasLogicalJBODs   =>
      [
        {
          id                => '1',
          deviceSlot        => 'Mezz 1',
          name              => 'DATA',
          numPhysicalDrives => '1',
          driveMinSizeGB    => '500',
          driveMaxSizeGB    => '500',
          driveTechnology   => 'SasHdd',
          eraseData         => false
        }
      ]
    }
  }
}

oneview_server_profile_template{'Test Server Profile Create from Profile Template':
  ensure  => 'set_new_profile',
  require => Oneview_server_profile_template['Test SPT'],
  data    => {
    name => 'Test SPT'
  }
}