swarm_cluster_cli_ope 0.7.2.1 → 0.8.1

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: 2b1b531caf2e5ae14fa47befec029b67c8c5b414bdf9d7378597a69254a7fcd6
4
- data.tar.gz: 6b0903a0694ce1601a604c1efc0ab5cbb80d496c2758c257935dd4386fd125e3
3
+ metadata.gz: 3b8ca6327409b45e532d4d3c2cce4dbde5bf8819fe909bafeb4690331391c233
4
+ data.tar.gz: 95cfc42f92f208e3c22febe63994cbec6a9af896131f967a2a97c9836ac4c677
5
5
  SHA512:
6
- metadata.gz: 477f99d4021367e7200fe425dd00887faaefa2fe708f73c3ce175996410917daee50e38a1209cf5f80186cc97c9f0ac16d45a9531da9b6e2ce039752b3df647b
7
- data.tar.gz: 86caa366eba35e60fcda660f1f2fd55ffe81bd357e2d9f1df8bd52ecc95ae4a845cb56ec357c51711a02473432fa9e79b72458f0e51359048c1831f6e54825d8
6
+ metadata.gz: c7c3c7904a3862d17359b57c052d54caee5eb109894f11685938175966211a389d8bf58ce557e02f9ddcb2af9dacd7d6f89e8addb1d46697a4bd0687a1e54b01
7
+ data.tar.gz: 340d0256ea1b3d1b396a316df8ae072914d4fda3a906efa67b138e4795370e1361dec2d2fc51aec97fd92881e37c338399c1701087a4d746570eefd0f03cb044
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.5.3
1
+ ruby-2.7.4
data/Dockerfile ADDED
@@ -0,0 +1,39 @@
1
+ # syntax = docker/dockerfile:1.4
2
+
3
+ #imagine per fare la build della gemma
4
+ FROM ruby:2.7 as building
5
+
6
+ RUN mkdir /builder
7
+ WORKDIR /builder
8
+ COPY . .
9
+ RUN gem build swarm_cluster_cli_ope.gemspec -o swarm_cluster_cli_ope.gem
10
+
11
+
12
+ FROM ruby:2.7
13
+ LABEL authors="Marino Bonetti"
14
+
15
+ RUN apt update && apt install -y docker
16
+
17
+ RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && \
18
+ install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
19
+
20
+ RUN wget https://github.com/digitalocean/doctl/releases/download/v1.94.0/doctl-1.94.0-linux-amd64.tar.gz && \
21
+ tar xf doctl-1.94.0-linux-amd64.tar.gz && \
22
+ mv doctl /usr/local/bin
23
+
24
+ RUN mkdir -p /home/nobody && chmod 777 /home/nobody
25
+ ENV HOME="/home/nobody"
26
+ ENV USER=nobody
27
+
28
+ #COPY --from=building /builder/swarm_cluster_cli_ope.gem .
29
+ #RUN gem install --user-install ./swarm_cluster_cli_ope.gem # swarm_cluster_cli_ope
30
+ RUN mkdir /builder && cd /builder
31
+ COPY . .
32
+ RUN bundle install && bundle exec rake install
33
+ RUN chmod -R ugo+rwt /usr/local/bundle
34
+
35
+
36
+ # qua andremo a montare la $PWD
37
+ WORKDIR /application
38
+
39
+ #ENTRYPOINT ["swarm_cli_ope"]
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- swarm_cluster_cli_ope (0.7.2.1)
4
+ swarm_cluster_cli_ope (0.8.1)
5
5
  activesupport (< 7)
6
6
  open4
7
7
  thor (~> 1.0)
@@ -10,22 +10,22 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- activesupport (6.1.6)
13
+ activesupport (6.1.7)
14
14
  concurrent-ruby (~> 1.0, >= 1.0.2)
15
15
  i18n (>= 1.6, < 2)
16
16
  minitest (>= 5.1)
17
17
  tzinfo (~> 2.0)
18
18
  zeitwerk (~> 2.3)
19
- concurrent-ruby (1.1.10)
20
- i18n (1.10.0)
19
+ concurrent-ruby (1.2.2)
20
+ i18n (1.12.0)
21
21
  concurrent-ruby (~> 1.0)
22
- minitest (5.16.1)
22
+ minitest (5.18.0)
23
23
  open4 (1.3.4)
24
24
  rake (12.3.3)
25
25
  thor (1.2.1)
