class Diplomat::Service
Public Class Methods
@note This is sugar, see (deregister
)
# File lib/diplomat/service.rb, line 107 def self.deregister *args Diplomat::Service.new.deregister *args end
@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
@note This is sugar, see (get
)
# File lib/diplomat/service.rb, line 97 def self.get *args Diplomat::Service.new.get *args end
@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 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 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 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 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