takelage 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36222b3d12d53faad7c7c4813283a8aebce977dab41bacd4a53bb43821567ad8
4
- data.tar.gz: 92e81da7d19014f82535f46a53c66001b425cdebbde5911fcad07f1a46487707
3
+ metadata.gz: 2fd909364c4dbb82c0c9e8ac1ba6ccfed67e51fe56794b7a6aa36af3ea86e6f2
4
+ data.tar.gz: b5343bcba1852c0d56ce454c5ff8ed6172220747087b13a0b24cd8c4748761aa
5
5
  SHA512:
6
- metadata.gz: 6e751053eefb7223c0e67d6c86f0b06a2fde03773d8f86c8decc05f56c5a357d254d75d38f6da6fc4b07f6be993dd445ee7a7746c86bb09bb384f77a5d96fecb
7
- data.tar.gz: 2564bc2522442ce5ff148a3a11b8b6d805d3fa9dcc74b15f11116c1fa0797721f8976c625c793aab92a47bc08bbe404067757c80c99b2532be349e56579f5428
6
+ metadata.gz: 1565a6d13da908d8fae2f10bcd0e45264945559c32483d90952940a1225fd5c3643579a8f20e9ab3c6d9e0a4e10d2618c0d0e01a027049e8ffcf25b53c19667b
7
+ data.tar.gz: d395c04730066c07d2b288913b0353538305e03d5cda5717414f5475357a2b19a7e0286f5f85f3548d69d9ae1ee6d208d85ab63d1de2677643566594a5e782fc
data/README.md CHANGED
@@ -16,8 +16,8 @@ The takelage devops framework consists of these projects:
16
16
 
17
17
  | App | Description |
18
18
  | --- | ----------- |
