seiso-import_master 0.0.12 → 3.0.0.M1

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.
Files changed (63) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +1 -0
  3. data/.travis.yml +3 -0
  4. data/README.md +12 -11
  5. data/Rakefile +3 -3
  6. data/bin/seiso-import-master +30 -13
  7. data/lib/seiso/import_master.rb +114 -90
  8. data/lib/seiso/import_master/importers.rb +5 -0
  9. data/lib/seiso/import_master/importers/base_importer.rb +91 -30
  10. data/lib/seiso/import_master/importers/data_center_importer.rb +31 -0
  11. data/lib/seiso/import_master/importers/environment_importer.rb +25 -0
  12. data/lib/seiso/import_master/importers/health_status_importer.rb +25 -0
  13. data/lib/seiso/import_master/importers/infrastructure_provider_importer.rb +25 -0
  14. data/lib/seiso/import_master/importers/ip_address_role_importer.rb +41 -0
  15. data/lib/seiso/import_master/importers/load_balancer_importer.rb +25 -0
  16. data/lib/seiso/import_master/importers/machine_importer.rb +25 -0
  17. data/lib/seiso/import_master/importers/node_importer.rb +94 -56
  18. data/lib/seiso/import_master/importers/node_ip_address_importer.rb +46 -0
  19. data/lib/seiso/import_master/importers/region_importer.rb +31 -0
  20. data/lib/seiso/import_master/importers/rotation_status_importer.rb +25 -0
  21. data/lib/seiso/import_master/importers/service_group_importer.rb +25 -0
  22. data/lib/seiso/import_master/importers/service_importer.rb +38 -143
  23. data/lib/seiso/import_master/importers/service_instance_importer.rb +60 -213
  24. data/lib/seiso/import_master/importers/service_instance_port_importer.rb +41 -0
  25. data/lib/seiso/import_master/importers/service_type_importer.rb +25 -0
  26. data/lib/seiso/import_master/importers/status_type_importer.rb +25 -0
  27. data/lib/seiso/import_master/mappers.rb +1 -0
  28. data/lib/seiso/import_master/mappers/data_center_mapper.rb +19 -0
  29. data/lib/seiso/import_master/mappers/environment_mapper.rb +20 -0
  30. data/lib/seiso/import_master/mappers/health_status_mapper.rb +20 -0
  31. data/lib/seiso/import_master/mappers/infrastructure_provider_mapper.rb +18 -0
  32. data/lib/seiso/import_master/mappers/ip_address_role_mapper.rb +18 -0
  33. data/lib/seiso/import_master/mappers/load_balancer_mapper.rb +21 -0
  34. data/lib/seiso/import_master/mappers/machine_mapper.rb +27 -0
  35. data/lib/seiso/import_master/mappers/node_ip_address_mapper.rb +38 -0
  36. data/lib/seiso/import_master/mappers/node_mapper.rb +31 -31
  37. data/lib/seiso/import_master/mappers/region_mapper.rb +20 -0
  38. data/lib/seiso/import_master/mappers/rotation_status_mapper.rb +20 -0
  39. data/lib/seiso/import_master/mappers/service_group_mapper.rb +18 -0
  40. data/lib/seiso/import_master/mappers/service_instance_mapper.rb +26 -73
  41. data/lib/seiso/import_master/mappers/service_instance_port_mapper.rb +19 -0
  42. data/lib/seiso/import_master/mappers/service_mapper.rb +23 -32
  43. data/lib/seiso/import_master/mappers/service_type_mapper.rb +19 -0
  44. data/lib/seiso/import_master/mappers/status_type_mapper.rb +18 -0
  45. data/lib/seiso/import_master/util.rb +1 -0
  46. data/lib/seiso/import_master/util/invalid_document_error.rb +9 -0
  47. data/lib/seiso/import_master/util/item_resolver.rb +54 -0
  48. data/lib/seiso/import_master/util/logger.rb +59 -0
  49. data/lib/seiso/import_master/util/rest_util.rb +49 -0
  50. data/lib/seiso/import_master/validators.rb +1 -0
  51. data/lib/seiso/import_master/validators/base_validator.rb +11 -18
  52. data/lib/seiso/import_master/validators/node_validator.rb +54 -45
  53. data/lib/seiso/import_master/validators/service_validator.rb +38 -44
  54. data/sample_conf/seiso3.yml.sample +6 -0
  55. data/seiso-import_master.gemspec +16 -13
  56. data/test/seiso/import_master/importers/test_node_importer.rb +21 -0
  57. metadata +66 -21
  58. data/lib/seiso/import_master/errors/invalid_document_error.rb +0 -11
  59. data/lib/seiso/import_master/importers/simple_importer.rb +0 -28
  60. data/lib/seiso/import_master/mappers/master_item_mapper.rb +0 -194
  61. data/sample_conf/seiso.yml.sample +0 -9
  62. data/test/test_master_item_mapper.rb +0 -257
  63. data/test/test_node_mapper.rb +0 -40
