module PortAuthority::Mechanism::Cron
Attributes
_container[R]
_container_def[R]
_image[R]
Public Instance Methods
container()
click to toggle source
# File lib/port-authority/mechanism/cron.rb, line 17 def container @_container ||= Docker::Container.get(Config.cron[:name]) rescue nil end
create!()
click to toggle source
# File lib/port-authority/mechanism/cron.rb, line 29 def create! @_container_def = { 'Image' => self.image.json['Id'], 'name' => Config.cron[:name], 'Hostname' => Config.cron[:name], 'Env' => [ "ETCDCTL_ENDPOINT=#{Config.etcd[:endpoints].join(',')}","#{Config.cron[:env]}" ], 'RestartPolicy' => { 'Name' => 'never' }, 'HostConfig' => { 'Binds' => [ "#{Config.cron[:folder]}" ], 'NetworkMode' => Config.cron[:network] } } if Config.cron[:log_dest] != '' @_container_def['HostConfig']['LogConfig'] = { 'Type' => 'gelf', 'Config' => { 'gelf-address' => Config.cron[:log_dest], 'tag' => Socket.gethostbyname(Socket.gethostname).first + '/{{.Name}}/{{.ID}}' } } end @_container = Docker::Container.create(@_container_def) end
image()
click to toggle source
# File lib/port-authority/mechanism/cron.rb, line 21 def image @_image ||= Docker::Image.create('fromImage' => Config.cron[:image]) end
init!()
click to toggle source
# File lib/port-authority/mechanism/cron.rb, line 11 def init! Docker.url = Config.cron[:docker_endpoint] Docker.options = { connect_timeout: Config.cron[:docker_timeout] || 10 } self.container || ( self.pull! && self.create! ) end
pull!()
click to toggle source
# File lib/port-authority/mechanism/cron.rb, line 25 def pull! @_image = Docker::Image.create('fromImage' => Config.cron[:image]) end
remove!()
click to toggle source
# File lib/port-authority/mechanism/cron.rb, line 68 def remove! @_container.delete end
start!()
click to toggle source
# File lib/port-authority/mechanism/cron.rb, line 76 def start! @_container.start end
stop!()
click to toggle source
# File lib/port-authority/mechanism/cron.rb, line 80 def stop! @_container.stop end
up?()
click to toggle source
# File lib/port-authority/mechanism/cron.rb, line 72 def up? @_container.json['State']['Running'] end
update!()
click to toggle source
# File lib/port-authority/mechanism/cron.rb, line 54 def update! begin ( self.stop! && start = true ) if self.up? self.remove! self.pull! self.create! self.start! if start == true rescue StandardError => e Logger.error "UNCAUGHT EXCEPTION IN THREAD #{Thread.current[:name]}" Logger.error [' ', e.class, e.message].join(' ') Logger.error ' ' + e.backtrace.to_s end end