Class: OneviewSDK::API200::LogicalInterconnect

Inherits:
Resource show all
Defined in:
lib/oneview-sdk/resource/api200/logical_interconnect.rb

Overview

Logical interconnect resource implementation

Constant Summary collapse

BASE_URI =
'/rest/logical-interconnects'.freeze
LOCATION_URI =
'/rest/logical-interconnects/locations/interconnects'.freeze

Constants inherited from Resource

Resource::UNIQUE_IDENTIFIERS

Instance Attribute Summary

Attributes inherited from Resource

#api_version, #client, #data, #logger

Instance Method Summary collapse

Methods inherited from Resource

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

Constructor Details

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

Create a resource object, associate it with a client, and set its properties.



25
26
27
28
29
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 25

def initialize(client, params = {}, api_ver = nil)
  super
  # Default values:
  @data['type'] ||= 'logical-interconnectV3'
end

Instance Method Details

#add_snmp_trap_destination(trap_destination, trap_format = 'SNMPv1', community_string = 'public', trap_options = {}) ⇒ Object

It will add one trap destination to the Logical Interconnect SNMP configuration



219
220
221
222
223
224
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 219

def add_snmp_trap_destination(trap_destination, trap_format = 'SNMPv1', community_string = 'public', trap_options = {})
  trap_options['communityString'] = community_string
  trap_options['trapDestination'] = trap_destination
  trap_options['trapFormat'] = trap_format
  @data['snmpConfiguration']['trapDestinations'].push(trap_options)
end

#complianceObject

Returns logical interconnects to a consistent state. The current logical interconnect state is compared to the associated logical interconnect group.



130
131
132
133
134
135
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 130

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

#configurationObject

Asynchronously applies or re-applies the logical interconnect configuration to all managed interconnects



139
140
141
142
143
144
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 139

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

#create(bay_number, enclosure) ⇒ Object

Creates an Interconnect in the desired bay in a specified enclosure WARN: It does not create the LOGICAL INTERCONNECT itself. It will fail if no interconnect is already present on the specified position



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 36

def create(bay_number, enclosure)
  enclosure.ensure_uri
  entry = {
    'locationEntries' => [
      { 'value' => bay_number, 'type' => 'Bay' },
      { 'value' => enclosure['uri'], 'type' => 'Enclosure' }
    ]
  }
  response = @client.rest_post(self.class::LOCATION_URI, { 'body' => entry }, @api_version)
  @client.response_handler(response)
end

#delete(bay_number, enclosure) ⇒ OneviewSDK::LogicalInterconnect

Deletes an INTERCONNECT WARN: This will not delete the LOGICAL INTERCONNECT itself, and may cause inconsistency between the enclosure and LIG



53
54
55
56
57
58
59
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 53

def delete(bay_number, enclosure)
  enclosure.ensure_uri
  delete_uri = self.class::LOCATION_URI + "?location=Enclosure:#{enclosure['uri']},Bay:#{bay_number}"
  response = @client.rest_delete(delete_uri, {}, @api_version)
  @client.response_handler(response)
  self
end

#firmware_update(command, firmware_driver, firmware_options) ⇒ Object

Update firmware

Raises:



258
259
260
261
262
263
264
265
266
267
268
269
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 258

def firmware_update(command, firmware_driver, firmware_options)
  ensure_client && ensure_uri
  firmware_options['command'] = command
  firmware_options['sppUri'] =  firmware_driver['uri']
  firmware_options['sppName'] = firmware_driver['name']
  update_json = {
    'If-Match' => '*',
    'body' => firmware_options
  }
  response = @client.rest_put(@data['uri'] + '/firmware', update_json)
  @client.response_handler(response)
end

#generate_trap_options(enet_trap_categories = [], fc_trap_categories = [], vcm_trap_categories = [], trap_severities = []) ⇒ Hash

Generates trap options to be used in add_snmp_trap_destination method



235
236
237
238
239
240
241
242
243
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 235

def generate_trap_options(enet_trap_categories = [], fc_trap_categories = [], vcm_trap_categories = [], trap_severities = [])
  options = {
    'enetTrapCategories' => enet_trap_categories,
    'vcmTrapCategories' => vcm_trap_categories,
    'fcTrapCategories' => fc_trap_categories,
    'trapSeverities' => trap_severities
  }
  options
end

#get_firmwareHash

Gets the installed firmware for a logical interconnect.



247
248
249
250
251
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 247

def get_firmware
  ensure_client && ensure_uri
  response = @client.rest_get(@data['uri'] + '/firmware')
  @client.response_handler(response)
end

Gets a collection of uplink ports from the member interconnects which are eligible for assignment to an analyzer port.



149
150
151
152
153
154
155
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 149

def get_unassigned_uplink_ports_for_port_monitor
  ensure_client && ensure_uri
  response = @client.rest_get("#{@data['uri']}/unassignedUplinkPortsForPortMonitor")
  @client.response_handler(response)
  body = @client.response_handler(response)
  body['members']
end

#list_vlan_networksOneviewSDK::Resource

Lists internal networks on the logical interconnect



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 77

