class OneviewSDK::API200::LogicalSwitch

Logical switch resource implementation

Constants

BASE_URI
CredentialsSNMPV1
CredentialsSNMPV3
CredentialsSSH

@!group Credentials

Attributes

logical_switch_credentials[RW]

Public Class Methods

new(client, params = {}, api_ver = nil) click to toggle source

Create a resource object, associate it with a client, and set its properties. @param [OneviewSDK::Client] client The client object for the OneView appliance @param [Hash] params The options for this resource (key-value pairs) @param [Integer] api_ver The api version to use when interracting with this resource.

Calls superclass method OneviewSDK::Resource::new
# File lib/oneview-sdk/resource/api200/logical_switch.rb, line 26
def initialize(client, params = {}, api_ver = nil)
  super
  # Default values
  @data['type'] ||= 'logical-switch'
  @logical_switch_credentials = {}
end

Public Instance Methods

create(header = {}) click to toggle source

Create method @param [Hash] header The header options for the request (key-value pairs) @raise [OneviewSDK::IncompleteResource] if the client is not set @raise [StandardError] if the resource creation fails @return [OneviewSDK::LogicalSwitch] self

# File lib/oneview-sdk/resource/api200/logical_switch.rb, line 38
def create(header = {})
  ensure_client
  request_body = {}
  request_body['logicalSwitchCredentials'] = generate_logical_switch_credentials
  request_body['logicalSwitch'] = @data.clone
  request_body['logicalSwitch']['switchCredentialConfiguration'] = generate_logical_switch_credential_configuration
  options = DEFAULT_REQUEST_HEADER.merge(header).merge('body' => request_body)
  response = @client.rest_post(self.class::BASE_URI, options, @api_version)
  body = @client.response_handler(response)
  set_all(body)
  self
end
refresh_state() click to toggle source

Reclaims the top-of-rack switches in a logical switch.

# File lib/oneview-sdk/resource/api200/logical_switch.rb, line 52
def refresh_state
  response = @client.rest_put(@data['uri'] + '/refresh')
  @client.response_handler(response)
end
set_logical_switch_group(logical_switch_group) click to toggle source

Sets the logical switch group @param [OneviewSDK::logicalSwitchGroup] logical_switch_group Logical switch group

# File lib/oneview-sdk/resource/api200/logical_switch.rb, line 94
def set_logical_switch_group(logical_switch_group)
  @data['logicalSwitchGroupUri'] = logical_switch_group['uri']
end
set_switch_credentials(host, ssh_credentials, snmp_credentials) click to toggle source

Sets switch credentials @param [String] host IP address or host name @param [CredentialsSSH] ssh_credentials SSH credentials @param [CredentialsSNMP] snmp_credentials SNMP credentials @return [Array] An Array containing the SSH and SNMP credentials

# File lib/oneview-sdk/resource/api200/logical_switch.rb, line 80
def set_switch_credentials(host, ssh_credentials, snmp_credentials)
  raise TypeError, 'Use struct<OneviewSDK::LogicalSwitch::CredentialsSSH>' if ssh_credentials.class != OneviewSDK::LogicalSwitch::CredentialsSSH
  raise TypeError, 'Use struct<OneviewSDK::LogicalSwitch::CredentialsSNMP>' unless snmp_credentials.respond_to?('version')
  raise TypeError, 'Use struct<OneviewSDK::LogicalSwitch::CredentialsSNMP>' if snmp_credentials.version != 'SNMPv1' &&
    snmp_credentials.version != 'SNMPv3'
  @logical_switch_credentials[host] = [ssh_credentials.clone, snmp_credentials.clone]
  @logical_switch_credentials[host]
end

Private Instance Methods

generate_logical_switch_credential_configuration() click to toggle source

Generates the logical switch credential configuration for POST and PUT requests @return [Array] List of logical switch credential configuration for each switch

# File lib/oneview-sdk/resource/api200/logical_switch.rb, line 152
def generate_logical_switch_credential_configuration
  configuration = []
  @logical_switch_credentials.each do |host, switch|
    switch_configuration = {
      'snmpPort' => switch[1].port,
      'snmpV3Configuration' => nil,
      'snmpV1Configuration' => nil,
      'logicalSwitchManagementHost' => host,
      'snmpVersion' => switch[1].version
    }

    if switch[1].version == 'SNMPv3'
      switch_configuration['snmpV1Configuration'] = nil
      switch_configuration['snmpV3Configuration'] = {
        'authorizationProtocol' => switch[1].auth_protocol
      }

      if switch[1].privacy_protocol
        switch_configuration['snmpV3Configuration']['securityLevel'] = 'AuthPrivacy'
        switch_configuration['snmpV3Configuration']['privacyProtocol'] = switch[1].privacy_protocol
      else
        switch_configuration['snmpV3Configuration']['securityLevel'] = 'Auth'
      end

    elsif switch[1].version == 'SNMPv1'
      switch_configuration['snmpV3Configuration'] = nil
      switch_configuration['snmpV1Configuration'] = {
        'communityString' => switch[1].community_string
      }
    end
    configuration << switch_configuration
  end
  configuration
end
generate_logical_switch_credentials() click to toggle source

Generates the logical switch credentials for POST and PUT requests @return [Array] List of connection properties for each logical switch

# File lib/oneview-sdk/resource/api200/logical_switch.rb, line 102
def generate_logical_switch_credentials
  credentials = []
  @logical_switch_credentials.each_value do |switch|
    switch_credentials = []
    switch_credentials << {
      'valueFormat' => 'Unknown',
      'propertyName' => 'SshBasicAuthCredentialUser',
      'valueType' => 'String',
      'value' => switch[0].user
    }

    switch_credentials << {
      'valueFormat' => 'SecuritySensitive',
      'propertyName' => 'SshBasicAuthCredentialPassword',
      'valueType' => 'String',
      'value' => switch[0].password
    }

    if switch[1].version == 'SNMPv3'
      switch_credentials << {
        'valueFormat' => 'SecuritySensitive',
        'propertyName' => 'SnmpV3AuthorizationPassword',
        'valueType' => 'String',
        'value' => switch[1].auth_password
      }

      switch_credentials << {
        'valueFormat' => 'Unknown',
        'propertyName' => 'SnmpV3User',
        'valueType' => 'String',
        'value' => switch[1].user
      }

      if switch[1].privacy_password
        switch_credentials << {
          'valueFormat' => 'SecuritySensitive',
          'propertyName' => 'SnmpV3PrivacyPassword',
          'valueType' => 'String',
          'value' => switch[1].privacy_password
        }
      end
    end

    credentials << { 'connectionProperties' => switch_credentials }
  end
  credentials
end