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
@@ -0,0 +1,6 @@
1
+ %YAML 1.1
2
+ ---
3
+ base_uri: https://seiso.example.com/api/
4
+ username: some_username
5
+ password: some_p@ssword
6
+ ---
@@ -3,25 +3,28 @@ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "seiso-import_master"
7
- spec.version = "0.0.12"
8
- spec.authors = ["Willie Wheeler"]
9
- spec.email = ["wwheeler@expedia.com"]
10
- spec.summary = "Imports Seiso data master files into Seiso."
11
- spec.description = "Supports self-service data management via version control, e.g. by using GitHub."
12
- spec.homepage = "http://seiso.io"
13
- spec.license = "Apache-2.0"
6
+ spec.name = 'seiso-import_master'
7
+ spec.version = '3.0.0.M1'
8
+ spec.authors = ['Willie Wheeler']
9
+ spec.email = ['wwheeler@expedia.com']
10
+ spec.summary = 'Imports Seiso data master files into Seiso.'
11
+ spec.description = 'Supports self-service data management via version control, e.g. by using GitHub.'
12
+ spec.homepage = 'http://seiso.io'
13
+ spec.license = 'Apache-2.0'
14
14
 
15
15
  spec.files = `git ls-files -z`.split("\x0")
16
16
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
- spec.require_paths = ["lib"]
18
+ spec.require_paths = ['lib']
19
19
 
20
20
  spec.required_ruby_version = '~> 1.9.3'
21
+ # spec.required_ruby_version = '~> 2.3.0'
21
22
 
22
- spec.add_development_dependency "bundler", "~> 1.7"
23
- spec.add_development_dependency "rake", "~> 10.0"
23
+ # spec.add_development_dependency 'bundler', '~> 1.7.6'
24
+ spec.add_development_dependency 'bundler', '~> 1.11.2'
25
+ spec.add_development_dependency 'rake', '~> 10.5.0'
24
26
 
25
- spec.add_runtime_dependency "seiso-connector", "~> 0.1.6"
26
- spec.add_runtime_dependency "require_all", "~> 1.3.2"
27
+ spec.add_runtime_dependency 'awesome_print', '~> 1.6.1'
28
+ spec.add_runtime_dependency 'hyperresource', '~> 0.9.4'
29
+ spec.add_runtime_dependency 'require_all', '~> 1.3.3'
27
30
  end
@@ -0,0 +1,21 @@
1
+ require 'minitest/autorun'
2
+ #require 'seiso/import_master/importers/node_importer'
3
+ require 'require_all'
4
+ require_all 'lib'
5
+
6
+ module Seiso
7
+ class ImportMaster
8
+ # Author:: Willie Wheeler (mailto:wwheeler@expedia.com)
9
+ # Copyright:: Copyright (c) 2014-2015 Expedia, Inc.
10
+ # License:: Apache 2.0
11
+ class Importers::TestNodeImporter < MiniTest::Unit::TestCase
12
+
13
+ def setup
14
+ end
15
+
16
+ def test_dummy
17
+ puts 'TODO test_dummy'
18
+ end
19
+ end
20
+ end
21
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seiso-import_master
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 3.0.0.M1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Willie Wheeler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-11 00:00:00.000000000 Z
11
+ date: 2016-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,56 +16,70 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: 1.11.2
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: 1.11.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: 10.5.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: 10.5.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: seiso-connector
42
+ name: awesome_print
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.6
47
+ version: 1.6.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.6
54
+ version: 1.6.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: hyperresource
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.4
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 0.9.4
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: require_all
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ~>
60
74
  - !ruby/object:Gem::Version
61
- version: 1.3.2
75
+ version: 1.3.3
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - ~>
67
81
  - !ruby/object:Gem::Version
68
- version: 1.3.2
82
+ version: 1.3.3
69
83
  description: Supports self-service data management via version control, e.g. by using
70
84
  GitHub.
71
85
  email:
