class Seiso::Connector

Seiso connector.

Author

Willie Wheeler

Copyright

Copyright © 2014-2015 Expedia, Inc.

License

Apache 2.0

Public Class Methods

new(settings) click to toggle source
  • settings: a hash containing the following entries:

    • host

    • port

    • use_ssl (default false)

    • ignore_cert (default false)

    • username

    • password

# File lib/seiso/connector.rb, line 26
def initialize(settings)
  host = settings['host']
  port = settings['port']
  use_ssl = settings['use_ssl'] || false
  ignore_cert = settings['ignore_cert'] || false
  username = settings['username']
  password = settings['password']
  
  http = create_http(host, port, use_ssl, ignore_cert)
  
  @connector_v1 = Seiso::Connector::ConnectorV1.new(http, username, password)
end

Public Instance Methods

connector_v1() click to toggle source

Tests can override this

# File lib/seiso/connector.rb, line 40
def connector_v1
  @connector_v1
end
get_items(type) click to toggle source

GET item list

# File lib/seiso/connector.rb, line 45
def get_items(type)
  connector_v1.do_get("/v1/#{type}")
end
post_items(type, items) click to toggle source

POST items to Seiso

# File lib/seiso/connector.rb, line 58
def post_items(type, items)
  if type == 'ip-address-roles'
    do_put_ip_address_roles items
  elsif type == 'node-ip-addresses'
    do_put_node_ip_addresses items
  elsif type == 'service-instance-ports'
    do_put_service_instance_ports items
  else
    connector_v1.do_post("/v1/#{type}?mode=batch", items)
  end
end
put_item(type, item, key) click to toggle source

PUT a single item to Seiso.

  • type: Item type

  • item: Item

  • key: Item key

# File lib/seiso/connector.rb, line 74
def put_item(type, item, key)
  connector_v1.do_put("/v1/#{type}/#{key}", item)
end

Private Instance Methods

create_http(host, port, use_ssl, ignore_cert) click to toggle source

Create HTTP connector

  • host: Seiso host

  • port: Seiso port

  • use_ssl: Use HTTPS?

  • ignore_cert: Ignore bad certs?

# File lib/seiso/connector.rb, line 85
def create_http(host, port, use_ssl, ignore_cert)
  http = Net::HTTP.new(host, port)
  if use_ssl
    puts "Using SSL"
    http.use_ssl = true
    if ignore_cert
      puts "Ignoring SSL certificates"
      http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    end
  end
  http
end
do_put_ip_address_roles(roles) click to toggle source

PUTs a list of IP address roles

  • roles: IP address roles

# File lib/seiso/connector.rb, line 100
def do_put_ip_address_roles(roles)
  # TODO Implement batch endpoint
  roles.each do |r|
    si_key = r['serviceInstance']['key']
    name = r['name']
    connector_v1.do_put("/v1/service-instances/#{si_key}/ip-address-roles/#{name}", r)
  end
end
do_put_node_ip_addresses(nips) click to toggle source

PUTs a list of node IP addresses

  • nips: Node IP addresses

# File lib/seiso/connector.rb, line 111
def do_put_node_ip_addresses(nips)
  # TODO Implement batch endpoint
  nips.each do |nip|
    node_name = nip['node']['name']
    ip_address = nip['ipAddress']
    connector_v1.do_put("/v1/nodes/#{node_name}/ip-addresses/#{ip_address}", nip)
  end
end
do_put_service_instance_ports(ports) click to toggle source

PUTs a list of service instance ports

  • ports: Service instance ports

# File lib/seiso/connector.rb, line 122
def do_put_service_instance_ports(ports)
  # TODO Implement batch endpoint
  ports.each do |p|
    si_key = p['serviceInstance']['key']
    number = p['number']
    connector_v1.do_put("/v1/service-instances/#{si_key}/ports/#{number}", p)
  end
end