Class: OneviewSDK::LogicalInterconnectGroup

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

Overview

Logical enclosure group resource implementation

Constant Summary collapse

BASE_URI =
'/rest/logical-interconnect-groups'.freeze

Instance Attribute Summary collapse

Attributes inherited from Resource

#api_version, #client, #data, #logger

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

Constructor Details

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

Returns a new instance of LogicalInterconnectGroup.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/oneview-sdk/resource/logical_interconnect_group.rb', line 7

def initialize(client, params = {}, api_ver = nil)
  super
  # Default values:
  @data['enclosureType'] ||= 'C7000'
  @data['state'] ||= 'Active'
  @data['uplinkSets'] ||= []
  @data['type'] ||= 'logical-interconnect-groupV3'
  @data['interconnectMapTemplate'] ||= {}
  @data['interconnectMapTemplate']['interconnectMapEntryTemplates'] ||= []

  # User friendly values:
  @bay_count = 8

  # Create all entries if empty
  parse_interconnect_map_template if @data['interconnectMapTemplate']['interconnectMapEntryTemplates'] == []
end

Instance Attribute Details

#bay_countObject (readonly)

Returns the value of attribute bay_count.



5
6
7
# File 'lib/oneview-sdk/resource/logical_interconnect_group.rb', line 5

def bay_count
  @bay_count
end

Instance Method Details

#add_interconnect(bay, type) ⇒ Object

Add an interconnect

Parameters:

  • bay (Fixnum)

    Bay number

  • type (String)

    Interconnect type



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/oneview-sdk/resource/logical_interconnect_group.rb', line 27

def add_interconnect(bay, type)
  @data['interconnectMapTemplate']['interconnectMapEntryTemplates'].each do |entry|
    entry['logicalLocation']['locationEntries'].each do |location|
      if location['type'] == 'Bay' && location['relativeValue'] == bay
        entry['permittedInterconnectTypeUri'] = OneviewSDK::Interconnect.get_type(@client, type)['uri']
      end
    end
  end
rescue StandardError
  list = OneviewSDK::Interconnect.get_types(@client).map { |t| t['name'] }
  raise "Interconnect type #{type} not found! Supported types: #{list}"
end

Add an uplink set

Parameters:



42
43
44
# File 'lib/oneview-sdk/resource/logical_interconnect_group.rb', line 42

def add_uplink_set(uplink_set)
  @data['uplinkSets'] << uplink_set.data
end

#get_default_settingsObject

Get the default settings



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

def get_default_settings
  get_uri = self.class::BASE_URI + '/defaultSettings'
  response = @client.rest_get(get_uri, @api_version)
  @client.response_handler(response)
end

#get_settingsObject

Get settings



54
55
56
57
58
# File 'lib/oneview-sdk/resource/logical_interconnect_group.rb', line 54

def get_settings
  get_uri = @data['uri'] + '/settings'
  response = @client.rest_get(get_uri, @api_version)
  @client.response_handler(response)
end

#update(attributes = {}) ⇒ Object

Saves the current data attributes to the Logical Interconnect Group

Returns:

  • Updated instance of the Logical Interconnect Group



62
63
64
65
66
67
68
69
70
71
# File 'lib/oneview-sdk/resource/logical_interconnect_group.rb', line 62

def update(attributes = {})
  set_all(attributes)
  update_options = {
    'If-Match' =>  @data.delete('eTag'),
    'Body' => @data
  }
  response = @client.rest_put(@data['uri'], update_options, @api_version)
  body = @client.response_handler(response)
  set_all(body)
end