shards 0.1.0 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|