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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65d5602bfed712c59cc8c2dba6c00e13f782d42155dabed11a3483f57d52ee8e
4
- data.tar.gz: 0ebe8e6a7404fa178b7b57c0fe9c299d3993488a055fd8f005911d5b181618c9
3
+ metadata.gz: 6cd69b21925e436f3158eb380dc08df99280f918f6e874a1983ecd34bf384745
4
+ data.tar.gz: 046174aa1e2aabb0d5e631102622dbfc35fb8e314fe17bb92232d297c4eddc02
5
5
  SHA512:
6
- metadata.gz: 0773bea047fca72dc0316252a8e4d67ccd5de7088b82833fef789882c8526928a54a6229a9da4854dbecb802e9e1dedc5edf1ce6e54d9a7389f8c3b8bd0d71a7
7
- data.tar.gz: e7ec43aa67c41d17d5f8735d83f1601a55eb3b728a411b82cabe5fa117a69221c6b7e1f432dd9ca220105669932cd117c349aa18139000b236d19d1a604b63df
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?(route)
34
- routes && routes.include?(route)
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
- related_resource = find_related_resource(resource, remote_resources)
39
- if related_resource && need_update?(resource, related_resource)
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, related_resource)
42
- elsif related_resource && need_update_dependencies?(resource, related_resource)
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, related_resource)
45
- elsif related_resource
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, related_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, related_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, related_resource)
61
- http_client.put("#{resource_name}/#{related_resource.id}", resource.api_attributes.to_json) if need_update?(resource, related_resource)
62
- update_dependencies(http_client, resource, related_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, related_resource)
66
- puts "-> Cleanup #{related_resource.class.name} (#{related_resource.identifier}).".colorize(:magenta)
67
- http_client.delete("#{resource_name}/#{related_resource.id}")
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, related_resource)
100
- resource != related_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, related_resource)
104
- need_update_plugins?(resource, related_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, related_resource)
108
- resource.nil? || need_cleanup_plugins?(resource, related_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, remote_resource)
116
- create_plugins(http_client, local_resource, remote_resource)
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, remote_resource)
120
- create_plugins(http_client, local_resource, remote_resource)
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, remote_resource)
124
- puts "-> Cleanup dependencies #{remote_resource.class.name} (#{remote_resource.identifier}).".colorize(:magenta)
125
- cleanup_plugins(http_client, local_resource, remote_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, related_resource)
135
+ def need_update_plugins?(resource, related_remote_resource)
137
136
  resource.plugins.reject do |plugin|
138
- find_related_resource(plugin, related_resource.plugins)
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, related_resource)
142
+ def need_cleanup_plugins?(resource, related_remote_resource)
143
143
  resource.plugins.reject do |plugin|
144
- find_related_resource(plugin, related_resource.plugins)
145
- end.size == 0 && resource.plugins.size < related_resource.plugins.size
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 create_plugins(http_client, local_resource, remote_resource)
149
+ def create_or_update_plugins(http_client, local_resource, remote_resource)
149
150
  local_resource.plugins.each do |plugin|
150
- unless find_related_resource(plugin, remote_resource.plugins)
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, related_resource)
4
- super(http_client, resource, related_resource)
5
- create_routes(http_client, resource, related_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, related_resource)
9
- super(http_client, resource, related_resource)
10
- create_routes(http_client, resource, related_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, related_resource)
14
- super(http_client, resource, related_resource)
15
- cleanup_routes(http_client, resource, related_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, related_resource)
19
- super(resource, related_resource) || resource.nil? || resource.routes != related_resource.routes
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, related_resource)
23
- super(resource, related_resource) || (resource && (resource.routes != related_resource.routes))
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, related_resource)
28
+ def create_routes(http_client, resource, related_remote_resource)
29
29
  resource.routes.each do |route|
30
- unless related_resource.has_route?(route)
31
- http_client.post("#{resource_name}/#{related_resource.identifier}/routes", route.api_attributes.to_json)
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
@@ -1,3 +1,3 @@
1
1
  module Kongfigure
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kongfigure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ibanity