module ILO_SDK::ComputerDetailsHelper

Contains helper methods for computer details actions

Public Instance Methods

get_array_controller_details() click to toggle source

Get the array controller details @raise [RuntimeError] if the request failed @return [Hash] array_controller_details

# File lib/ilo-sdk/helpers/computer_details_helper.rb, line 81
def get_array_controller_details
  response = rest_get('/redfish/v1/Systems/1/SmartStorage/')
  storages = response_handler(response)
  array_controllers = []
  response = rest_get(storages['links']['ArrayControllers']['href'])
  array_ctrls = response_handler(response)
  if array_ctrls['links'].key? 'Member'
    array_ctrls['links']['Member'].each do |array_controller|
      response = rest_get(array_controller['href'])
      controller = response_handler(response)
      storage_enclosures = []
      response = rest_get(controller['links']['StorageEnclosures']['href'])
      response_handler(response)['links']['Member'].each do |enclosure|
        response = rest_get(enclosure['href'])
        enclsr = response_handler(response)
        enc = {
          'Model' => enclsr['Model'],
          'SerialNumber' => enclsr['SerialNumber'],
          'DriveBayCount' => enclsr['DriveBayCount'],
          'State' => enclsr['Status']['State'],
          'Health' => enclsr['Status']['Health'],
          'Location' => enclsr['Location'].to_s + ' (' + enclsr['LocationFormat'].to_s + ')',
          'FirmwareVersion' => enclsr['FirmwareVersion']['Current']['VersionString']
        }
        storage_enclosures.push(enc)
      end

      logical_drives = []
      response = rest_get(controller['links']['LogicalDrives']['href'])
      response_handler(response)['links']['Member'].each do |logicaldrive|
        response = rest_get(logicaldrive['href'])
        lds = response_handler(response)
        data_drives = []
        response = rest_get(lds['links']['DataDrives']['href'])
        response_handler(response)['links']['Member'].each do |datadrives|
          response = rest_get(datadrives['href'])
          disk_drive = response_handler(response)
          dd = {
            'Model' => disk_drive['Model'],
            'Name' => disk_drive['Name'],
            'RotationalSpeedRpm' => disk_drive['RotationalSpeedRpm'],
            'SerialNumber' => disk_drive['SerialNumber'],
            'State' => disk_drive['Status']['State'],
            'Health' => disk_drive['Status']['Health'],
            'CapacityMiB' => disk_drive['CapacityMiB'],
            'CurrentTemperatureCelsius' => disk_drive['CurrentTemperatureCelsius']
          }
          data_drives.push(dd)
        end
        ld = {
          'Size' => lds['CapacityMiB'],
          'Raid' => lds['Raid'],
          'Status' => lds['Status']['State'],
          'Health' => lds['Status']['Health'],
          'DataDrives' => data_drives
        }
        logical_drives.push(ld)
      end
      ac = {
        'Model' => controller['Model'],
        'SerialNumber' => controller['SerialNumber'],
        'State' => controller['Status']['State'],
        'Health' => controller['Status']['Health'],
        'Location' => controller['Location'],
        'FirmWareVersion' => controller['FirmwareVersion']['Current']['VersionString'],
        'LogicalDrives' => logical_drives,
        'Enclosures' => storage_enclosures
      }
      array_controllers.push(ac)
    end
  end
  {
    'HPSmartStorage' => {
      'Health' => storages['Status']['Health'],
      'ArrayControllers' => array_controllers
    }
  }
end
get_computer_details() click to toggle source

Get all of the computer details @raise [RuntimeError] if the request failed @return [Hash] computer_details

# File lib/ilo-sdk/helpers/computer_details_helper.rb, line 18
def get_computer_details
  general_computer_details = get_general_computer_details
  computer_network_details = get_computer_network_details
  array_controller_details = get_array_controller_details
  general_computer_details.merge(computer_network_details).merge(array_controller_details)
end
get_computer_network_details() click to toggle source

Get the computer network details @raise [RuntimeError] if the request failed @return [Hash] computer_network_details

# File lib/ilo-sdk/helpers/computer_details_helper.rb, line 46
def get_computer_network_details
  network_adapters = []
  response = rest_get('/redfish/v1/Systems/1/NetworkAdapters/')
  networks = response_handler(response)['links']['Member']
  networks.each do |network|
    response = rest_get(network['href'])
    detail = response_handler(response)
    physical_ports = []
    detail['PhysicalPorts'].each do |port|
      n = {
        'Name' => port['Name'],
        'StructuredName' => port['Oem']['Hp']['StructuredName'],
        'MacAddress' => port['MacAddress'],
        'State' => port['Status']['State']
      }
      physical_ports.push(n)
    end
    nets = {
      'Name' => detail['Name'],
      'StructuredName' => detail['StructuredName'],
      'PartNumber' => detail['PartNumber'],
      'State' => detail['Status']['State'],
      'Health' => detail['Status']['Health'],
      'PhysicalPorts' => physical_ports
    }
    network_adapters.push(nets)
  end
  {
    'NetworkAdapters' => network_adapters
  }
end
get_general_computer_details() click to toggle source

Get the general computer details @raise [RuntimeError] if the request failed @return [Fixnum] general_computer_details

# File lib/ilo-sdk/helpers/computer_details_helper.rb, line 28
def get_general_computer_details
  response = rest_get('/redfish/v1/Systems/1/')
  details = response_handler(response)
  {
    'GeneralDetails' => {
      'manufacturer' => details['Manufacturer'],
      'model' => details['Model'],
      'AssetTag' => details['AssetTag'],
      'bios_version' => details['Bios']['Current']['VersionString'],
      'memory' => details['Memory']['TotalSystemMemoryGB'].to_s + ' GB',
      'processors' => details['Processors']['Count'].to_s + ' x ' + details['Processors']['ProcessorFamily'].to_s
    }
  }
end