@@ -83,23 +97,55 @@ files:
83
97
  - Rakefile
84
98
  - bin/seiso-import-master
85
99
  - lib/seiso/import_master.rb
86
- - lib/seiso/import_master/errors/invalid_document_error.rb
100
+ - lib/seiso/import_master/importers.rb
87
101
  - lib/seiso/import_master/importers/base_importer.rb
102
+ - lib/seiso/import_master/importers/data_center_importer.rb
103
+ - lib/seiso/import_master/importers/environment_importer.rb
104
+ - lib/seiso/import_master/importers/health_status_importer.rb
105
+ - lib/seiso/import_master/importers/infrastructure_provider_importer.rb
106
+ - lib/seiso/import_master/importers/ip_address_role_importer.rb
107
+ - lib/seiso/import_master/importers/load_balancer_importer.rb
108
+ - lib/seiso/import_master/importers/machine_importer.rb
88
109
  - lib/seiso/import_master/importers/node_importer.rb
110
+ - lib/seiso/import_master/importers/node_ip_address_importer.rb
111
+ - lib/seiso/import_master/importers/region_importer.rb
112
+ - lib/seiso/import_master/importers/rotation_status_importer.rb
113
+ - lib/seiso/import_master/importers/service_group_importer.rb
89
114
  - lib/seiso/import_master/importers/service_importer.rb
90
115
  - lib/seiso/import_master/importers/service_instance_importer.rb
91
- - lib/seiso/import_master/importers/simple_importer.rb
92
- - lib/seiso/import_master/mappers/master_item_mapper.rb
116
+ - lib/seiso/import_master/importers/service_instance_port_importer.rb
117
+ - lib/seiso/import_master/importers/service_type_importer.rb
118
+ - lib/seiso/import_master/importers/status_type_importer.rb
119
+ - lib/seiso/import_master/mappers.rb
120
+ - lib/seiso/import_master/mappers/data_center_mapper.rb
121
+ - lib/seiso/import_master/mappers/environment_mapper.rb
122
+ - lib/seiso/import_master/mappers/health_status_mapper.rb
123
+ - lib/seiso/import_master/mappers/infrastructure_provider_mapper.rb
124
+ - lib/seiso/import_master/mappers/ip_address_role_mapper.rb
125
+ - lib/seiso/import_master/mappers/load_balancer_mapper.rb
126
+ - lib/seiso/import_master/mappers/machine_mapper.rb
127
+ - lib/seiso/import_master/mappers/node_ip_address_mapper.rb
93
128
  - lib/seiso/import_master/mappers/node_mapper.rb
129
+ - lib/seiso/import_master/mappers/region_mapper.rb
130
+ - lib/seiso/import_master/mappers/rotation_status_mapper.rb
131
+ - lib/seiso/import_master/mappers/service_group_mapper.rb
94
132
  - lib/seiso/import_master/mappers/service_instance_mapper.rb
133
+ - lib/seiso/import_master/mappers/service_instance_port_mapper.rb
95
134
  - lib/seiso/import_master/mappers/service_mapper.rb
135
+ - lib/seiso/import_master/mappers/service_type_mapper.rb
136
+ - lib/seiso/import_master/mappers/status_type_mapper.rb
137
+ - lib/seiso/import_master/util.rb
138
+ - lib/seiso/import_master/util/invalid_document_error.rb
139
+ - lib/seiso/import_master/util/item_resolver.rb
140
+ - lib/seiso/import_master/util/logger.rb
141
+ - lib/seiso/import_master/util/rest_util.rb
142
+ - lib/seiso/import_master/validators.rb
96
143
  - lib/seiso/import_master/validators/base_validator.rb
97
144
  - lib/seiso/import_master/validators/node_validator.rb
98
145
  - lib/seiso/import_master/validators/service_validator.rb
99
- - sample_conf/seiso.yml.sample
146
+ - sample_conf/seiso3.yml.sample
100
147
  - seiso-import_master.gemspec