@@ -1,9 +0,0 @@
1
- %YAML 1.1
2
- ---
3
- host: seiso.example.com
4
- port: 443
5
- use_ssl: true
6
- ignore_cert: false
7
- username: some_username
8
- password: some_p@ssword
9
- ---
@@ -1,257 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'seiso/import_master/mappers/master_item_mapper'
3
-
4
- # Author:: Willie Wheeler (mailto:wwheeler@expedia.com)
5
- # Copyright:: Copyright (c) 2014-2015 Expedia, Inc.
6
- # License:: Apache 2.0
7
- class TestMasterItemMapper < MiniTest::Unit::TestCase
8
-
9
- =begin
10
- def setup
11
- @mapper = MasterItemMapper.new
12
- end
13
-
14
- def test_map_all_illegal_type
15
- assert_raises(ArgumentError) do
16
- @mapper.map_all('some-bogus-type', [])
17
- end
18
- end
19
-
20
- def test_map_one_illegal_type
21
- assert_raises(ArgumentError) do
22
- @mapper.map_one('some-bogus-type', {})
23
- end
24
- end
25
-
26
- def test_map_data_center
27
- from = {
28
- 'key' => 'amazon-us-east-1a',
29
- 'name' => 'Amazon US East 1a',
30
- 'region' => 'amazon-us-east-1'
31
- }
32
- to = @mapper.map_one('data-centers', from)
33
- assert_equal(from['key'], to['key'])
34
- assert_equal(from['name'], to['name'])
35
- refute_nil(to['region'])
36
- end
37
-
38
- def test_map_environment
39
- from = {
40
- 'key' => 'prod',
41
- 'name' => 'Production',
42
- 'aka' => 'Live',
43
- 'description' => 'Production environment'
44
- }
45
- to = @mapper.map_one('environments', from)
46
- assert_equal(from['key'], to['key'])
47
- assert_equal(from['name'], to['name'])
48
- assert_equal(from['aka'], to['aka'])
49
- assert_equal(from['description'], to['description'])
50
- end
51
-
52
- def test_map_health_status
53
- from = {
54
- 'key' => 'healthy',
55
- 'name' => 'Healthy',
56
- 'statusType' => 'success'
57
- }
58
- to = @mapper.map_one('health-statuses', from)
59
- assert_equal(from['key'], to['key'])
60
- assert_equal(from['name'], to['name'])
61
- refute_nil(to['statusType'])
62
- end
63
-
64
- def test_map_infrastructure_provider
65
- from = {
66
- 'key' => 'amazon',
67
- 'name' => 'Amazon'
68
- }
69
- to = @mapper.map_one('infrastructure-providers', from)
70
- assert_equal(from['key'], to['key'])
71
- assert_equal(from['name'], to['name'])
72
- end
73
-
74
- def test_map_load_balancer
75
- from = {
76
- 'name' => 'LB-1-2-3-4',
77
- 'type' => 'NetScaler',
78
- 'ipAddress' => '1.2.3.4',
79
- 'dataCenter' => 'amazon-us-east-1a',
80
- 'apiUrl' => 'https://1.2.3.4/api'
81
- }
82
- to = @mapper.map_one('load-balancers', from)
83
- assert_equal(from['name'], to['name'])
84
- assert_equal(from['type'], to['type'])
85
- assert_equal(from['ipAddress'], to['ipAddress'])
86
- refute_nil(to['dataCenter'])
87
- assert_equal(from['apiUrl'], to['apiUrl'])
88
- end
89
-
90
- def test_map_load_balancer_nil_data_center
91
- from = {
92
- 'name' => 'LB-1-2-3-4',
93
- 'type' => 'NetScaler',
94
- 'ipAddress' => '1.2.3.4',
95
- 'apiUrl' => 'https://1.2.3.4/api'
96
- }
97
- to = @mapper.map_one('load-balancers', from)
98
- assert_nil(to['dataCenter'])
99
- end
100
-
101
- def test_map_machine
102
- from = {
103
- 'name' => 'ip-1-2-3-4',
104
- 'ipAddress' => '1.2.3.4',
105
- 'fqdn' => 'seiso01.dev.example.com',
106
- 'hostname' => 'seiso01',
107
- 'domain' => 'dev.example.com',
108
- 'os' => 'linux',
109
- 'platform' => 'amazon',
110
- 'platformVersion' => '201409'
111
- }
112
- to = @mapper.map_one('machines', from)
113
- assert_equal(from['name'], to['name'])
114
- assert_equal(from['ipAddress'], to['ipAddress'])
115
- assert_equal(from['fqdn'], to['fqdn'])
116
- assert_equal(from['hostname'], to['hostname'])
117
- assert_equal(from['domain'], to['domain'])
118
- assert_equal(from['os'], to['os'])
119
- assert_equal(from['platform'], to['platform'])
120
- assert_equal(from['platformVersion'], to['platformVersion'])
121
- end
122
-
123
- def test_map_region
124
- from = {
125
- 'key' => 'amazon-us-east-1',
126
- 'name' => 'Amazon US East 1',
127
- 'regionKey' => 'US East',
128
- 'infrastructureProvider' => 'amazon'
129
- }
130
- to = @mapper.map_one('regions', from)
131
- assert_equal(from['key'], to['key'])
132
- assert_equal(from['name'], to['name'])
133
- assert_equal(from['regionKey'], to['regionKey'])
134
- refute_nil(to['infrastructureProvider'])
135
- end
136
-
137
- def test_map_rotation_status
138
- from = {
139
- 'key' => 'enabled',
140
- 'name' => 'Enabled',
141
- 'statusType' => 'success'
142
- }
143
- to = @mapper.map_one('rotation-statuses', from)
144
- assert_equal(from['key'], to['key'])
145
- assert_equal(from['name'], to['name'])
146
- refute_nil(to['statusType'])
147
- end
148
-
149
- def test_map_service
150
- from = {
151
- 'key' => 'seiso',
152
- 'name' => 'Seiso',
153
- 'description' => 'Devops data repo',
154
- 'platform' => 'Java',
155
- 'scmRepository' => 'https://github.com/ExpediaDotCom/seiso',
156
- 'group' => 'devops',
157
- 'type' => 'web-service',
158
- 'owner' => 'wwheeler'
159
- }
160
- to = @mapper.map_one('services', from)
161
- assert_equal(from['key'], to['key'])
162
- assert_equal(from['name'], to['name'])
163
- assert_equal(from['description'], to['description'])
164
- assert_equal(from['platform'], to['platform'])
165
- assert_equal(from['scmRepository'], to['scmRepository'])
166
- refute_nil(to['group'])
167
- refute_nil(to['type'])
168
- refute_nil(to['owner'])
169
- end
170
-
171
- def test_map_service_group
172
- from = {
173
- 'key' => 'devops',
174
- 'name' => 'DevOps'
175
- }
176
- to = @mapper.map_one('service-groups', from)
177
- assert_equal(from['key'], to['key'])
178
- assert_equal(from['name'], to['name'])
179
- end
180
-
181
- def test_map_service_instance
182
- from = {
183
- 'key' => 'seiso-dev',
184
- 'service' => 'seiso',
185
- 'environment' => 'dev',
186
- 'dataCenter' => 'amazon-us-west-1b',
187
- 'loadBalanced' => true,
188
- 'loadBalancer' => {
189
- 'name' => 'DEV-1-2-3-4'
190
- },
191
- 'minCapacityDeploy' => 50,
192
- 'minCapacityOps' => 75,
193
- 'ipAddressRoles' => [
194
- {
195
- 'name' => 'internal',
196
- 'description' => 'Internal role'
197
- }, {
198
- 'name' => 'partners',
199
- 'description' => 'Partners role'
200
- }
201
- ],
202
- 'ports' => [
203
- {
204
- 'number' => 8443,
205
- 'protocol' => 'https',
206
- 'description' => 'UI port'
207
- }, {
208
- 'number' => 8444,
209
- 'protocol' => 'https',
210
- 'description' => 'API port'
211
- }
212
- ]
213
- }
214
- to = @mapper.map_one('service-instances', from)
215
- assert_equal(from['key'], to['key'])
216
-
217
- refute_nil(to['service'])
218
- refute_nil(to['environment'])
219
- refute_nil(to['dataCenter'])
220
- refute_nil(to['loadBalancer'])
221
- assert_equal(from['loadBalanced'], to['loadBalanced'])
222
- assert_equal(from['minCapacityDeploy'], to['minCapacityDeploy'])
223
- assert_equal(from['minCapacityOps'], to['minCapacityOps'])
224
-
225
- # TODO Move these to a test_ip_address_role method
226
- # assert_equal(from['ipAddressRoles'].length, to['ipAddressRoles'].length)
227
- # refute_nil(to['ipAddressRoles'][0]['serviceInstance'])
228
- # refute_nil(to['ipAddressRoles'][1]['serviceInstance'])
229
-
230
- # TODO Move these to a test_service_instance_port method
231
- # assert_equal(from['ports'].length, to['ports'].length)
232
- # refute_nil(to['ports'][0]['serviceInstance'])
233
- # refute_nil(to['ports'][1]['serviceInstance'])
234
- end
235
-
236
- def test_map_service_type
237
- from = {
238
- 'key' => 'web-service',
239
- 'name' => 'Web Service'
240
- }
241
- to = @mapper.map_one('service-types', from)
242
- assert_equal(from['key'], to['key'])
243
- assert_equal(from['name'], to['name'])
244
- end
245
-
246
- def test_map_status_type
247
- from = {
248
- 'key' => 'warning',
249
- 'name' => 'Warning'
250
- }
251
- to = @mapper.map_one('status-types', from)
252
- assert_equal(from['key'], to['key'])
253
- assert_equal(from['name'], to['name'])
254
- end
255
- =end
256
-
257
- end
@@ -1,40 +0,0 @@
1
- require "minitest/autorun"
2
- require "seiso/import_master/mappers/node_mapper"
3
-
4
- # Author:: Willie Wheeler (mailto:wwheeler@expedia.com)
5
- # Copyright:: Copyright (c) 2014-2015 Expedia, Inc.
6
- # License:: Apache 2.0
7
- class TestNodeMapper < MiniTest::Unit::TestCase
8
-
9
- def setup
10
- @mapper = Seiso::ImportMaster::Mappers::NodeMapper.new
11
- end
12
-
13
- def test_map_node
14
- from = {
15
- 'name' => 'seiso01-dev',
16
- 'machine' => 'ip-1-2-3-4',
17
- 'ipAddresses' => [
18
- {
19
- 'ipAddressRole' => 'internal',
20
- 'ipAddress' => '1.2.10.1'
21
- }, {
22
- 'ipAddressRole' => 'partners',
23
- 'ipAddress' => '1.2.10.2'
24
- }
25
- ]
26
- }
27
- to = @mapper.seiso_node(from)
28
- assert_equal(from['name'], to['name'])
29
- refute_nil(to['machine'])
30
-
31
- # TODO Move these to a test_ip_address method
32
- # assert_equal(from['ipAddresses'][0]['ipAddressRole'], to['ipAddresses'][0]['ipAddressRole']['name'])
33
- # assert_equal(from['ipAddresses'][0]['ipAddress'], to['ipAddresses'][0]['ipAddress'])
34
- # assert_equal(from['ipAddresses'][1]['ipAddressRole'], to['ipAddresses'][1]['ipAddressRole']['name'])
35
- # assert_equal(from['ipAddresses'][1]['ipAddress'], to['ipAddresses'][1]['ipAddress'])
36
- end
37
-
38
- def test_map_node_ip_address
39
- end
40
- end