def list_vlan_networks
  ensure_client && ensure_uri
  results = OneviewSDK::Resource.find_by(@client, {}, @data['uri'] + '/internalVlans')
  internal_networks = []
  results.each do |vlan|
    net = if vlan['generalNetworkUri'].include? 'ethernet-network'
            OneviewSDK::EthernetNetwork.new(@client, uri: vlan['generalNetworkUri'])
          elsif vlan['generalNetworkUri'].include? 'fc-network'
            OneviewSDK::FCNetwork.new(@client, uri: vlan['generalNetworkUri'])
          else
            OneviewSDK::FCoENetwork.new(@client, uri: vlan['generalNetworkUri'])
          end
    net.retrieve!
    internal_networks.push(net)
  end
  internal_networks
end

#update_ethernet_settingsObject

Note:

The attribute is defined inside the instance of the Logical Interconnect

Updates ethernet settings of the logical interconnect

Raises:



98
99
100
101
102
103
104
105
106
107
108
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 98

def update_ethernet_settings
  ensure_client && ensure_uri
  raise IncompleteResource, 'Please retrieve the Logical Interconnect before trying to update' unless @data['ethernetSettings']
  update_options = {
    'If-Match' =>  @data['ethernetSettings'].delete('eTag'),
    'body' => @data['ethernetSettings']
  }
  response = @client.rest_put(@data['uri'] + '/ethernetSettings', update_options, @api_version)
  body = @client.response_handler(response)
  set_all(body)
end

#update_internal_networks(*networks) ⇒ Object

Updates internal networks on the logical interconnect



63
64
65
66
67
68
69
70
71
72
73
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 63

def update_internal_networks(*networks)
  uris = []
  return @client.response_handler(@client.rest_put(@data['uri'] + '/internalNetworks', 'body' => [])) unless networks
  networks.each do |net|
    net.retrieve! unless net['uri']
    uris.push(net['uri'])
  end
  response = @client.rest_put(@data['uri'] + '/internalNetworks', 'body' => uris)
  body = @client.response_handler(response)
  set_all(body)
end

#update_port_monitorObject

Note:

The attribute is defined inside the instance of the Logical Interconnect

Updates port monitor settings of the Logical Interconnect

Raises:



160
161
162
163
164
165
166
167
168
169
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 160

def update_port_monitor
  raise IncompleteResource, 'Please retrieve the Logical Interconnect before trying to update' unless @data['portMonitor']
  update_options = {
    'If-Match' =>  @data['portMonitor'].delete('eTag'),
    'body' => @data['portMonitor']
  }
  response = @client.rest_put("#{@data['uri']}/port-monitor", update_options, @api_version)
  body = @client.response_handler(response)
  set_all(body)
end

#update_qos_configurationObject

Note:

The attribute is defined inside the instance of the Logical Interconnect

Updates QoS aggregated configuration of the Logical Interconnect

Raises:



174
175
176
177
178
179
180
181
182
183
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 174

def update_qos_configuration
  raise IncompleteResource, 'Please retrieve the Logical Interconnect before trying to update' unless @data['qosConfiguration']
  update_options = {
    'If-Match' =>  @data['qosConfiguration'].delete('eTag'),
    'body' => @data['qosConfiguration']
  }
  response = @client.rest_put(@data['uri'] + '/qos-aggregated-configuration', update_options, @api_version)
  body = @client.response_handler(response)
  set_all(body)
end

#update_settings(options = {}) ⇒ Object

Updates settings of the logical interconnect



113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 113

def update_settings(options = {})
  ensure_client && ensure_uri
  options['type'] ||= 'InterconnectSettingsV3'
  options['ethernetSettings'] ||= {}
  options['ethernetSettings']['type'] ||= 'EthernetInterconnectSettingsV3'
  update_options = {
    'If-Match' =>  @data['eTag'],
    'body' => options
  }
  response = @client.rest_put(@data['uri'] + '/settings', update_options, @api_version)
  body = @client.response_handler(response)
  set_all(body)
end

#update_snmp_configurationObject

Note:

The attribute is defined inside the instance of the Logical Interconnect. Use helper methods to add the trap destination values: #add_snmp_trap_destination and #generate_trap_options

Updates snmp configuration of the Logical Interconnect

Raises:



203
204
205
206
207
208
209
210
211
212
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 203

def update_snmp_configuration
  raise IncompleteResource, 'Please retrieve the Logical Interconnect before trying to update' unless @data['snmpConfiguration']
  update_options = {
    'If-Match' =>  @data['snmpConfiguration'].delete('eTag'),
    'body' => @data['snmpConfiguration']
  }
  response = @client.rest_put(@data['uri'] + '/snmp-configuration', update_options, @api_version)
  body = @client.response_handler(response)
  set_all(body)
end

#update_telemetry_configurationObject

Note:

The attribute is defined inside the instance of the Logical Interconnect

Updates telemetry configuration of the Logical Interconnect

Raises:



188
189
190
191
192
193
194
195
196
197
# File 'lib/oneview-sdk/resource/api200/logical_interconnect.rb', line 188

def update_telemetry_configuration
  raise IncompleteResource, 'Please retrieve the Logical Interconnect before trying to update' unless @data['telemetryConfiguration']
  update_options = {
    'If-Match' =>  @data['telemetryConfiguration'].delete('eTag'),
    'body' => @data['telemetryConfiguration']
  }
  response = @client.rest_put(@data['telemetryConfiguration']['uri'], update_options, @api_version)
  body = @client.response_handler(response)
  set_all(body)
end