Class: VagrantPlugins::Ventriloquist::Service

Inherits:
Object
  • Object
show all
Defined in:
lib/ventriloquist/service.rb

Constant Summary collapse

CONTAINER_IDS_PATH =
'/var/lib/ventriloquist/cids'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, config, docker_client) ⇒ Service

Returns a new instance of Service.



8
9
10
# File 'lib/ventriloquist/service.rb', line 8

def initialize(name, config, docker_client)
  @name, @config, @docker_client = name, config, docker_client
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



6
7
8
# File 'lib/ventriloquist/service.rb', line 6

def config
  @config
end

#docker_clientObject (readonly)

Returns the value of attribute docker_client.



6
7
8
# File 'lib/ventriloquist/service.rb', line 6

def docker_client
  @docker_client
end

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/ventriloquist/service.rb', line 6

def name
  @name
end

Instance Method Details

#provision(machine) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/ventriloquist/service.rb', line 12

def provision(machine)
  cidfile = "#{CONTAINER_IDS_PATH}/#{@name}"

  if @docker_client.container_running?("$(cat #{cidfile})")
    machine.env.ui.info("Service '#{@name}' already running")
  else
    machine.env.ui.info("Starting '#{@name}' service")
    machine.communicate.sudo("mkdir -p #{CONTAINER_IDS_PATH}")
    @config[:cidfile]          = cidfile
    @config[:daemonize]        = true
    @config[:name]             = @name
    @config[:auto_assign_name] = true
    @docker_client.run_container(@config)
  end
end