class Diplomat::Service

Public Class Methods

deregister(*args) click to toggle source

@note This is sugar, see (deregister)

# File lib/diplomat/service.rb, line 107
def self.deregister *args
  Diplomat::Service.new.deregister *args
end
deregister_node(*args) click to toggle source

@note This is sugar, see (deregister_node)

# File lib/diplomat/service.rb, line 112
def self.deregister_node *args
  Diplomat::Service.new.deregister_node *args
end
get(*args) click to toggle source

@note This is sugar, see (get)

# File lib/diplomat/service.rb, line 97
def self.get *args
  Diplomat::Service.new.get *args
end
register(*args) click to toggle source

@note This is sugar, see (register)

# File lib/diplomat/service.rb, line 102
def self.register *args
  Diplomat::Service.new.register *args
end

Public Instance Methods

deregister(name, tag='', datacenter='') click to toggle source

Deregister a service and all nodes associated with it @param datacenter [String] datacenter @param node [String] node identifying the service @return [Integer] Status code

# File lib/diplomat/service.rb, line 57
def deregister name, tag='', datacenter=''

  dc = datacenter != '' ? datacenter : Diplomat.configuration.datacenter
  tag_filter = "&tag=#{tag}" unless tag.empty?

  nodes = self.get("#{name}?dc=#{dc}#{tag_filter}",:all)
  nodes.each do |x|
    self.deregister_node(x.ServiceID, x.Node, datacenter )
  end

  return true
end
deregister_node(serviceid, node, datacenter='') click to toggle source

Deregister a given node for a service @param serviceid [String] service id to deregister @param datacenter [String] datacenter @param node [String] node identifying the service @return [Integer] Status code

# File lib/diplomat/service.rb, line 76
def deregister_node serviceid, node, datacenter=''

  dc = datacenter != '' ? datacenter : Diplomat.configuration.datacenter
  json = JSON.generate(
  {
    "Datacenter" => dc,
    "Node" => node,
    "ServiceId" => serviceid
  }
  )

  ret = @conn.put do |req|
    req.url "/v1/catalog/deregister"
    req.body = json
  end

  return true if ret.status == 200
end
get(key, scope=:first) click to toggle source

Get a service by it's key @param key [String] the key @param scope [Symbol] :first or :all results @return [OpenStruct] all data associated with the service

# File lib/diplomat/service.rb, line 11
def get key, scope=:first
  ret = @conn.get "/v1/catalog/service/#{key}"

  if scope == :all
    return JSON.parse(ret.body).map { |service| OpenStruct.new service }
  end
  return OpenStruct.new JSON.parse(ret.body).first
end
register(name, address, port, node, tags=[], datacenter='') click to toggle source

Register a service @param name [String] the name @param address [String] the address of the service @param port [Integer] port number associated with the service @param tags [Array] tags to be associated with the service @param datacenter [String] datacenter @param node [String] node identifying the service @return [Integer] Status code

# File lib/diplomat/service.rb, line 28
def register name, address, port, node, tags=[], datacenter=''

  dc = datacenter != '' ? datacenter : Diplomat.configuration.datacenter

  json = JSON.generate(
  {
    "Datacenter" => dc,
    "Address" => address,
    "Node" => node,
    "Service" => {
        "Service" => name,
        "Port" => port,
        "Tags" => tags
    }
  }
  )

  ret = @conn.put do |req|
    req.url "/v1/catalog/register"
    req.body = json
  end

  return true if ret.status == 200
end