Class: OneviewSDK::EnclosureGroup

Inherits:
Resource
  • Object
show all
Defined in:
lib/oneview-sdk/resource/enclosure_group.rb

Overview

Enclosure group resource implementation

Validates collapse

VALID_INTERCONNECT_BAY_MAPPING_COUNTS =
(1..8).freeze
VALID_IP_ADDRESSING_MODES =
%w(DHCP External IpPool).freeze
VALID_PORT_MAPPING_COUNTS =
(0..8).freeze
VALID_POWER_MODES =
['RedundantPowerFeed', 'RedundantPowerSupply', nil].freeze
VALID_STACKING_MODES =
%w(Enclosure MultiEnclosure None SwitchPairs).freeze

Constant Summary collapse

BASE_URI =
'/rest/enclosure-groups'.freeze

Instance Attribute Summary

Attributes inherited from Resource

#api_version, #client, #data, #logger

Validates collapse

Instance Method Summary collapse

Methods inherited from Resource

#==, #[], #[]=, #create, #create!, #delete, #each, #eql?, #exists?, find_by, from_file, get_all, #like?, #refresh, #retrieve!, schema, #schema, #set, #set_all, #to_file, #update

Constructor Details

#initialize(client, params = {}, api_ver = nil) ⇒ EnclosureGroup

Returns a new instance of EnclosureGroup.



6
7
8
9
10
11
12
# File 'lib/oneview-sdk/resource/enclosure_group.rb', line 6

def initialize(client, params = {}, api_ver = nil)
  super
  # Default values:
  @data['type'] ||= 'EnclosureGroupV200'
  @data['interconnectBayMappingCount'] ||= 8
  create_interconnect_bay_mapping unless @data['interconnectBayMappings']
end

Instance Method Details

#add_logical_interconnect_group(lig) ⇒ Object

Add logical interconnect group

Parameters:



65
66
67
68
69
70
71
72
# File 'lib/oneview-sdk/resource/enclosure_group.rb', line 65

def add_logical_interconnect_group(lig)
  lig.retrieve! unless lig['uri']
  lig['interconnectMapTemplate']['interconnectMapEntryTemplates'].each do |entry|
    entry['logicalLocation']['locationEntries'].each do |location|
      add_lig_to_bay(location['relativeValue'], lig) if location['type'] == 'Bay' && entry['permittedInterconnectTypeUri']
    end
  end
end

#create_interconnect_bay_mappingObject

Create interconnect bay mapping



75
76
77
78
79
80
81
82
83
84
# File 'lib/oneview-sdk/resource/enclosure_group.rb', line 75

def create_interconnect_bay_mapping
  @data['interconnectBayMappings'] = []
  1.upto(@data['interconnectBayMappingCount']) do |bay_number|
    entry = {
      'interconnectBay' => bay_number,
      'logicalInterconnectGroupUri' => nil
    }
    @data['interconnectBayMappings'] << entry
  end
end

#get_scriptString

Get the script executed by enclosures in this enclosure group

Returns:

  • (String)

    script for this enclosure group



47
48
49
50
51
# File 'lib/oneview-sdk/resource/enclosure_group.rb', line 47

def get_script
  ensure_client && ensure_uri
  response = @client.rest_get(@data['uri'] + '/script', @api_version)
  @client.response_handler(response)
end

#set_script(body) ⇒ Object

Change the script executed by enclosures in this enclosure group

Parameters:

  • body (String)

    script to be executed

Returns:

  • true if set successfully



56
57
58
59
60
61
# File 'lib/oneview-sdk/resource/enclosure_group.rb', line 56

def set_script(body)
  ensure_client && ensure_uri
  response = @client.rest_put(@data['uri'] + '/script', { 'body' => body }, @api_version)
  @client.response_handler(response)
  true
end

#validate_interconnectBayMappingCount(value) ⇒ Object



17
18
19
# File 'lib/oneview-sdk/resource/enclosure_group.rb', line 17

def validate_interconnectBayMappingCount(value)
  fail 'Interconnect Bay Mapping Count out of range 1..8' unless VALID_INTERCONNECT_BAY_MAPPING_COUNTS.include?(value)
end

#validate_ipAddressingMode(value) ⇒ Object



22
23
24
25
26
# File 'lib/oneview-sdk/resource/enclosure_group.rb', line 22

def validate_ipAddressingMode(value)
  return if !@data['enclosureTypeUri'] || /c7000/ =~ @data['enclosureTypeUri']
  is_not_a_c7000_without_ip_addressing_mode = !(/c7000/ =~ @data['enclosureTypeUri']) && !value
  fail "Invalid ip AddressingMode: #{value}" if !VALID_IP_ADDRESSING_MODES.include?(value) || is_not_a_c7000_without_ip_addressing_mode
end

#validate_portMappingCount(value) ⇒ Object



29
30
31
# File 'lib/oneview-sdk/resource/enclosure_group.rb', line 29

def validate_portMappingCount(value)
  fail 'Port Mapping Count out of range 0..8' unless VALID_PORT_MAPPING_COUNTS.include?(value)
end

#validate_powerMode(value) ⇒ Object



34
35
36
# File 'lib/oneview-sdk/resource/enclosure_group.rb', line 34

def validate_powerMode(value)
  fail 'Invalid powerMode' unless VALID_POWER_MODES.include?(value)
end

#validate_stackingMode(value) ⇒ Object



39
40
41
# File 'lib/oneview-sdk/resource/enclosure_group.rb', line 39

def validate_stackingMode(value)
  fail 'Invalid stackingMode' unless VALID_STACKING_MODES.include?(value)
end