No commit activity in last 3 years
No release in over 3 years
Ruby library for Rancher Metadata API
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

~> 1.8
 Project Readme

Ruby library for Rancher Metadata API

This is a simple Ruby library that allows to interact with the Rancher Metadata REST API.

Pull requests to add additional API features (as documented at http://docs.rancher.com/rancher/metadata-service/) are very welcome. I only implemented what I needed.

Install

To install it simply issue the following command:

gem install rancher-metadata

Usage

require 'rancher-metadata'
api = RancherMetadata::API.new({:api_url => "http://rancher-metadata/2015-12-19"})

puts("Container create index: #{api.get_container_create_index}")
puts("Container service index: #{api.get_container_service_index}")
puts("Container ip: #{api.get_container_ip}")
puts("Container name: #{api.get_container_name}")
puts("Container service name: #{api.get_container_service_name}")
puts("Container hostname: #{api.get_container_hostname}")

api.wait_service_containers do |name, container|
  puts("Container #{name} is up (ip: #{container['primary_ip']}, create index: #{container['create_index']}, service index: #{container['service_index']})")
end

metadata = api.get_service_metadata
puts(metadata.inspect)

puts("Service scale size: #{api.get_service_scale_size}")

Look up all containers:

api.get_containers.each do |container|
  puts(container.inspect)
end

Look up all services:

api.get_services.each do |service|
  puts(service.inspect)
end

Look up all stacks:

api.get_stacks.each do |stack|:
  puts(stack.inspect)
end

Look up all hosts:

api.get_hosts.each do |host|:
  puts(host.inspect)
end

Look up current container:

puts(api.get_container.inspect)

Look up a container by name:

puts(api.get_container("my_container").inspect)

Look up a container's IP by name:

puts("A container IP #{api.get_container_ip("container_name")}")

Look up current service:

puts(api.get_service.inspect)

Look up a specific service running in the current stack:

puts(api.get_service({:service_name => 'my_service'}).inspect)

Look up a specific service running in another stack:

puts(api.get_service({:service_name => 'my_service', :stack_name => 'my_stack'}).inspect)

Look up the current service's containers

api.get_service_containers.each do |name, container|
  puts("Container #{name} (ip: #{container['primary_ip']}, create index: #{container['create_index']}, service index: #{container['service_index']})")
end

Look up a specific service's containers running in the current stack:

api.get_service_containers({:service_name => 'my_service'}).each do |name, container|
  puts("Container #{name} (ip: #{container['primary_ip']}, create index: #{container['create_index']}, service index: #{container['service_index']})")
end

Look up a specific service's containers running in an another stack:

api.get_service_containers({:service_name => 'my_service', :stack_name => 'my_stack'}).each do |name, container|
  puts("Container #{name} (ip: #{container['primary_ip']}, create index: #{container['create_index']}, service index: #{container['service_index']})")
end

Look up current stack:

puts(api.get_stack.inspect)

Look up a specific stack by name:

puts(api.get_stack("my_stack").inspect)

Look up services running in current stack:

api.get_stack_services.each do |service|
  puts(service.inspect)
end

Look up services running in another stack:

api.get_stack_services("my_stack").each do |service|
  puts(service.inspect)
end

Look up current host:

puts(api.get_host.inspect)

Look up a specific host by name:

puts(api.get_host("my_host").inspect)

Returns true if the container is running in Rancher-managed network:

if api.is_network_managed?
  puts("I am running in the managed network")
else
  puts("I am running in host-based networking")
end

Contact

Matteo Cerutti - matteo.cerutti@hotmail.co.uk