seiso-import_master 0.0.7 → 0.0.8
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 +8 -8
- data/lib/seiso/import_master.rb +14 -6
- data/lib/seiso/import_master/importers/service_importer.rb +19 -11
- data/lib/seiso/import_master/importers/service_instance_importer.rb +96 -16
- data/lib/seiso/import_master/mappers/master_item_mapper.rb +1 -1
- data/seiso-import_master.gemspec +2 -2
- metadata +4 -7
- data/lib/seiso/import_master/util/rest_connector.rb +0 -102
- data/lib/seiso/import_master/util/uri_factory_v1.rb +0 -61
- data/lib/seiso/import_master/util/uri_factory_v2.rb +0 -34
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZTA3MTk0YTNlYzIxMDM3MzhlNTMwYWFhMGRiNzVhODU5MmYyZDc2Ng==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZGE0MjU4OGIxNWRlYjQyZGY1N2Y5NzMwYjZkOTRlNDg1YzUyOGQ2Mg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NWY0MGZkYjRkYzA1MTNlMDE3NzM1ZDBmM2RiZGE5NDZlY2JlYTY0Yzc2YWIz
|
10
|
+
YTliN2E4YjQ0ODYyMzY3MjFkNWE1ZDk0MGI2NjM4YzM1ODk5Yjc0MGRlMjU5
|
11
|
+
MmMxODkzYWZjNzVhNGY0ZmJhMTY0NWUyYTYxZTc0OWQzMzA4MGI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZjI2MjlhNzIzNWY2NTIzNmY3Y2VhMTlhYTI4ODE2NjRjYjM0MGRiZjRmMzRh
|
14
|
+
NTVlMTBmMDZmMjkwZjA0Y2NjMTgxOTJiM2M3ZDZhZWM0ZTQxMjdlYzI4NTI5
|
15
|
+
ZGRlNzJjOTAwZmUxMjliNzU4ZmI4ODhmYzllNGEzNzY0MGJjYTM=
|
data/lib/seiso/import_master.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "json"
|
2
2
|
require "require_all"
|
3
|
-
require "seiso/connector"
|
4
3
|
require "yaml"
|
4
|
+
require "seiso/connector"
|
5
5
|
|
6
6
|
require_rel "import_master"
|
7
7
|
|
@@ -39,16 +39,24 @@ module Seiso
|
|
39
39
|
rest_connector_v2 = rest_connector(seiso_settings, "application/hal+json")
|
40
40
|
|
41
41
|
@simple_importer = Importers::SimpleImporter.new(basic_mapper, seiso, uri_factory_v1, rest_connector_v1)
|
42
|
+
|
43
|
+
# TODO Clean this up. Just use v2 URI factory and connector.
|
42
44
|
@importers = {
|
43
45
|
'nodes' => Importers::NodeImporter.new(node_mapper, uri_factory_v1, rest_connector_v1),
|
44
46
|
'services' => Importers::ServiceImporter.new(
|
45
|
-
service_mapper,
|
46
47
|
basic_mapper,
|
48
|
+
service_mapper,
|
47
49
|
uri_factory_v1,
|
48
50
|
uri_factory_v2,
|
49
51
|
rest_connector_v1,
|
50
52
|
rest_connector_v2),
|
51
|
-
'service-instances' => Importers::ServiceInstanceImporter.new(
|
53
|
+
'service-instances' => Importers::ServiceInstanceImporter.new(
|
54
|
+
service_instance_mapper,
|
55
|
+
uri_factory_v1,
|
56
|
+
uri_factory_v2,
|
57
|
+
seiso,
|
58
|
+
rest_connector_v1,
|
59
|
+
rest_connector_v2)
|
52
60
|
}
|
53
61
|
end
|
54
62
|
|
@@ -81,7 +89,7 @@ module Seiso
|
|
81
89
|
use_ssl = settings['use_ssl'] || false
|
82
90
|
scheme = use_ssl ? "https" : "http"
|
83
91
|
base_uri = "#{scheme}://#{host}:#{port}/v1"
|
84
|
-
|
92
|
+
Seiso::Connector::UriFactoryV1.new base_uri
|
85
93
|
end
|
86
94
|
|
87
95
|
def uri_factory_v2(settings)
|
@@ -90,7 +98,7 @@ module Seiso
|
|
90
98
|
use_ssl = settings['use_ssl'] || false
|
91
99
|
scheme = use_ssl ? "https" : "http"
|
92
100
|
base_uri = "#{scheme}://#{host}:#{port}/v2"
|
93
|
-
|
101
|
+
Seiso::Connector::UriFactoryV2.new base_uri
|
94
102
|
end
|
95
103
|
|
96
104
|
def rest_connector(settings, media_type)
|
@@ -100,7 +108,7 @@ module Seiso
|
|
100
108
|
ignore_cert = settings['ignore_cert'] || false
|
101
109
|
username = settings['username']
|
102
110
|
password = settings['password']
|
103
|
-
|
111
|
+
Seiso::Connector::RestConnector.new(host, port, use_ssl, ignore_cert, username, password, media_type)
|
104
112
|
end
|
105
113
|
end
|
106
114
|
end
|
@@ -4,6 +4,8 @@ module Seiso
|
|
4
4
|
class ImportMaster
|
5
5
|
module Importers
|
6
6
|
|
7
|
+
# TODO Clean this up. Just use v2 URI factory and connector.
|
8
|
+
|
7
9
|
# Imports a service document into Seiso.
|
8
10
|
#
|
9
11
|
# Author:: Willie Wheeler (mailto:wwheeler@expedia.com)
|
@@ -12,8 +14,8 @@ module Seiso
|
|
12
14
|
class ServiceImporter < BaseImporter
|
13
15
|
|
14
16
|
def initialize(
|
15
|
-
service_mapper,
|
16
17
|
basic_mapper,
|
18
|
+
service_mapper,
|
17
19
|
uri_factory_v1,
|
18
20
|
uri_factory_v2,
|
19
21
|
rest_connector_v1,
|
@@ -32,32 +34,38 @@ module Seiso
|
|
32
34
|
services = doc['items']
|
33
35
|
puts "Importing service document"
|
34
36
|
|
35
|
-
|
37
|
+
sdm_doc_links = detach_children(services, 'service', 'key', 'docLinks')
|
36
38
|
|
37
39
|
seiso_services = services.map { |s| @service_mapper.seiso_service s }
|
38
40
|
services_uri = @uri_factory_v1.services_uri true
|
39
41
|
@rest_connector_v1.post(services_uri, seiso_services)
|
40
42
|
|
41
|
-
import_doc_links
|
43
|
+
import_doc_links(services, sdm_doc_links)
|
42
44
|
end
|
43
45
|
|
44
46
|
private
|
45
47
|
|
46
|
-
|
47
|
-
|
48
|
+
# - services: services
|
49
|
+
# - doc_links: SDM doc links
|
50
|
+
def import_doc_links(services, doc_links)
|
48
51
|
|
49
|
-
|
52
|
+
# We can't simply infer the services from the doc links, because we have to handle the case
|
53
|
+
# where we remove all doc links from a service instance that formerly had some.
|
54
|
+
|
55
|
+
doc_links_by_service = group_doc_links_by_service doc_links
|
56
|
+
services.each do |service|
|
57
|
+
service_key = service['key']
|
58
|
+
service_doc_links = doc_links_by_service[service_key] || []
|
50
59
|
doc_links_uri = @uri_factory_v2.doc_links_uri service_key
|
51
60
|
|
52
61
|
# Get service's doc links so we can
|
53
62
|
# 1) Delete stale doc links
|
54
63
|
# 2) Avoid duplicate imports
|
55
|
-
seiso_doc_links_response = @rest_connector_v2.get
|
56
|
-
seiso_doc_links = JSON.parse
|
57
|
-
|
58
|
-
to_delete = seiso_doc_links_to_delete(doc_links, seiso_doc_links)
|
64
|
+
seiso_doc_links_response = @rest_connector_v2.get doc_links_uri
|
65
|
+
seiso_doc_links = JSON.parse seiso_doc_links_response.body
|
59
66
|
|
60
67
|
# Delete stale doc links
|
68
|
+
to_delete = seiso_doc_links_to_delete(service_doc_links, seiso_doc_links)
|
61
69
|
to_delete.each do |seiso_doc_link|
|
62
70
|
href = seiso_doc_link['_links']['self']['href']
|
63
71
|
uri = URI.parse href
|
@@ -67,7 +75,7 @@ module Seiso
|
|
67
75
|
# Classify remaining links as post or put
|
68
76
|
to_post = []
|
69
77
|
to_put = []
|
70
|
-
|
78
|
+
service_doc_links.each do |sdm_doc_link|
|
71
79
|
sdm_title = sdm_doc_link['title']
|
72
80
|
post_it = true
|
73
81
|
seiso_doc_links.each do |seiso_doc_link|
|
@@ -4,6 +4,10 @@ module Seiso
|
|
4
4
|
class ImportMaster
|
5
5
|
module Importers
|
6
6
|
|
7
|
+
# TODO Clean this up. Just use v2 URI factory and connector.
|
8
|
+
# Right now we're using three separate Seiso connectors (and two versions of the Seiso API)
|
9
|
+
# and this sucks. [WLW]
|
10
|
+
|
7
11
|
# Imports a service instance document into Seiso.
|
8
12
|
#
|
9
13
|
# Author:: Willie Wheeler (mailto:wwheeler@expedia.com)
|
@@ -11,30 +15,106 @@ module Seiso
|
|
11
15
|
# License:: Apache 2.0
|
12
16
|
class ServiceInstanceImporter < BaseImporter
|
13
17
|
|
14
|
-
def initialize(
|
15
|
-
|
16
|
-
|
18
|
+
def initialize(
|
19
|
+
service_instance_mapper,
|
20
|
+
uri_factory_v1,
|
21
|
+
uri_factory_v2,
|
22
|
+
seiso,
|
23
|
+
rest_connector_v1,
|
24
|
+
rest_connector_v2)
|
25
|
+
|
26
|
+
@service_instance_mapper = service_instance_mapper
|
17
27
|
@uri_factory_v1 = uri_factory_v1
|
28
|
+
@uri_factory_v2 = uri_factory_v2
|
29
|
+
@seiso = seiso
|
18
30
|
@rest_connector_v1 = rest_connector_v1
|
31
|
+
@rest_connector_v2 = rest_connector_v2
|
19
32
|
end
|
20
33
|
|
21
34
|
# Imports the service instance document
|
22
35
|
def import(doc)
|
23
|
-
|
24
|
-
|
25
|
-
|
36
|
+
sdm_service_instances = doc['items']
|
37
|
+
sdm_ports = detach_children(sdm_service_instances, 'serviceInstance', 'key', 'ports')
|
38
|
+
sdm_roles = detach_children(sdm_service_instances, 'serviceInstance', 'key', 'ipAddressRoles')
|
39
|
+
sdm_seyren_checks = detach_children(sdm_service_instances, 'serviceInstance', 'key', 'seyrenChecks')
|
26
40
|
|
27
|
-
|
41
|
+
import_service_instances sdm_service_instances
|
42
|
+
import_ports sdm_ports
|
43
|
+
import_ip_address_roles sdm_roles
|
44
|
+
import_seyren_checks sdm_seyren_checks
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def import_service_instances(sdm_service_instances)
|
50
|
+
seiso_service_instances = sdm_service_instances.map do |si|
|
51
|
+
@service_instance_mapper.seiso_service_instance si
|
52
|
+
end
|
28
53
|
service_instances_uri = @uri_factory_v1.service_instances_uri true
|
29
54
|
@rest_connector_v1.post(service_instances_uri, seiso_service_instances)
|
55
|
+
end
|
30
56
|
|
31
|
-
|
32
|
-
|
57
|
+
def import_ports(sdm_ports)
|
58
|
+
seiso_ports = sdm_ports.map do |p|
|
59
|
+
@service_instance_mapper.seiso_service_instance_port p
|
60
|
+
end
|
61
|
+
@seiso.post_items('service-instance-ports', seiso_ports)
|
62
|
+
end
|
33
63
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
64
|
+
def import_ip_address_roles(sdm_roles)
|
65
|
+
seiso_roles = sdm_roles.map do |r|
|
66
|
+
@service_instance_mapper.seiso_ip_address_role r
|
67
|
+
end
|
68
|
+
@seiso.post_items('ip-address-roles', seiso_roles)
|
69
|
+
end
|
70
|
+
|
71
|
+
def import_seyren_checks(sdm_checks)
|
72
|
+
puts "Importing Seyren checks"
|
73
|
+
|
74
|
+
# Group checks by service instance
|
75
|
+
checks_by_service_instance = {}
|
76
|
+
sdm_checks.each do |c|
|
77
|
+
si_key = c['serviceInstance']
|
78
|
+
checks = checks_by_service_instance[si_key]
|
79
|
+
if checks.nil?
|
80
|
+
checks = []
|
81
|
+
checks_by_service_instance[si_key] = checks
|
82
|
+
end
|
83
|
+
checks << c
|
84
|
+
end
|
85
|
+
|
86
|
+
# Iterate over service instances, posting the checks for each one.
|
87
|
+
# TODO Need to handle stale checks and separate POST/PUT
|
88
|
+
checks_by_service_instance.each do |si_key, si_checks|
|
89
|
+
puts "Importing Seyren checks: serviceInstance=#{si_key}"
|
90
|
+
|
91
|
+
# checks_uri is the Seiso collection resource for posting checks to a service instance
|
92
|
+
checks_uri = @uri_factory_v2.service_instance_seyren_checks_uri si_key
|
93
|
+
|
94
|
+
# Build the list of Seiso Seyren check URIs that we want to post to checks_uri
|
95
|
+
uri_list = []
|
96
|
+
si_checks.each do |sdm_check|
|
97
|
+
|
98
|
+
# Look up the Seiso Seyren check URI, since we don't know it in advance.
|
99
|
+
# If it exists, add it to the URI list.
|
100
|
+
seyren_base_url = sdm_check['baseUrl']
|
101
|
+
seyren_id = sdm_check['id']
|
102
|
+
search_uri = @uri_factory_v2.find_seyren_check_uri(seyren_base_url, seyren_id)
|
103
|
+
response = @rest_connector_v2.get search_uri
|
104
|
+
if response.code == "200"
|
105
|
+
seiso_check = JSON.parse response.body
|
106
|
+
uri_list << seiso_check['_links']['self']['href']
|
107
|
+
end
|
108
|
+
# TODO Log a warning or something if the response code is 404 or other problem.
|
109
|
+
end
|
110
|
+
|
111
|
+
# Post the URI list to checks_uri
|
112
|
+
@rest_connector_v2.post_uri_list(checks_uri, uri_list)
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
end # class ServiceInstanceImporter
|
118
|
+
end # module Importers
|
119
|
+
end # class ImportMaster
|
120
|
+
end # module Seiso
|
data/seiso-import_master.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "seiso-import_master"
|
7
|
-
spec.version = "0.0.
|
7
|
+
spec.version = "0.0.8"
|
8
8
|
spec.authors = ["Willie Wheeler"]
|
9
9
|
spec.email = ["wwheeler@expedia.com"]
|
10
10
|
spec.summary = "Imports Seiso data master files into Seiso."
|
@@ -22,6 +22,6 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency "bundler", "~> 1.7"
|
23
23
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
24
|
|
25
|
-
spec.add_runtime_dependency "seiso-connector", "~> 0.1.
|
25
|
+
spec.add_runtime_dependency "seiso-connector", "~> 0.1.6"
|
26
26
|
spec.add_runtime_dependency "require_all", "~> 1.3.2"
|
27
27
|
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.
|
4
|
+
version: 0.0.8
|
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-05-
|
11
|
+
date: 2015-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.1.
|
47
|
+
version: 0.1.6
|
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.
|
54
|
+
version: 0.1.6
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: require_all
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,9 +93,6 @@ files:
|
|
93
93
|
- lib/seiso/import_master/mappers/node_mapper.rb
|
94
94
|
- lib/seiso/import_master/mappers/service_instance_mapper.rb
|
95
95
|
- lib/seiso/import_master/mappers/service_mapper.rb
|
96
|
-
- lib/seiso/import_master/util/rest_connector.rb
|
97
|
-
- lib/seiso/import_master/util/uri_factory_v1.rb
|
98
|
-
- lib/seiso/import_master/util/uri_factory_v2.rb
|
99
96
|
- lib/seiso/import_master/validators/base_validator.rb
|
100
97
|
- lib/seiso/import_master/validators/node_validator.rb
|
101
98
|
- lib/seiso/import_master/validators/service_validator.rb
|
@@ -1,102 +0,0 @@
|
|
1
|
-
require "json"
|
2
|
-
require "net/http"
|
3
|
-
require "openssl"
|
4
|
-
|
5
|
-
module Seiso
|
6
|
-
class ImportMaster
|
7
|
-
module Util
|
8
|
-
|
9
|
-
# Author:: Willie Wheeler (mailto:wwheeler@expedia.com)
|
10
|
-
# Copyright:: Copyright (c) 2014-2015 Expedia, Inc.
|
11
|
-
# License:: Apache 2.0
|
12
|
-
class RestConnector
|
13
|
-
HN_ACCEPT = "Accept"
|
14
|
-
HN_CONTENT_TYPE = "Content-Type"
|
15
|
-
|
16
|
-
def initialize(host, port, use_ssl, ignore_cert, username, password, media_type)
|
17
|
-
@host = host
|
18
|
-
@port = port
|
19
|
-
@use_ssl = use_ssl
|
20
|
-
@ignore_cert = ignore_cert
|
21
|
-
@username = username
|
22
|
-
@password = password
|
23
|
-
@media_type = media_type
|
24
|
-
|
25
|
-
# FIXME Not secure
|
26
|
-
@verify_mode = OpenSSL::SSL::VERIFY_NONE if @use_ssl
|
27
|
-
end
|
28
|
-
|
29
|
-
def get(uri)
|
30
|
-
request = Net::HTTP::Get.new uri.request_uri
|
31
|
-
request[HN_ACCEPT] = @media_type
|
32
|
-
request.basic_auth(@username, @password)
|
33
|
-
do_request(http, request)
|
34
|
-
end
|
35
|
-
|
36
|
-
def post(uri, resource)
|
37
|
-
request = Net::HTTP::Post.new uri.request_uri
|
38
|
-
request[HN_CONTENT_TYPE] = @media_type
|
39
|
-
request.basic_auth(@username, @password)
|
40
|
-
request.body = resource.to_json
|
41
|
-
do_request(http, request)
|
42
|
-
end
|
43
|
-
|
44
|
-
# Puts all resources using a keepalive connection
|
45
|
-
def put_all(uri_resource_pairs)
|
46
|
-
Net::HTTP.start(
|
47
|
-
@host,
|
48
|
-
@port,
|
49
|
-
:use_ssl => @use_ssl,
|
50
|
-
:verify_mode => @verify_mode) do |http|
|
51
|
-
|
52
|
-
uri_resource_pairs.each do |pair|
|
53
|
-
pair_uri = pair['uri']
|
54
|
-
pair_resource = pair['resource']
|
55
|
-
request = Net::HTTP::Put.new pair_uri.request_uri
|
56
|
-
request[HN_CONTENT_TYPE] = @media_type
|
57
|
-
request.basic_auth(@username, @password)
|
58
|
-
request.body = pair_resource.to_json
|
59
|
-
do_request(http, request)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def put(uri, resource)
|
65
|
-
request = Net::HTTP::Put.new uri.request_uri
|
66
|
-
request[HN_CONTENT_TYPE] = @media_type
|
67
|
-
request.basic_auth(@username, @password)
|
68
|
-
request.body = resource.to_json
|
69
|
-
do_request(http, request)
|
70
|
-
end
|
71
|
-
|
72
|
-
def delete(uri)
|
73
|
-
puts "DELETE #{uri}"
|
74
|
-
request = Net::HTTP::Delete.new uri.request_uri
|
75
|
-
request.basic_auth(@username, @password)
|
76
|
-
do_request(http, request)
|
77
|
-
end
|
78
|
-
|
79
|
-
private
|
80
|
-
|
81
|
-
def http
|
82
|
-
# Not sure if I can reuse this, so for now I'm just creating a new one every time.
|
83
|
-
http = Net::HTTP.new(@host, @port)
|
84
|
-
http.use_ssl = @use_ssl
|
85
|
-
http.verify_mode = @verify_mode
|
86
|
-
http
|
87
|
-
end
|
88
|
-
|
89
|
-
def do_request(http, request)
|
90
|
-
response = http.request request
|
91
|
-
|
92
|
-
if response.code.start_with?("4") || response.code.start_with?("5")
|
93
|
-
details = "(#{JSON.parse response.body})"
|
94
|
-
end
|
95
|
-
puts "#{request.method} #{request.path} => #{response.code} #{response.message} #{details}"
|
96
|
-
response
|
97
|
-
end
|
98
|
-
|
99
|
-
end # class RestConnector
|
100
|
-
end # module Util
|
101
|
-
end # class ImportMaster
|
102
|
-
end # module Seiso
|
@@ -1,61 +0,0 @@
|
|
1
|
-
require "uri"
|
2
|
-
|
3
|
-
module Seiso
|
4
|
-
class ImportMaster
|
5
|
-
module Util
|
6
|
-
|
7
|
-
# Seiso API v1 URI factory.
|
8
|
-
#
|
9
|
-
# URI templating (embodied here) is a temporary strategy for obtaining URIs. The plan is
|
10
|
-
# to adopt something like a Traverson-style strategy.
|
11
|
-
#
|
12
|
-
# Author:: Willie Wheeler (mailto:wwheeler@expedia.com)
|
13
|
-
# Copyright:: Copyright (c) 2014-2015 Expedia, Inc.
|
14
|
-
# License:: Apache 2.0
|
15
|
-
class UriFactoryV1
|
16
|
-
|
17
|
-
def initialize(base_uri)
|
18
|
-
@base_uri = base_uri
|
19
|
-
end
|
20
|
-
|
21
|
-
def nodes_uri(batch)
|
22
|
-
if batch
|
23
|
-
uri "/nodes?mode=batch"
|
24
|
-
else
|
25
|
-
uri "/nodes"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def node_uri(name)
|
30
|
-
uri "/nodes/#{name}"
|
31
|
-
end
|
32
|
-
|
33
|
-
def node_ip_address_uri(node_name, ip_address)
|
34
|
-
uri "/nodes/#{node_name}/ip-addresses/#{ip_address}"
|
35
|
-
end
|
36
|
-
|
37
|
-
def services_uri(batch)
|
38
|
-
if batch
|
39
|
-
uri "/services?mode=batch"
|
40
|
-
else
|
41
|
-
uri "/services"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def service_instances_uri(batch)
|
46
|
-
if batch
|
47
|
-
uri "/service-instances?mode=batch"
|
48
|
-
else
|
49
|
-
uri "/service-instances"
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
def uri(path)
|
56
|
-
URI.parse "#{@base_uri}#{path}"
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require "uri"
|
2
|
-
|
3
|
-
module Seiso
|
4
|
-
class ImportMaster
|
5
|
-
module Util
|
6
|
-
|
7
|
-
# Seiso API v2 URI factory.
|
8
|
-
#
|
9
|
-
# URI templating (embodied here) is a temporary strategy for obtaining URIs. The plan is
|
10
|
-
# to adopt something like a Traverson-style strategy.
|
11
|
-
#
|
12
|
-
# Author:: Willie Wheeler (mailto:wwheeler@expedia.com)
|
13
|
-
# Copyright:: Copyright (c) 2014-2015 Expedia, Inc.
|
14
|
-
# License:: Apache 2.0
|
15
|
-
class UriFactoryV2
|
16
|
-
|
17
|
-
def initialize(base_uri)
|
18
|
-
@base_uri = base_uri
|
19
|
-
end
|
20
|
-
|
21
|
-
def doc_links_uri(service_key)
|
22
|
-
uri "/services/#{service_key}/doc-links"
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def uri(path)
|
28
|
-
URI.parse "#{@base_uri}#{path}"
|
29
|
-
end
|
30
|
-
|
31
|
-
end # class UriFactoryV2
|
32
|
-
end # module Util
|
33
|
-
end # class ImportMaster
|
34
|
-
end # module Seiso
|