101
- - test/test_master_item_mapper.rb
102
- - test/test_node_mapper.rb
148
+ - test/seiso/import_master/importers/test_node_importer.rb
103
149
  homepage: http://seiso.io
104
150
  licenses:
105
151
  - Apache-2.0
@@ -115,9 +161,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
115
161
  version: 1.9.3
116
162
  required_rubygems_version: !ruby/object:Gem::Requirement
117
163
  requirements:
118
- - - ! '>='
164
+ - - ! '>'
119
165
  - !ruby/object:Gem::Version
120
- version: '0'
166
+ version: 1.3.1
121
167
  requirements: []
122
168
  rubyforge_project:
123
169
  rubygems_version: 2.4.6
@@ -125,5 +171,4 @@ signing_key:
125
171
  specification_version: 4
126
172
  summary: Imports Seiso data master files into Seiso.
127
173
  test_files:
128
- - test/test_master_item_mapper.rb
129
- - test/test_node_mapper.rb
174
+ - test/seiso/import_master/importers/test_node_importer.rb
@@ -1,11 +0,0 @@
1
- module Seiso
2
- class ImportMaster
3
- module Errors
4
-
5
- # Author:: Willie Wheeler (mailto:wwheeler@expedia.com)
6
- # Copyright:: Copyright (c) 2014-2015 Expedia, Inc.
7
- # License:: Apache 2.0
8
- class InvalidDocumentError < StandardError; end
9
- end
10
- end
11
- end
@@ -1,28 +0,0 @@
1
- require_relative "base_importer"
2
-
3
- module Seiso
4
- class ImportMaster
5
- module Importers
6
-
7
- # Author:: Willie Wheeler (mailto:wwheeler@expedia.com)
8
- # Copyright:: Copyright (c) 2014-2015 Expedia, Inc.
9
- # License:: Apache 2.0
10
- class SimpleImporter < BaseImporter
11
-
12
- def initialize(mapper, seiso, uri_factory_v1, rest_connector_v1)
13
- @mapper = mapper
14
- @seiso = seiso
15
- @uri_factory_v1 = uri_factory_v1
16
- @rest_connector_v1 = rest_connector_v1
17
- end
18
-
19
- def import(doc)
20
- type = doc['type']
21
- items = doc['items']
22
- seiso_items = @mapper.map_all(type, items)
23
- @seiso.post_items(type, seiso_items)
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,194 +0,0 @@
1
- module Seiso
2
- class ImportMaster
3
- module Mappers
4
-
5
- # Maps the data master format to the Seiso API format.
6
- #
7
- # Author:: Willie Wheeler
8
- # Copyright:: Copyright (c) 2014-2015 Expedia, Inc.
9
- # License:: Apache 2.0
10
- class MasterItemMapper
11
-
12
- def initialize
13
- @mappers = {
14
- 'data-centers' => data_center_mapper,
15
- 'doc-links' => doc_link_mapper,
16
- 'environments' => environment_mapper,
17
- 'health-statuses' => health_status_mapper,
18
- 'infrastructure-providers' => infrastructure_provider_mapper,
19
- 'load-balancers' => load_balancer_mapper,
20
- 'machines' => machine_mapper,
21
- 'regions' => region_mapper,
22
- 'rotation-statuses' => rotation_status_mapper,
23
- 'service-groups' => service_group_mapper,
24
- 'service-types' => service_type_mapper,
25
- 'status-types' => status_type_mapper
26
- }
27
- end
28
-
29
- # Maps a list of items.
30
- # - type: Item type
31
- # - items: Item list
32
- def map_all(type, items)
33
- mapper = mapper_for type
34
- result = []
35
- items.each { |i| result << mapper.call(i) }
36
- result
37
- end
38
-
39
- # Maps a single item.
40
- # - type: Item type
41
- # - item: Item
42
- def map_one(type, item)
43
- mapper_for(type).call item
44
- end
45
-
46
- private
47
-
48
- # Returns a mapper lambda for the specified type.
49
- def mapper_for(type)
50
- mapper = @mappers[type]
51
- raise ArgumentError, "Unknown type: #{type}" if mapper.nil?
52
- mapper
53
- end
54
-
55
- def data_center_mapper
56
- ->(dc) {
57
- {
58
- 'key' => dc['key'],
59
- 'name' => dc['name'],
60
- 'region' => { 'key' => dc['region'] }
61
- }
62
- }
63
- end
64
-
65
- def doc_link_mapper
66
- ->(dl) {
67
- {
68
- 'title' => dl['title'],
69
- 'href' => dl['href'],
70
- 'description' => dl['description']
71
- }
72
- }
73
- end
74
-
75
- def environment_mapper
76
- ->(e) {
77
- {
78
- 'key' => e['key'],
79
- 'name' => e['name'],
80
- 'aka' => e['aka'],
81
- 'description' => e['description'],
82
-
83
- # FIXME Deprecated, don't use.
84
- 'rank' => e['rank']
85
- }
86
- }
87
- end
88
-
89
- def health_status_mapper
90
- ->(hs) {
91
- {
92
- 'key' => hs['key'],
93
- 'name' => hs['name'],
94
- 'description' => hs['description'],
95
- 'statusType' => { 'key' => hs['statusType'] }
96
- }
97
- }
98
- end
99
-
100
- def infrastructure_provider_mapper
101
- ->(ip) {
102
- {
103
- 'key' => ip['key'],
104
- 'name' => ip['name']
105
- }
106
- }
107
- end
108
-
109
- def load_balancer_mapper
110
- ->(lb) {
111
- seiso_lb = {
112
- 'name' => lb['name'],
113
- 'type' => lb['type'],
114
- 'ipAddress' => lb['ipAddress'],
115
- 'apiUrl' => lb['apiUrl']
116
- }
117
-
118
- dc = lb['dataCenter']
119
- seiso_lb['dataCenter'] = { 'key' => dc } unless dc.nil?
120
-
121
- seiso_lb
122
- }
123
- end
124
-
125
- def machine_mapper
126
- ->(m) {
127
- {
128
- 'name' => m['name'],
129
- 'ipAddress' => m['ipAddress'],
130
- 'fqdn' => m['fqdn'],
131
- 'hostname' => m['hostname'],
132
- 'domain' => m['domain'],
133
- 'os' => m['os'],
134
- 'platform' => m['platform'],
135
- 'platformVersion' => m['platformVersion']
136
- }
137
- }
138
- end
139
-
140
- def region_mapper
141
- ->(r) {
142
- {
143
- 'key' => r['key'],
144
- 'name' => r['name'],
145
- 'regionKey' => r['regionKey'],
146
- 'infrastructureProvider' => { 'key' => r['infrastructureProvider'] }
147
- }
148
- }
149
- end
150
-
151
- def rotation_status_mapper
152
- ->(rs) {
153
- {
154
- 'key' => rs['key'],
155
- 'name' => rs['name'],
156
- 'description' => rs['description'],
157
- 'statusType' => { 'key' => rs['statusType'] }
158
- }
159
- }
160
- end
161
-
162
- def service_group_mapper
163
- ->(sg) {
164
- {
165
- 'key' => sg['key'],
166
- 'name' => sg['name'],
167
- 'description' => sg['description']
168
- }
169
- }
170
- end
171
-
172
- def service_type_mapper
173
- ->(st) {
174
- {
175
- 'key' => st['key'],
176
- 'name' => st['name'],
177
- 'description' => st['description']
178
- }
179
- }
180
- end
181
-
182
- def status_type_mapper
183
- ->(st) {
184
- {
185
- 'key' => st['key'],
186
- 'name' => st['name'],
187
- 'description' => st['description']
188
- }
189
- }
190
- end
191
- end
192
- end
193
- end
194
- end