shards 0.1.0 → 1.0.2
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 +4 -4
- data/.gitignore +2 -0
- data/.ruby-version +1 -0
- data/Gemfile.lock +98 -0
- data/README.md +34 -3
- data/exe/shards +5 -0
- data/lib/settings/format_methods.yaml +151 -0
- data/lib/settings/workflow.yaml +171 -0
- data/lib/shards.rb +12 -3
- data/lib/shards/base.rb +25 -0
- data/lib/shards/base_yaml_object.rb +34 -0
- data/lib/shards/client.rb +118 -0
- data/lib/shards/config.rb +54 -0
- data/lib/shards/db.rb +92 -0
- data/lib/shards/dns.rb +56 -0
- data/lib/shards/location.rb +29 -0
- data/lib/shards/meta/list.rb +15 -0
- data/lib/shards/meta/meta.rb +57 -0
- data/lib/shards/repo.rb +45 -0
- data/lib/shards/shard.rb +64 -0
- data/lib/shards/site.rb +31 -0
- data/lib/shards/stage.rb +64 -0
- data/lib/shards/version.rb +1 -1
- data/lib/shards/workflow/base.rb +177 -0
- data/lib/shards/workflow/fast_terminal.rb +58 -0
- data/lib/shards/workflow/terminal.rb +56 -0
- data/lib/shards/workflow/workflow.rb +11 -0
- data/shards.gemspec +9 -0
- data/test.env +24 -0
- metadata +153 -3
@@ -0,0 +1,58 @@
|
|
1
|
+
require_relative './base.rb'
|
2
|
+
|
3
|
+
module Shards
|
4
|
+
|
5
|
+
module Workflow
|
6
|
+
|
7
|
+
class FastTerminal < Shards::Workflow::Base
|
8
|
+
|
9
|
+
attr_accessor :client, :location, :stage, :domain, :site, :params
|
10
|
+
|
11
|
+
def create
|
12
|
+
|
13
|
+
@wrong_text=false
|
14
|
+
|
15
|
+
validate_client params[:client]
|
16
|
+
validate_domain params[:domain]
|
17
|
+
validate_location params[:location]
|
18
|
+
validate_stage params[:stage]
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
def validate_client cli
|
23
|
+
|
24
|
+
@wrong_text=false
|
25
|
+
|
26
|
+
validate_min_size cli, @step['client_min_size']
|
27
|
+
|
28
|
+
@client=cli.capitalize
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
def validate_location loc
|
33
|
+
raise "Location %s unavailable" % loc unless config.locations.keys.include? loc
|
34
|
+
@location=config.locations[loc]
|
35
|
+
end
|
36
|
+
|
37
|
+
def validate_stage st
|
38
|
+
raise "Stage %s unavailable" % st unless location.stages.keys.include? st
|
39
|
+
@stage=location.stages[st]
|
40
|
+
end
|
41
|
+
|
42
|
+
def validate_domain domain_name
|
43
|
+
|
44
|
+
@wrong_text=false
|
45
|
+
|
46
|
+
validate_min_size domain_name, @step['domain_min_size']
|
47
|
+
|
48
|
+
validate_regex domain_name, @step['domain_regex']
|
49
|
+
|
50
|
+
@domain=domain_name
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require_relative './base.rb'
|
2
|
+
|
3
|
+
module Shards
|
4
|
+
|
5
|
+
module Workflow
|
6
|
+
|
7
|
+
class Terminal < Shards::Workflow::Base
|
8
|
+
|
9
|
+
attr_accessor :client, :location, :stage, :domain, :site
|
10
|
+
|
11
|
+
def ask_client
|
12
|
+
|
13
|
+
ask_question
|
14
|
+
|
15
|
+
@answer=answer.strip
|
16
|
+
|
17
|
+
@wrong_text=false
|
18
|
+
|
19
|
+
validate_min_size answer, @step['min_size']
|
20
|
+
|
21
|
+
@client=answer.capitalize
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def ask_location
|
26
|
+
locations=config.locations.keys
|
27
|
+
choose_one "Locations:", locations
|
28
|
+
@location=config.locations[locations[answer.to_i]]
|
29
|
+
end
|
30
|
+
|
31
|
+
def ask_stage
|
32
|
+
stages=location.stages.keys
|
33
|
+
choose_one "Stages:", stages
|
34
|
+
@stage=location.stages[stages[answer.to_i]]
|
35
|
+
end
|
36
|
+
|
37
|
+
def ask_domain
|
38
|
+
|
39
|
+
ask_question
|
40
|
+
|
41
|
+
@answer=answer.strip
|
42
|
+
|
43
|
+
@wrong_text=false
|
44
|
+
|
45
|
+
validate_min_size answer, @step['min_size']
|
46
|
+
|
47
|
+
validate_regex answer, @step['regex']
|
48
|
+
|
49
|
+
@domain=answer
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
data/shards.gemspec
CHANGED
@@ -31,6 +31,15 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.require_paths = ["lib"]
|
32
32
|
|
33
33
|
spec.add_development_dependency "bundler", "~> 1.16"
|
34
|
+
spec.add_development_dependency "aruba", "~> 0.14"
|
34
35
|
spec.add_development_dependency "rake", "~> 10.0"
|
35
36
|
spec.add_development_dependency "rspec", "~> 3.0"
|
37
|
+
spec.add_development_dependency "byebug", "~> 10.0"
|
38
|
+
spec.add_dependency "dotenv", "~> 2.4"
|
39
|
+
spec.add_dependency "net-ssh", "~> 5.0"
|
40
|
+
spec.add_dependency "net-scp", "~> 1.2"
|
41
|
+
spec.add_dependency "aws-sdk-route53", "~> 1.9"
|
42
|
+
spec.add_dependency "git", "~> 1.4"
|
43
|
+
spec.add_dependency "thor", "~> 0.20"
|
44
|
+
spec.add_dependency "terminal-table", "~> 1.8"
|
36
45
|
end
|
data/test.env
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
ENGINEERING_ROOT_PATH=tmp/testrepo/shards_test_repo
|
2
|
+
CONFIG_FILE=file.yml
|
3
|
+
PROXY_SUBDOMAIN=proxy.example.com
|
4
|
+
DOMAIN=example.com
|
5
|
+
CONFIG_FILES_ROOT_PATH=path/to
|
6
|
+
SHARDS_FILE_NAME=shards.yml
|
7
|
+
SITES_FILE_NAME=sites.yml
|
8
|
+
SHARD_LIST_KEY_ROOT_PATH=octopus production migration_group_shards
|
9
|
+
CONFIG_DIR_SUFFIX=config_dir_suffix
|
10
|
+
DNS_ZONE_CODE=TestCodeDNSZone
|
11
|
+
DB_USER=db_user_name
|
12
|
+
DB_PASSWORD=HerePasswordDB
|
13
|
+
PROXY_USER=proxy_username
|
14
|
+
BASE_CONFIG_FILE=shards.yml
|
15
|
+
# optional:
|
16
|
+
TEST=true #only for test.env delete this var in settings.env
|
17
|
+
CONFIG_REPLACE={ 'prod' => 'web' }
|
18
|
+
LIVE_BRANCH=shards_test # set this var to use in test.env or to change the default value 'v5'
|
19
|
+
|
20
|
+
# You could overwrite methods using this metaprograming way ading your on your_file.yaml
|
21
|
+
# Then add this var:
|
22
|
+
# FORMAT_METHODS_FILE=your/path/to/your_file.yaml
|
23
|
+
# Finally to overwrite the default behavior write your code in your_file.yaml. The yaml will be merged so you need define just the methods thay you need overwrite.
|
24
|
+
# The default definitions are in spec/support/format_methods.yaml
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shards
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Diego PL
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: aruba
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.14'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.14'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,27 +66,163 @@ dependencies:
|
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: byebug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: dotenv
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.4'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.4'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: net-ssh
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '5.0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '5.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: net-scp
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.2'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.2'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: aws-sdk-route53
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.9'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.9'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: git
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '1.4'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '1.4'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: thor
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.20'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0.20'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: terminal-table
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '1.8'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '1.8'
|
55
181
|
description: The gem read a conf.yml file in a puppet project to know the multitenant
|
56
182
|
sites and shards and manage changes.
|
57
183
|
email:
|
58
184
|
- diego.piccinini@gmail.com
|
59
|
-
executables:
|
185
|
+
executables:
|
186
|
+
- shards
|
60
187
|
extensions: []
|
61
188
|
extra_rdoc_files: []
|
62
189
|
files:
|
63
190
|
- ".gitignore"
|
64
191
|
- ".rspec"
|
192
|
+
- ".ruby-version"
|
65
193
|
- ".travis.yml"
|
66
194
|
- CODE_OF_CONDUCT.md
|
67
195
|
- Gemfile
|
196
|
+
- Gemfile.lock
|
68
197
|
- LICENSE.txt
|
69
198
|
- README.md
|
70
199
|
- Rakefile
|
71
200
|
- bin/console
|
72
201
|
- bin/setup
|
202
|
+
- exe/shards
|
203
|
+
- lib/settings/format_methods.yaml
|
204
|
+
- lib/settings/workflow.yaml
|
73
205
|
- lib/shards.rb
|
206
|
+
- lib/shards/base.rb
|
207
|
+
- lib/shards/base_yaml_object.rb
|
208
|
+
- lib/shards/client.rb
|
209
|
+
- lib/shards/config.rb
|
210
|
+
- lib/shards/db.rb
|
211
|
+
- lib/shards/dns.rb
|
212
|
+
- lib/shards/location.rb
|
213
|
+
- lib/shards/meta/list.rb
|
214
|
+
- lib/shards/meta/meta.rb
|
215
|
+
- lib/shards/repo.rb
|
216
|
+
- lib/shards/shard.rb
|
217
|
+
- lib/shards/site.rb
|
218
|
+
- lib/shards/stage.rb
|
74
219
|
- lib/shards/version.rb
|
220
|
+
- lib/shards/workflow/base.rb
|
221
|
+
- lib/shards/workflow/fast_terminal.rb
|
222
|
+
- lib/shards/workflow/terminal.rb
|
223
|
+
- lib/shards/workflow/workflow.rb
|
75
224
|
- shards.gemspec
|
225
|
+
- test.env
|
76
226
|
homepage: https://github.com/BookingBug/shards
|
77
227
|
licenses:
|
78
228
|
- MIT
|