kongfigure 0.0.5 → 0.0.6
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/lib/kongfigure/resources/service.rb +10 -2
- data/lib/kongfigure/services/base.rb +39 -35
- data/lib/kongfigure/services/service.rb +16 -16
- data/lib/kongfigure/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6cd69b21925e436f3158eb380dc08df99280f918f6e874a1983ecd34bf384745
|
4
|
+
data.tar.gz: 046174aa1e2aabb0d5e631102622dbfc35fb8e314fe17bb92232d297c4eddc02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a8d55cc46a111603ed2ff4f8f8dadc4079f4e3ea4d2232bdcec34e8ad708726c6b8c4151da4058b7d265bff6625bbb2fb3535190201458447ea5d212e6e0d59
|
7
|
+
data.tar.gz: b7ef072b73c0e643b88eecbdabe0ae33890ea8c69531e97848a5d5cad146983de4a8252c09615f3d9f292e9acbd7d070b4c52d1900ab0f3e0823d371b2123846
|
@@ -30,8 +30,16 @@ module Kongfigure::Resources
|
|
30
30
|
name
|
31
31
|
end
|
32
32
|
|
33
|
-
def has_route?(
|
34
|
-
routes && routes.
|
33
|
+
def has_route?(other_route)
|
34
|
+
routes && routes.find do |route|
|
35
|
+
other_route == route
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def has_routes?(other_routes)
|
40
|
+
other_routes.reject do |other_route|
|
41
|
+
has_route?(other_route)
|
42
|
+
end.size == 0
|
35
43
|
end
|
36
44
|
|
37
45
|
def api_attributes
|
@@ -35,36 +35,36 @@ module Kongfigure::Services
|
|
35
35
|
|
36
36
|
def create_or_update(http_client, resource, remote_resources)
|
37
37
|
handle_api_errors do
|
38
|
-
|
39
|
-
if
|
38
|
+
related_remote_resource = find_related_resource(resource, remote_resources)
|
39
|
+
if related_remote_resource && need_update?(resource, related_remote_resource)
|
40
40
|
puts "-> Update #{resource.class.name} (#{resource.identifier}).".colorize(:light_blue)
|
41
|
-
update(http_client, resource,
|
42
|
-
elsif
|
41
|
+
update(http_client, resource, related_remote_resource)
|
42
|
+
elsif related_remote_resource && need_update_dependencies?(resource, related_remote_resource)
|
43
43
|
puts "-> Update dependencies #{resource.class.name} (#{resource.identifier}).".colorize(:light_blue)
|
44
|
-
update_dependencies(http_client, resource,
|
45
|
-
elsif
|
44
|
+
update_dependencies(http_client, resource, related_remote_resource)
|
45
|
+
elsif related_remote_resource
|
46
46
|
#noop
|
47
47
|
else
|
48
48
|
puts "-> Create #{resource.class.name} (#{resource.identifier}).".colorize(:green)
|
49
|
-
create(http_client, resource,
|
49
|
+
create(http_client, resource, related_remote_resource)
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
-
def create(http_client, resource,
|
54
|
+
def create(http_client, resource, _related_remote_resource)
|
55
55
|
module_name = Kongfigure::Resources.const_get(self.class.to_s.split("::").last)
|
56
56
|
data = http_client.post("#{resource_name}", resource.api_attributes.to_json)
|
57
57
|
create_dependencies(http_client, resource, module_name.build(data))
|
58
58
|
end
|
59
59
|
|
60
|
-
def update(http_client, resource,
|
61
|
-
http_client.put("#{resource_name}/#{
|
62
|
-
update_dependencies(http_client, resource,
|
60
|
+
def update(http_client, resource, related_remote_resource)
|
61
|
+
http_client.put("#{resource_name}/#{related_remote_resource.id}", resource.api_attributes.to_json) if need_update?(resource, related_resource)
|
62
|
+
update_dependencies(http_client, resource, related_remote_resource)
|
63
63
|
end
|
64
64
|
|
65
|
-
def cleanup(http_client, resource,
|
66
|
-
puts "-> Cleanup #{
|
67
|
-
http_client.delete("#{resource_name}/#{
|
65
|
+
def cleanup(http_client, resource, related_remote_resource)
|
66
|
+
puts "-> Cleanup #{related_remote_resource.class.name} (#{related_remote_resource.identifier}).".colorize(:magenta)
|
67
|
+
http_client.delete("#{resource_name}/#{related_remote_resource.id}")
|
68
68
|
end
|
69
69
|
|
70
70
|
def cleanup_useless_resources(http_client, local_resources, remote_resources)
|
@@ -72,7 +72,6 @@ module Kongfigure::Services
|
|
72
72
|
related_local_resource = find_related_resource(remote_resource, local_resources)
|
73
73
|
handle_api_errors do
|
74
74
|
if need_cleanup_dependencies?(related_local_resource, remote_resource)
|
75
|
-
|
76
75
|
cleanup_dependencies(http_client, related_local_resource, remote_resource)
|
77
76
|
end
|
78
77
|
unless related_local_resource
|
@@ -96,33 +95,33 @@ module Kongfigure::Services
|
|
96
95
|
end
|
97
96
|
end
|
98
97
|
|
99
|
-
def need_update?(resource,
|
100
|
-
resource !=
|
98
|
+
def need_update?(resource, related_remote_resource)
|
99
|
+
resource != related_remote_resource
|
101
100
|
end
|
102
101
|
|
103
|
-
def need_update_dependencies?(resource,
|
104
|
-
need_update_plugins?(resource,
|
102
|
+
def need_update_dependencies?(resource, related_remote_resource)
|
103
|
+
need_update_plugins?(resource, related_remote_resource)
|
105
104
|
end
|
106
105
|
|
107
|
-
def need_cleanup_dependencies?(resource,
|
108
|
-
resource.nil? || need_cleanup_plugins?(resource,
|
106
|
+
def need_cleanup_dependencies?(resource, related_remote_resource)
|
107
|
+
resource.nil? || need_cleanup_plugins?(resource, related_remote_resource)
|
109
108
|
end
|
110
109
|
|
111
110
|
def has_plugins?(resource)
|
112
111
|
resource.plugins && resource.plugins.size > 0
|
113
112
|
end
|
114
113
|
|
115
|
-
def update_dependencies(http_client, local_resource,
|
116
|
-
|
114
|
+
def update_dependencies(http_client, local_resource, related_remote_resource)
|
115
|
+
create_or_update_plugins(http_client, local_resource, related_remote_resource)
|
117
116
|
end
|
118
117
|
|
119
|
-
def create_dependencies(http_client, local_resource,
|
120
|
-
|
118
|
+
def create_dependencies(http_client, local_resource, related_remote_resource)
|
119
|
+
create_or_update_plugins(http_client, local_resource, related_remote_resource)
|
121
120
|
end
|
122
121
|
|
123
|
-
def cleanup_dependencies(http_client, local_resource,
|
124
|
-
puts "-> Cleanup dependencies #{
|
125
|
-
cleanup_plugins(http_client, local_resource,
|
122
|
+
def cleanup_dependencies(http_client, local_resource, related_remote_resource)
|
123
|
+
puts "-> Cleanup dependencies #{related_remote_resource.class.name} (#{related_remote_resource.identifier}).".colorize(:magenta)
|
124
|
+
cleanup_plugins(http_client, local_resource, related_remote_resource)
|
126
125
|
end
|
127
126
|
|
128
127
|
def handle_api_errors(&block)
|
@@ -133,21 +132,26 @@ module Kongfigure::Services
|
|
133
132
|
end
|
134
133
|
end
|
135
134
|
|
136
|
-
def need_update_plugins?(resource,
|
135
|
+
def need_update_plugins?(resource, related_remote_resource)
|
137
136
|
resource.plugins.reject do |plugin|
|
138
|
-
find_related_resource(plugin,
|
137
|
+
related_plugin = find_related_resource(plugin, related_remote_resource.plugins)
|
138
|
+
related_plugin && plugin == related_plugin
|
139
139
|
end.size != 0
|
140
140
|
end
|
141
141
|
|
142
|
-
def need_cleanup_plugins?(resource,
|
142
|
+
def need_cleanup_plugins?(resource, related_remote_resource)
|
143
143
|
resource.plugins.reject do |plugin|
|
144
|
-
find_related_resource(plugin,
|
145
|
-
|
144
|
+
related_remote_plugin = find_related_resource(plugin, related_remote_resource.plugins)
|
145
|
+
related_remote_plugin && plugin == related_remote_plugin
|
146
|
+
end.size == 0 && resource.plugins.size < related_remote_resource.plugins.size
|
146
147
|
end
|
147
148
|
|
148
|
-
def
|
149
|
+
def create_or_update_plugins(http_client, local_resource, remote_resource)
|
149
150
|
local_resource.plugins.each do |plugin|
|
150
|
-
|
151
|
+
related_plugin = find_related_resource(plugin, remote_resource.plugins)
|
152
|
+
if related_plugin
|
153
|
+
http_client.patch("#{resource_name}/#{local_resource.identifier}/plugins/#{related_plugin.id}", plugin.api_attributes.to_json)
|
154
|
+
else
|
151
155
|
http_client.post("#{resource_name}/#{local_resource.identifier}/plugins", plugin.api_attributes.to_json)
|
152
156
|
end
|
153
157
|
end
|
@@ -1,34 +1,34 @@
|
|
1
1
|
module Kongfigure::Services
|
2
2
|
class Service < Base
|
3
|
-
def create_dependencies(http_client, resource,
|
4
|
-
super(http_client, resource,
|
5
|
-
create_routes(http_client, resource,
|
3
|
+
def create_dependencies(http_client, resource, related_remote_resource)
|
4
|
+
super(http_client, resource, related_remote_resource)
|
5
|
+
create_routes(http_client, resource, related_remote_resource)
|
6
6
|
end
|
7
7
|
|
8
|
-
def update_dependencies(http_client, resource,
|
9
|
-
super(http_client, resource,
|
10
|
-
create_routes(http_client, resource,
|
8
|
+
def update_dependencies(http_client, resource, related_remote_resource)
|
9
|
+
super(http_client, resource, related_remote_resource)
|
10
|
+
create_routes(http_client, resource, related_remote_resource)
|
11
11
|
end
|
12
12
|
|
13
|
-
def cleanup_dependencies(http_client, resource,
|
14
|
-
super(http_client, resource,
|
15
|
-
cleanup_routes(http_client, resource,
|
13
|
+
def cleanup_dependencies(http_client, resource, related_remote_resource)
|
14
|
+
super(http_client, resource, related_remote_resource)
|
15
|
+
cleanup_routes(http_client, resource, related_remote_resource)
|
16
16
|
end
|
17
17
|
|
18
|
-
def need_cleanup_dependencies?(resource,
|
19
|
-
super(resource,
|
18
|
+
def need_cleanup_dependencies?(resource, related_remote_resource)
|
19
|
+
super(resource, related_remote_resource) || resource.nil? || resource.routes != related_remote_resource.routes
|
20
20
|
end
|
21
21
|
|
22
|
-
def need_update_dependencies?(resource,
|
23
|
-
super(resource,
|
22
|
+
def need_update_dependencies?(resource, related_remote_resource)
|
23
|
+
super(resource, related_remote_resource) || (resource && !related_remote_resource.has_routes?(resource.routes))
|
24
24
|
end
|
25
25
|
|
26
26
|
private
|
27
27
|
|
28
|
-
def create_routes(http_client, resource,
|
28
|
+
def create_routes(http_client, resource, related_remote_resource)
|
29
29
|
resource.routes.each do |route|
|
30
|
-
unless
|
31
|
-
http_client.post("#{resource_name}/#{
|
30
|
+
unless related_remote_resource.has_route?(route)
|
31
|
+
http_client.post("#{resource_name}/#{related_remote_resource.identifier}/routes", route.api_attributes.to_json)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
data/lib/kongfigure/version.rb
CHANGED