Class: DockerBuilder::ServerSettings

Inherits:
Object
  • Object
show all
Defined in:
lib/docker_builder/server_settings.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#propertiesObject

Returns the value of attribute properties.



4
5
6
# File 'lib/docker_builder/server_settings.rb', line 4

def properties
  @properties
end

Instance Method Details

#[](key) ⇒ Object



298
299
300
# File 'lib/docker_builder/server_settings.rb', line 298

def [](key)
  properties[key]
end

#add(name, v) ⇒ Object



49
50
51
52
53
# File 'lib/docker_builder/server_settings.rb', line 49

def add(name, v)
  properties[name] = {} if properties[name].nil?

  properties[name].merge!(v)
end

#add_config(a) ⇒ Object



56
57
58
59
60
61
62
63
64
# File 'lib/docker_builder/server_settings.rb', line 56

def add_config(a)
  # merge
  build(a['build']) if a['build']
  provision(a['provision']) if a['provision']
  docker(a['docker']) if a['docker']
  attributes(a['attributes']) if a['attributes']


end

#all_attributesObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/docker_builder/server_settings.rb', line 16

def all_attributes
  res = properties.clone

  res['base'] = {
      'image_name'=> image_name,
      'container_name'=> container_name,

  }

  # docker
  res['docker']['ports'] = docker_ports
  res['docker']['volumes'] = docker_volumes
  res['docker']['links'] = docker_links

  res
end

#attributes(a) ⇒ Object



83
84
85
86
87
88
89
90
# File 'lib/docker_builder/server_settings.rb', line 83

def attributes(a)
  # merge
  properties['attributes'] ||= {}

  a.each do |k,v|
    properties['attributes'][k] = v
  end
end

#build(v) ⇒ Object



66
67
68
# File 'lib/docker_builder/server_settings.rb', line 66

def build(v)
  properties['build'] = v
end

#chef_node_nameObject



150
151
152
# File 'lib/docker_builder/server_settings.rb', line 150

def chef_node_name
  "#{prefix}#{name}"
end

#container_name(name = nil) ⇒ Object



143
144
145
146
147
148
# File 'lib/docker_builder/server_settings.rb', line 143

def container_name(name=nil)
  name ||= properties['name']
  s = name

  "#{container_prefix}#{s}"
end

#container_prefixObject



98
99
100
# File 'lib/docker_builder/server_settings.rb', line 98

def container_prefix
  "#{properties['common']['prefix']}#{properties['common']['container_prefix']}"
end

#dir_cookbooksObject



314
315
316
# File 'lib/docker_builder/server_settings.rb', line 314

def dir_cookbooks
  File.expand_path("servers/#{name}/cookbooks", Config.root_path)
end

#dir_dataObject



174
175
176
# File 'lib/docker_builder/server_settings.rb', line 174

def dir_data
  "#{properties['common']['dir_data']}#{self.name}/"
end

#dir_server_rootObject



318
319
320
# File 'lib/docker_builder/server_settings.rb', line 318

def dir_server_root
  File.expand_path("servers/#{name}", Config.root_path)
end

#docker(a) ⇒ Object



74
75
76
77
78
79
80
81
# File 'lib/docker_builder/server_settings.rb', line 74

def docker(a)
  # merge
  properties['docker'] ||= {}

  a.each do |k,v|
    properties['docker'][k] = v
  end
end


250
251
252
253
254
255
256
257
258
259
# File 'lib/docker_builder/server_settings.rb', line 250

def docker_links
  a = properties['docker']['links'] || []

  # fix
  res = a.map do |r|
    ["#{container_prefix}#{r[0]}", r[1]]
  end

  res
end


265
266
267
# File 'lib/docker_builder/server_settings.rb', line 265

def docker_links_array
  docker_links.map{|d| "#{d[0]}:#{d[1]}"}
end


261
262
263
# File 'lib/docker_builder/server_settings.rb', line 261

def docker_links_string
  docker_links.map{|r| "--link #{r[0]}:#{r[1]}"}.join(' ')
end

#docker_portsObject



236
237
238
239
# File 'lib/docker_builder/server_settings.rb', line 236

def docker_ports
  a = properties['docker']['ports'] || []
  a
end

#docker_ports_arrayObject



245
246
247
# File 'lib/docker_builder/server_settings.rb', line 245

def docker_ports_array
  docker_ports.map{|d| "#{d[0]}:#{d[1]}"}
end

#docker_ports_stringObject



241
242
243
# File 'lib/docker_builder/server_settings.rb', line 241

def docker_ports_string
  docker_ports.map{|r| "-p #{r[0]}:#{r[1]}"}.join(' ')
end

#docker_volumesObject



189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# File 'lib/docker_builder/server_settings.rb', line 189

def docker_volumes
  a = properties['docker']['volumes'] || []

  #puts "volumes a=#{a}"

  # fix paths
  res = a.map do |r|
    path_local = volume_path_local(r[0])

    [path_local, r[1]]
  end

  #puts "volumes: #{res}"

  res
end

#docker_volumes_arrayObject



210
211
212
# File 'lib/docker_builder/server_settings.rb', line 210

def docker_volumes_array
  docker_volumes.map{|d| "#{d[0]}:#{d[1]}"}
end

#docker_volumes_fromObject



216
217
218
219
220
221
222
223
224
225
# File 'lib/docker_builder/server_settings.rb', line 216

def docker_volumes_from
  a = properties['docker']['volumes_from'] || []

  # fix paths
  res = a.map do |r|
    "#{prefix}#{r}"
  end

  res
