Skip to content

Commit ff70366

Browse files
committed
Merge branch 'develop'
2 parents 25f4ca0 + 3f63528 commit ff70366

File tree

6 files changed

+76
-2
lines changed

6 files changed

+76
-2
lines changed

Gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,14 @@ GEM
104104
minitest (>= 5.1)
105105
tzinfo (~> 2.0)
106106
zeitwerk (~> 2.3)
107-
addressable (2.8.5)
107+
addressable (2.8.6)
108108
public_suffix (>= 2.0.2, < 6.0)
109109
ancestry (4.3.3)
110110
activerecord (>= 5.2.6)
111111
ast (2.4.2)
112112
awesome_print (1.9.2)
113113
aws-eventstream (1.3.0)
114-
aws-partitions (1.863.0)
114+
aws-partitions (1.867.0)
115115
aws-sdk-core (3.190.0)
116116
aws-eventstream (~> 1, >= 1.3.0)
117117
aws-partitions (~> 1, >= 1.651.0)

core/app/controllers/uffizzi_core/api/cli/v1/projects/clusters_controller.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,14 @@ def show
6060
respond_with resource_cluster
6161
end
6262

63+
def sync
64+
cluster_form = resource_cluster.becomes(UffizziCore::Api::Cli::V1::Cluster::SyncForm)
65+
cluster_form.sync_status
66+
cluster_form.save
67+
68+
respond_with cluster_form
69+
end
70+
6371
def destroy
6472
resource_cluster.disable!
6573

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# frozen_string_literal: true
2+
3+
class UffizziCore::Api::Cli::V1::Cluster::SyncForm < UffizziCore::Cluster
4+
include UffizziCore::ApplicationForm
5+
6+
permit :state
7+
8+
def sync_status
9+
cluster_data = UffizziCore::ControllerService.show_cluster(self)
10+
11+
asleep_in_cluster = cluster_data.status.sleep
12+
return unless deployed? || scaled_down?
13+
return if actual_status?(asleep_in_cluster)
14+
15+
self.state = asleep_in_cluster ? UffizziCore::Cluster::STATE_SCALED_DOWN : UffizziCore::Cluster::STATE_DEPLOYED
16+
17+
self
18+
end
19+
20+
private
21+
22+
def actual_status?(asleep_in_cluster)
23+
(asleep_in_cluster && scaled_down?) || (!asleep_in_cluster && deployed?)
24+
end
25+
end

core/app/policies/uffizzi_core/api/cli/v1/projects/clusters_policy.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ def scale_up?
2121
context.user_access_module.admin_or_developer_access_to_project?(context.user, context.project)
2222
end
2323

24+
def sync?
25+
context.user_access_module.admin_or_developer_access_to_project?(context.user, context.project)
26+
end
27+
2428
def destroy?
2529
context.user_access_module.admin_or_developer_access_to_project?(context.user, context.project)
2630
end

core/config/routes.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
member do
1515
put :scale_down
1616
put :scale_up
17+
put :sync
1718
end
1819
scope module: :clusters do
1920
resources :ingresses, only: ['index']

core/test/controllers/uffizzi_core/api/cli/v1/projects/clusters_controller_test.rb

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,42 @@ class UffizziCore::Api::Cli::V1::Projects::ClustersControllerTest < ActionContro
253253
assert_requested(stubbed_cluster_request)
254254
end
255255

256+
test '#sync when the data is actual' do
257+
sign_in(@admin)
258+
cluster = create(:cluster, project: @project, deployed_by: @admin, name: 'test', state: UffizziCore::Cluster::STATE_DEPLOYED)
259+
260+
cluster_show_data = json_fixture('files/controller/cluster_awake.json')
261+
stubbed_cluster_request = stub_get_cluster_request(cluster_show_data)
262+
263+
params = {
264+
project_slug: @project.slug,
265+
name: cluster.name,
266+
}
267+
268+
put :sync, params: params, format: :json
269+
270+
assert_requested(stubbed_cluster_request)
271+
assert(cluster.reload.deployed?)
272+
end
273+
274+
test '#sync when the data needs to be updated' do
275+
sign_in(@admin)
276+
cluster = create(:cluster, project: @project, deployed_by: @admin, name: 'test', state: UffizziCore::Cluster::STATE_DEPLOYED)
277+
278+
cluster_show_data = json_fixture('files/controller/cluster_asleep.json')
279+
stubbed_cluster_request = stub_get_cluster_request(cluster_show_data)
280+
281+
params = {
282+
project_slug: @project.slug,
283+
name: cluster.name,
284+
}
285+
286+
put :sync, params: params, format: :json
287+
288+
assert_requested(stubbed_cluster_request)
289+
assert(cluster.reload.scaled_down?)
290+
end
291+
256292
test '#destroy developer can destroy a cluster created by him' do
257293
sign_in(@developer)
258294

0 commit comments

Comments
 (0)