Class: TasteTester::Server
  
  
  
  
  
    - Inherits:
- 
      Object
      
        
          - Object
- TasteTester::Server
 show all
      - Extended by:
- BetweenMeals::Util
      - Includes:
- Config, Logging
    - Defined in:
- lib/taste_tester/server.rb
 
Overview
  
    
Stateless chef-zero server management
   
 
  
  Instance Attribute Summary collapse
  
  
    
      Class Method Summary
      collapse
    
    
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  
  Methods included from Logging
  #formatter, formatterproc=, logger, #logger, use_log_formatter=, verbosity=
  
  
  
  
  
  
  
  
  Methods included from Config
  absolute_base_dir, chef_port, cookbooks, databags, relative_cookbook_dirs, relative_databag_dir, relative_role_dir, roles, testing_end_time
  
  
  Constructor Details
  
    
  
  
    #initialize  ⇒ Server 
  
  
  
  
    
Returns a new instance of Server.
   
 
  
  
    | 
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 | # File 'lib/taste_tester/server.rb', line 34
def initialize
  @state = TasteTester::State.new
  @ref_file = TasteTester::Config.ref_file
  ref_dir = File.dirname(File.expand_path(@ref_file))
  @log_file = File.join(ref_dir, 'chef-zero.log')
  @fsroot = File.join(ref_dir, 'root')
  @zero_path = TasteTester::Config.chef_zero_path
  unless File.directory?(ref_dir)
    begin
      FileUtils.mkpath(ref_dir)
    rescue StandardError => e
      logger.warn("Chef temp dir #{ref_dir} missing and can't be created")
      logger.warn(e)
    end
  end
  if TasteTester::Config.bundle
    @bundle_dir = File.join(@fsroot, 'organizations/chef/file_store')
    FileUtils.mkpath(@bundle_dir)
  end
  @user = ENV['USER']
      @need_restart = @state.ssl != TasteTester::Config.use_ssl ||
                  @state.logging != TasteTester::Config.chef_zero_logging ||
                  @state.ssh != TasteTester::Config.use_ssh_tunnels ||
                  @state.bundle != TasteTester::Config.bundle
        if TasteTester::Config.use_ssh_tunnels
    @addrs = ['127.0.0.1']
    @host = 'localhost'
  else
    @addrs = ['::', '0.0.0.0']
    begin
      @host = TasteTester::Config.my_hostname || Socket.gethostname
    rescue StandardError
      logger.error('Unable to find fqdn')
      exit 1
    end
  end
end | 
 
  
 
  
    Instance Attribute Details
    
      
      
      
  
  
    #bundle_dir  ⇒ Object 
  
  
  
  
    
Returns the value of attribute bundle_dir.
   
 
  
  
    | 
32
33
34 | # File 'lib/taste_tester/server.rb', line 32
def bundle_dir
  @bundle_dir
end | 
 
    
      
      
      
  
  
    #host  ⇒ Object 
  
  
  
  
    
Returns the value of attribute host.
   
 
  
  
    | 
32
33
34 | # File 'lib/taste_tester/server.rb', line 32
def host
  @host
end | 
 
    
      
      
      
  
  
    #user  ⇒ Object 
  
  
  
  
    
Returns the value of attribute user.
   
 
  
  
    | 
32
33
34 | # File 'lib/taste_tester/server.rb', line 32
def user
  @user
end | 
 
    
   
  
  
    Instance Method Details
    
      
  
  
    #last_upload_time  ⇒ Object 
  
  
  
  
    | 
129
130
131 | # File 'lib/taste_tester/server.rb', line 129
def last_upload_time
  @state.last_upload_time
end | 
 
    
      
  
  
    #last_upload_time=(time)  ⇒ Object 
  
  
  
  
    | 
133
134
135 | # File 'lib/taste_tester/server.rb', line 133
def last_upload_time=(time)
  @state.last_upload_time = time
end | 
 
    
      
  
  
    #latest_uploaded_ref  ⇒ Object 
  
  
  
  
    | 
121
122
123 | # File 'lib/taste_tester/server.rb', line 121
def latest_uploaded_ref
  @state.ref
end | 
 
    
      
  
  
    #latest_uploaded_ref=(ref)  ⇒ Object 
  
  
  
  
    | 
125
126
127 | # File 'lib/taste_tester/server.rb', line 125
def latest_uploaded_ref=(ref)
  @state.ref = ref
end | 
 
    
      
  
  
    #port  ⇒ Object 
  
  
  
  
    | 
113
114
115 | # File 'lib/taste_tester/server.rb', line 113
def port
  @state.port
end | 
 
    
      
  
  
    #port=(port)  ⇒ Object 
  
  
  
  
    | 
117
118
119 | # File 'lib/taste_tester/server.rb', line 117
def port=(port)
  @state.port = port
end | 
 
    
      
  
  
    #restart  ⇒ Object 
  
  
  
  
    | 
103
104
105
106
107
108
109
110
111 | # File 'lib/taste_tester/server.rb', line 103
def restart
  logger.warn('Restarting taste-tester server')
  if TasteTester::Server.running?
    stop_chef_zero
    @state.ref = nil
  end
  write_config
  start_chef_zero
end | 
 
    
      
  
  
    #start  ⇒ Object 
  
  
  
  
    | 
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 | # File 'lib/taste_tester/server.rb', line 80
def start
  if TasteTester::Server.running?
    if @need_restart
      logger.warn('Restarting taste-tester server for config change')
      stop_chef_zero
      @need_restart = false
    else
      return
    end
  else
    logger.warn('Starting taste-tester server')
  end
  @state.wipe
  write_config
  start_chef_zero
end | 
 
    
      
  
  
    #stop  ⇒ Object 
  
  
  
  
    | 
97
98
99
100
101 | # File 'lib/taste_tester/server.rb', line 97
def stop
  logger.warn('Stopping taste-tester server')
  @state.wipe
  stop_chef_zero
end |