end

#docker_volumes_from_arrayObject



231
232
233
# File 'lib/docker_builder/server_settings.rb', line 231

def docker_volumes_from_array
  docker_volumes_from.map{|d| "#{d}"}
end

#docker_volumes_from_stringObject



227
228
229
# File 'lib/docker_builder/server_settings.rb', line 227

def docker_volumes_from_string
  docker_volumes_from.map{|d| "--volumes-from #{d}"}.join(' ')
end

#docker_volumes_stringObject



206
207
208
# File 'lib/docker_builder/server_settings.rb', line 206

def docker_volumes_string
  docker_volumes.map{|r| "-v #{r[0]}:#{r[1]}"}.join(' ')
end

#filename_chef_client_jsonObject



325
326
327
# File 'lib/docker_builder/server_settings.rb', line 325

def filename_chef_client_json
  File.expand_path("clients/#{image_name}.json", dir_server_root)
end

#filename_chef_configObject



304
305
306
307
308
# File 'lib/docker_builder/server_settings.rb', line 304

def filename_chef_config
  #File.join(File.dirname(__FILE__), '..', 'config' ,"config-#{name}.json")

  File.join(Config.root_path, 'temp', "#{name}.json")
end

#filename_chef_node_jsonObject



322
323
324
# File 'lib/docker_builder/server_settings.rb', line 322

def filename_chef_node_json
  File.expand_path("nodes/#{image_name}.json", dir_server_root)
end

#filename_config_jsonObject



310
311
312
# File 'lib/docker_builder/server_settings.rb', line 310

def filename_config_json
  File.join(Config.root_path, 'temp', "#{name}.json")
end

#get_bindingObject



6
7
8
# File 'lib/docker_builder/server_settings.rb', line 6

def get_binding
  return binding()
end

#image_nameObject



119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/docker_builder/server_settings.rb', line 119

def image_name
  if !need_build?
    bi = properties['build']['base_image']
    return "#{bi['name']}:#{bi['tag']}"
  end

  #
  s = properties['name']

  if properties['build']['image_name']
    s = "#{properties['build']['image_name']}"
  end

  "#{image_prefix}#{s}"
end

#image_prefixObject



102
103
104
# File 'lib/docker_builder/server_settings.rb', line 102

def image_prefix
  "#{properties['common']['prefix']}#{properties['common']['image_prefix']}"
end

#is_swarm_mode?Boolean



291
292
293
294
295
# File 'lib/docker_builder/server_settings.rb', line 291

def is_swarm_mode?
  v = properties["docker"]["swarm_mode"]
  return false if v.nil?
  return v
end

#make_path_full(path) ⇒ Object



331
332
333
# File 'lib/docker_builder/server_settings.rb', line 331

def make_path_full(path)
  File.expand_path("#{path}", dir_server_root)
end

#nameObject



113
114
115
# File 'lib/docker_builder/server_settings.rb', line 113

def name
  properties['name']
end

#need_build?Boolean



135
136
137
138
139
140
141
# File 'lib/docker_builder/server_settings.rb', line 135

def need_build?
  build_type = properties['build']['build_type']
  return false if build_type=='' || build_type=='none'


  true
end

#nodeObject



35
36
37
38
39
40
41
42
# File 'lib/docker_builder/server_settings.rb', line 35

def node
  res = properties['attributes'] || {}

  res['name'] = name
  res['container_name'] = container_name

  res
end

#prefixObject



94
95
96
# File 'lib/docker_builder/server_settings.rb', line 94

def prefix
  properties['common']['prefix']
end

#provision(v) ⇒ Object



70
71
72
# File 'lib/docker_builder/server_settings.rb', line 70

def provision(v)
  properties['provision'] = v
end

#run_env_variablesObject



271
272
273
274
275
# File 'lib/docker_builder/server_settings.rb', line 271

def run_env_variables
  a = properties['docker']['run_env'] || []

  a
end

#run_env_variables_stringObject



277
278
279
# File 'lib/docker_builder/server_settings.rb', line 277

def run_env_variables_string
  run_env_variables.map{|r| "-e #{r[0]}=#{r[1]}"}.join(' ')
end

#run_extra_options_stringObject



284
285
286
287
# File 'lib/docker_builder/server_settings.rb', line 284

def run_extra_options_string
  s = properties['docker']['run_extra_options'] || ''
  s
end

#service_name(name = nil) ⇒ Object

docker swarm services



181
182
183
184
185
186
# File 'lib/docker_builder/server_settings.rb', line 181

def service_name(name=nil)
  name ||= properties['name']
  s = name

  "#{service_prefix}#{s}"
end

#service_prefixObject



106
107
108
# File 'lib/docker_builder/server_settings.rb', line 106

def service_prefix
  "#{properties['common']['prefix']}#{properties['common']['service_prefix']}"
end

#set(name, v) ⇒ Object

DSL



45
46
47
# File 'lib/docker_builder/server_settings.rb', line 45

def set(name, v)
  properties[name] = v
end

#volume_path_local(v) ⇒ Object



154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# File 'lib/docker_builder/server_settings.rb', line 154

def volume_path_local(v)
  res = v.to_s

  if v =~ /^\./
    s = v.gsub /^\.\//, ''

    #res = "$PWD/servers/#{self.name}/#{s}"
    res = File.expand_path(s, dir_server_root)

  elsif v =~ /^\/\//
    res = self.properties['common']['dir_data']+(v.gsub /^\/\//, '')
  elsif v =~ /^\//
    res = v
  else
    res = self.dir_data+v
  end

  res
end