19
- | *[takelage-cli](https://github.com/geospin-takelage/takelage-cli)* | takelage command line interface |
20
19
  | *[takelage-dev](https://github.com/geospin-takelage/takelage-dev)* | takelage development environment |
20
+ | *[takelage-cli](https://github.com/geospin-takelage/takelage-cli)* | takelage command line interface |
21
21
  | *[takelage-bit](https://github.com/geospin-takelage/takelage-bit)* | takelage [bit](https://github.com/teambit/bit) server |
22
22
 
23
23
  ## Installation
@@ -9,6 +9,7 @@ module DockerContainerModule
9
9
 
10
10
  docker_socket_start
11
11
 
12
+ _create_network @hostname unless _network_check_existing @hostname
12
13
  _create_container @hostname unless docker_container_check_existing @hostname
13
14
  _run_command_in_container @hostname, command
14
15
  end
@@ -19,6 +20,7 @@ module DockerContainerModule
19
20
 
20
21
  exit false unless configured? %w(docker_repo docker_image docker_tag)
21
22
 
23
+ _create_network @hostname unless _network_check_existing @hostname
22
24
  _create_container @hostname unless docker_container_check_existing @hostname
23
25
  end
24
26
 
@@ -30,6 +32,7 @@ module DockerContainerModule
30
32
 
31
33
  docker_socket_start
32
34
 
35
+ _create_network @hostname unless _network_check_existing @hostname
33
36
  _create_container @hostname unless docker_container_check_existing @hostname
34
37
  _enter_container @hostname
35
38
  end
@@ -40,8 +43,16 @@ module DockerContainerModule
40
43
 
41
44
  exit false unless configured? %w(docker_image)
42
45
 
46
+ networks = []
47
+
43
48
  _get_containers.each do |container|
49
+ name = _get_container_name_by_id container
44
50
  _stop_container container
51
+ networks << name unless networks.include? name
52
+ end
53
+
54
+ networks.each do |network|
55
+ _remove_network network if _network_check_existing network
45
56
  end
46
57
  end
47
58
 
@@ -51,8 +62,18 @@ module DockerContainerModule
51
62
 
52
63
  exit false unless configured? %w(docker_image)
53
64
 
65
+ networks = []
66
+
54
67
  _get_containers.each do |container|
55
- _stop_container container if docker_container_check_orphaned container
68
+ if docker_container_check_orphaned container
69
+ name = _get_container_name_by_id container
70
+ _stop_container container
71
+ networks << name unless networks.include? name
72
+ end
73
+ end
74
+
75
+ networks.each do |network|
76
+ _remove_network network if _network_check_existing network
56
77
  end
57
78
  end
58
79
 
@@ -90,6 +111,7 @@ module DockerContainerModule
90
111
  "--env TZ=#{@timezone} " +
91
112
  "--hostname #{container} " +
92
113
  "--name #{container} " +
114
+ "--network #{container} " +
93
115
  '--privileged ' +
94
116
  '--rm ' +
95
117
  '--tty ' +
@@ -110,6 +132,16 @@ module DockerContainerModule
110
132
  run cmd_docker_create
111
133
  end
112
134
 
135
+ # Create docker network.
136
+ def _create_network(network)
137
+ log.debug "Create network \"#{network}\""
138
+
139
+ cmd_create_network = 'docker network create ' +
140
+ "#{network}"
141
+
142
+ run cmd_create_network
143
+ end
144
+
113
145
  # Enter existing docker container.
114
146
  def _enter_container(container)
115
147
  log.debug "Entering container \"#{container}\""
@@ -129,6 +161,19 @@ module DockerContainerModule
129
161
  run_and_exit cmd_docker_enter
130
162
  end
131
163
 
164
+ # Get container name by id.
165
+ def _get_container_name_by_id container
166
+ log.debug "Getting name of container #{container}"
167
+
168
+ cmd_get_container_name_by_id = 'docker ps ' +
169
+ "--filter id=#{container} "+
170
+ '--format "{{.Names}}"'
171
+
172
+ stdout_str, stderr_str, status = run_and_check cmd_get_container_name_by_id
173
+
174
+ stdout_str.chomp
175
+ end
176
+
132
177
  # Get all docker containers.
133
178
  # @return [Array] list of docker containers
134
179
  def _get_containers
@@ -145,14 +190,33 @@ module DockerContainerModule
145
190
  stdout_str.split(/\n+/)
146
191
  end
147
192
 
148
- # Remove container.
149
- def _stop_container(container)
150
- log.debug "Stopping container \"#{container}\""
193
+ # Check if docker network exists.
194
+ def _network_check_existing(network)
195
+ log.debug "Checking if network \"#{network}\" is existing"
151
196
 
152
- cmd_docker_stop = 'docker stop ' +
153
- "#{container}"
197
+ cmd_docker_network_exist = 'docker network ls ' +
198
+ '--quiet ' +
199
+ "--filter name=#{network}"
154
200
 
155
- run cmd_docker_stop
201
+ stdout_str, stderr_str, status = run_and_check cmd_docker_network_exist
202
+
203
+ if stdout_str.to_s.strip.empty?
204
+ log.debug "Network \"#{network}\" is not existing"
205
+ return false
206
+ end
207
+
208
+ log.debug "Network \"#{network}\" is existing"
209
+ true
210
+ end
211
+
212
+ # Remove docker network.
213
+ def _remove_network network
214
+ log.debug "Remove network \"#{network}\""
215
+
216
+ cmd_remove_network = 'docker network rm ' +
217
+ "#{network}"
218
+
219
+ run cmd_remove_network
156
220
  end
157
221
 
158
222
  # Enter existing docker container.
@@ -166,4 +230,14 @@ module DockerContainerModule
166
230
 
167
231
  run_and_exit cmd_docker_run_command
168
232
  end
233
+
234
+ # Stop container.
235
+ def _stop_container(container)
236
+ log.debug "Stopping container \"#{container}\""
237
+
238
+ cmd_docker_stop = 'docker stop ' +
239
+ "#{container}"
240
+
241
+ run cmd_docker_stop
242
+ end
169
243
  end
@@ -9,7 +9,7 @@ module SystemModule
9
9
  # Run a command and return the result.
10
10
  # @return [Boolean] success of command run
11
11
  def run_and_check(command)
12
- log.debug "Running command '#{command}'"
12
+ log.debug "Running command \"#{command}\""
13
13
  stdout_str, stderr_str, status = Open3.capture3 command
14
14
  return stdout_str, stderr_str, status
15
15
  end
@@ -65,7 +65,7 @@ module SystemModule
65
65
  # Run a command.
66
66
  # @return [String] stdout of command
67
67
  def run(command, realtime=false)
68
- log.debug "Running command '#{command}'"
68
+ log.debug "Running command \"#{command}\""
69
69
  stdout_str = ''
70
70
  stderr_str = ''
71
71
  status = ''
@@ -91,13 +91,13 @@ module SystemModule
91
91
 
92
92
  # Use Kernel#exec to replace the ruby process with a command.
93
93
  def run_and_exit(command)
94
- log.debug "Running command '#{command}' and exiting afterwards"
94
+ log.debug "Running command \"#{command}\" and exiting afterwards"
95
95
  exec command
96
96
  end
97
97
 
98
98
  # Use Kernel#fork and Kernel#exec to run a command as a background process.
99
99
  def run_and_fork(command)
100
- log.debug "Running command '#{command}' as a background process"
100
+ log.debug "Running command \"#{command}\" as a background process"
101
101
  job = fork do
102
102
  exec command
103
103
  end
data/lib/takelage/version CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.3.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: takelage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geospin