26
- tzinfo (2.0.4)
26
+ tzinfo (2.0.6)
27
27
  concurrent-ruby (~> 1.0)
28
- zeitwerk (2.6.0)
28
+ zeitwerk (2.6.7)
29
29
 
30
30
  PLATFORMS
31
31
  ruby
@@ -35,4 +35,4 @@ DEPENDENCIES
35
35
  swarm_cluster_cli_ope!
36
36
 
37
37
  BUNDLED WITH
38
- 2.1.4
38
+ 2.3.7
data/README.md CHANGED
@@ -144,6 +144,7 @@ Possibili CFGS per tipologia:
144
144
  - mysql_user: "root" -> valore in chiaro, in sostituzione della variabile ambiente, DEFAULT: root
145
145
  - database_name_env: "MYSQL_DATABASE" -> variabile ambiente interna al servizio contenente NOME DB, DEFAULT: MYSQL_DATABASE
146
146
  - database_name: "MYSQL_DATABASE" -> valore in chiaro, in sostituzione della variabile ambiente
147
+ - excluded_tables_data: [] -> elenco di tabelle di cui non scaricare i dati(solo lo schema), DEFAULT: []
147
148
  - pg:
148
149
  - local: -> hash di configurazioni per il DB locale
149
150
  - service: "db" -> nome del servizio nel compose locale, DEFAULT: quello definito sopra
@@ -217,7 +218,7 @@ docker stack deploy -c test_folder/test_2/docker_compose.yml test2
217
218
  Per simulare una sincronizzazione fra locale e remoto di un mysql, lanciamo lo stesso stack anche come compose, in modo
218
219
  da trovarci sulla stessa macchina con tutte e due le situazioni
219
220
  ```shell script
220
- docker-compose -f test_folder/test_1/docker-compose-local.yml up -d
221
+ docker compose -f test_folder/test_1/docker-compose-local.yml up -d
221
222
  ```
222
223
 
223
224
 
@@ -227,7 +228,7 @@ lanciare quindi l'ambiente di test:
227
228
 
228
229
  ```shell script
229
230
  kubectl apply -f test_folder/test_k8s/test.yaml
230
- docker-compose -f test_folder/test_k8s/docker-compose-local.yml up -d
231
+ docker compose -f test_folder/test_k8s/docker-compose-local.yml up -d
231
232
  ```
232
233
 
233
234
 
@@ -1,3 +1,5 @@
1
+ require 'fileutils'
2
+
1
3
  module SwarmClusterCliOpe
2
4
  module Kubernetes
3
5
  module SyncConfigs
@@ -88,19 +90,22 @@ module SwarmClusterCliOpe
88
90
  pid = p.pid
89
91
  say "PID in execuzione port forward:#{pid}"
90
92
 
93
+ # directory temporanea dove salvare pa pwd
94
+ pwd_dir = Dir.mktmpdir
91
95
  begin
92
96
 
93
97
  sleep 1
94
98
 
95
- # forzo i permessi sul file della password
96
- cmd = ShellCommandExecution.new(["chmod 600 #{ configs_path("password")}"])
97
- cmd.execute
99
+ # creo il file password temporaneo
100
+ tmp_file_path = File.join(pwd_dir,"password")
101
+ FileUtils.copy(configs_path("password"),tmp_file_path)
102
+ FileUtils.chmod(0600,tmp_file_path)
98
103
 
99
104
  # lanciamo il comando quindi per far rsync
100
105
  rsync_command = [
101
106
  "rsync -az --no-o --no-g",
102
107
  "--delete",
103
- "--password-file=#{ configs_path("password")}"
108
+ "--password-file=#{tmp_file_path}"
104
109
  ]
105
110
 
106
111
  if direction == :up
@@ -119,6 +124,7 @@ module SwarmClusterCliOpe
119
124
  sleep 1
120
125
  say "Stoppo porta forwarded"
121
126
  Process.kill("INT", pid)
127
+ FileUtils.remove_entry pwd_dir
122
128
  end
123
129
  ensure
124
130
  say "Tolgo il servizio di rsyn"
@@ -49,6 +49,7 @@ module SwarmClusterCliOpe
49
49
  - mysql_user: "root" -> valore in chiaro, in sostituzione della variabile ambiente, DEFAULT: root
50
50
  - database_name_env: "MYSQL_DATABASE" -> variabile ambiente interna al servizio contenente NOME DB, DEFAULT: MYSQL_DATABASE
51
51
  - database_name: "MYSQL_DATABASE" -> valore in chiaro, in sostituzione della variabile ambiente
52
+ - excluded_tables_data: [] -> elenco di tabelle di cui non scaricare i dati(solo lo schema), DEFAULT: []
52
53
  pg:
53
54
  --local: -> hash di configurazioni per il DB locale
54
55
  - service: "db" -> nome del servizio nel compose locale, DEFAULT: quello definito sopra
@@ -7,7 +7,23 @@ module SwarmClusterCliOpe
7
7
  resume('pull')
8
8
  if yes?("Confermare il comando?[y,yes]")
9
9
  tmp_file = "/tmp/#{Time.now.to_i}.sql.gz"
10
- container.exec("bash -c 'mysqldump -u #{remote.username} --password=#{remote.password} #{remote.database_name} | gzip -c -f' > #{tmp_file}")
10
+
11
+ #--ignore-table=bkw_ecospazio.gps_events
12
+ remote_authentication = "-u #{remote.username} --password=#{remote.password}"
13
+ dump_command = "mysqldump #{remote_authentication}"
14
+ remote.excluded_tables_data.each do |t|
15
+ dump_command << " --ignore-table=#{remote.database_name}.#{t}"
16
+ end
17
+ dump_command << " #{remote.database_name}"
18
+ dump_command << " > /tmp/export.sql"
19
+ # eseguiamo il backup dello schema per le tabelle elencate
20
+ remote.excluded_tables_data.each do |t|
21
+ dump_command << " &&"
22
+ dump_command << " mysqldump #{remote_authentication}"
23
+ dump_command << " --no-data #{remote.database_name} #{t} >> /tmp/export.sql"
24
+ end
25
+
26
+ container.exec("bash -c '#{dump_command} && cat /tmp/export.sql | gzip -c -f' > #{tmp_file}")
11
27
  local_container.copy_in(tmp_file, tmp_file)
12
28
  local_authentication = "-u #{local.username} --password=#{local.password}"
13
29
 
@@ -24,7 +40,7 @@ module SwarmClusterCliOpe
24
40
 
25
41
  command << "'"
26
42
 
27
- local_container.exec(command.join" ")
43
+ local_container.exec(command.join " ")
28
44
  end
29
45
  true
30
46
  end
@@ -41,6 +57,12 @@ module SwarmClusterCliOpe
41
57
  true
42
58
  end
43
59
 
60
+ def resume(direction)
61
+ super
62
+
63
+ puts "excluded_tables: #{remote.excluded_tables_data.join(",")}"
64
+ end
65
+
44
66
  ##
45
67
  # Classe interna che rappresenta le configurazioni del DB
46
68
  class EnvConfigs < BaseDatabase::EnvConfigs
@@ -51,8 +73,9 @@ module SwarmClusterCliOpe
51
73
 
52
74
  define_cfgs :database_version, default_env: "MYSQL_MAJOR", configuration_name: :mysql_version
53
75
 
54
- end
76
+ define_cfgs :excluded_tables_data, default_value: [], configuration_name: :excluded_tables_data
55
77
 
78
+ end
56
79
 
57
80
  end
58
81
  end
@@ -1,3 +1,3 @@
1
1
  module SwarmClusterCliOpe
2
- VERSION = "0.7.2.1"
2
+ VERSION = "0.8.1"
3
3
  end
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  # Specify which files should be added to the gem when it is released.
24
24
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
25
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
26
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|test_folder)/}) }
26
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|test_folder|Dockerfile)/}) }
27
27
  end
28
28
  spec.bindir = "exe"
29
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swarm_cluster_cli_ope
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2.1
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marino Bonetti
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-24 00:00:00.000000000 Z
11
+ date: 2023-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -81,6 +81,7 @@ files:
81
81
  - ".ruby-gemset"
82
82
  - ".ruby-version"
83
83
  - CHANGELOG.md
84
+ - Dockerfile
84
85
  - Gemfile
85
86
  - Gemfile.lock
86
87
  - LICENSE.txt
@@ -158,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
159
  - !ruby/object:Gem::Version
159
160
  version: '0'
160
161
  requirements: []
161
- rubygems_version: 3.1.4
162
+ rubygems_version: 3.3.5
162
163
  signing_key:
163
164
  specification_version: 4
164
165
  summary: WIP Gemma per la gestione del cluster swarm