Skip to content

Commit

Permalink
[339] added spinner for scaling down
Browse files Browse the repository at this point in the history
  • Loading branch information
moklidia committed Oct 9, 2023
1 parent 299e6d1 commit 27009ab
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 5 deletions.
12 changes: 7 additions & 5 deletions lib/uffizzi/cli/cluster.rb
Original file line number Diff line number Diff line change
Expand Up @@ -247,12 +247,14 @@ def handle_sleep_command(project_slug, command_args)
return handle_missing_cluster_name_error if cluster_name.nil?

response = scale_down_cluster(ConfigFile.read_option(:server), project_slug, cluster_name)
return ResponseHelper.handle_failed_response(response) unless ResponseHelper.ok?(response)

if ResponseHelper.ok?(response)
Uffizzi.ui.say("Cluster #{cluster_name} was successfully scaled down")
else
ResponseHelper.handle_failed_response(response)
end
spinner = TTY::Spinner.new("[:spinner] Scaling down cluster #{cluster_name}...", format: :dots)
spinner.auto_spin
ClusterService.wait_cluster_scale_down(project_slug, cluster_name)

spinner.success
Uffizzi.ui.say("Cluster #{cluster_name} was successfully scaled down")
end

def handle_wake_command(project_slug, command_args)
Expand Down
22 changes: 22 additions & 0 deletions lib/uffizzi/services/cluster_service.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
# frozen_string_literal: true

require 'uffizzi/clients/api/api_client'
require 'byebug'

class ClusterService
CLUSTER_STATE_DEPLOYING_NAMESPACE = 'deploying_namespace'
CLUSTER_STATE_DEPLOYING = 'deploying'
CLUSTER_STATE_DEPLOYED = 'deployed'
CLUSTER_STATE_SCALING_DOWN = 'scaling_down'
CLUSTER_STATE_SCALING_UP = 'scaling_up'
CLUSTER_FAILED_SCALING_UP = 'failed_scaling_up'
CLUSTER_STATE_FAILED_DEPLOY_NAMESPACE = 'failed_deploy_namespace'
Expand All @@ -32,6 +34,10 @@ def scaling_up?(cluster_state)
cluster_state === CLUSTER_STATE_SCALING_UP
end

def scaling_down?(cluster_state)
cluster_state === CLUSTER_STATE_SCALING_DOWN
end

def failed_scaling_up?(cluster_state)
cluster_state === CLUSTER_FAILED_SCALING_UP
end
Expand Down Expand Up @@ -69,6 +75,22 @@ def wait_cluster_scale_up(project_slug, cluster_name)
end
end

def wait_cluster_scale_down(project_slug, cluster_name)
loop do
params = {
cluster_name: cluster_name,
}
response = get_cluster(Uffizzi::ConfigFile.read_option(:server), project_slug, params)
return Uffizzi::ResponseHelper.handle_failed_response(response) unless Uffizzi::ResponseHelper.ok?(response)

cluster_data = response.dig(:body, :cluster)

return unless scaling_down?(cluster_data[:state])

sleep(3)
end
end

def generate_name
name = Faker::Internet.domain_word[0..CLUSTER_NAME_MAX_LENGTH]

Expand Down
10 changes: 10 additions & 0 deletions test/fixtures/files/uffizzi/uffizzi_cluster_scaled_down.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"cluster": {
"id": 1,
"name": "uffizzi-test-cluster-vcluster",
"state": "scaled_down",
"created_at": "2023-07-15T15:33:41.590Z",
"host": "some-host.cluster.com",
"kubeconfig": "YXBpVmVyc2lvbjogdjEKY2x1c3RlcnM6Ci0gY2x1c3RlcjoKICAgIGNlcnRpZmljYXRlLWF1dGhvcml0eS1kYXRhOiBMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VKa2VrTkRRVkl5WjBGM1NVSkJaMGxDUVVSQlMwSm5aM0ZvYTJwUFVGRlJSRUZxUVdwTlUwVjNTSGRaUkZaUlVVUkVRbWh5VFROTmRHTXlWbmtLWkcxV2VVeFhUbWhSUkVVeVQwUlpORTVFUlhkTlJFRjNTR2hqVGsxcVRYZE9ha1V4VFZSUk1VNXFVWGRYYUdOT1RYcE5kMDVxUlhsTlZGRXhUbXBSZHdwWGFrRnFUVk5GZDBoM1dVUldVVkZFUkVKb2NrMHpUWFJqTWxaNVpHMVdlVXhYVG1oUlJFVXlUMFJaTkU1RVJYZE5SRUYzVjFSQlZFSm5ZM0ZvYTJwUENsQlJTVUpDWjJkeGFHdHFUMUJSVFVKQ2QwNURRVUZTZEhac2FqUjJlakl4T0VSMWVFdFNkVlp6Y0VFNVZ6WkpNSHBTTkZweEwxcHVTWEk0T0hsaGJYVUtVMHRZUlRsa1QzbGtlRlZzWVRWeVUyVjBXVkUyTmsxeGFtWkJlVFp4TkhSbFpXWXdjMjFwVkhGYWVtdHZNRWwzVVVSQlQwSm5UbFpJVVRoQ1FXWTRSUXBDUVUxRFFYRlJkMFIzV1VSV1VqQlVRVkZJTDBKQlZYZEJkMFZDTDNwQlpFSm5UbFpJVVRSRlJtZFJWVFpIWWxGU05rbHhNVTFrU2twS2FFdHVkREZVQ25FMU1XWkNhSGQzUTJkWlNVdHZXa2w2YWpCRlFYZEpSRk5CUVhkU1VVbG9RVWs1Y0N0UlRXWjJibU5UZFRnd1JrUnBjblZ6U1ZsUEswNW9aSFZ4TjNNS2QyOHdNRFJWYzJ4NmJYTkhRV2xCZUdKNVZVUTVSMDQzYjJKbVMzWTNTa3g1TDAxMFFUbFhMMDU2T0dFdlVrNDBaSFJaYWxWdk5qYzVRVDA5Q2kwdExTMHRSVTVFSUVORlVsUkpSa2xEUVZSRkxTMHRMUzBLCiAgICBzZXJ2ZXI6IGh0dHBzOi8vbG9jYWxob3N0Ojg0NDMKICBuYW1lOiBteS12Y2x1c3Rlcgpjb250ZXh0czoKLSBjb250ZXh0OgogICAgY2x1c3RlcjogbXktdmNsdXN0ZXIKICAgIG5hbWVzcGFjZTogZGVmYXVsdAogICAgdXNlcjogbXktdmNsdXN0ZXIKICBuYW1lOiBteS12Y2x1c3RlcgpjdXJyZW50LWNvbnRleHQ6IG15LXZjbHVzdGVyCmtpbmQ6IENvbmZpZwpwcmVmZXJlbmNlczoge30KdXNlcnM6Ci0gbmFtZTogbXktdmNsdXN0ZXIKICB1c2VyOgogICAgY2xpZW50LWNlcnRpZmljYXRlLWRhdGE6IExTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVUpyYWtORFFWUmxaMEYzU1VKQlowbEpRMkZqWmpCRksySnNTRzkzUTJkWlNVdHZXa2w2YWpCRlFYZEpkMGw2UldoTlFqaEhRVEZWUlVGM2Qxa0tZWHBPZWt4WFRuTmhWMVoxWkVNeGFsbFZRWGhPYW1jeVQwUlJlRTFFUVhkTlFqUllSRlJKZWsxRVdYaE9WRVV3VGxSWk1FMUdiMWhFVkVrd1RVUlplQXBPUkVVd1RsUlpNRTFHYjNkTlJFVllUVUpWUjBFeFZVVkRhRTFQWXpOc2VtUkhWblJQYlRGb1l6TlNiR051VFhoR1ZFRlVRbWRPVmtKQlRWUkVTRTQxQ21NelVteGlWSEJvV2tjeGNHSnFRbHBOUWsxSFFubHhSMU5OTkRsQlowVkhRME54UjFOTk5EbEJkMFZJUVRCSlFVSkVjMHBJTWtsck5XMUlPVkJVVW1VS2NuQmxlbFJHZVZWWk1GaGxRbVJxSzFkTE9HMVZNWE51U21KTWJGbG9ibEJHU201dlpFbG1lVVJ6UzFaVmJ6bHFiRmhTYlZweGFtOWhUMUI0UzNZMFFncGFaVXd2UWpWdGFsTkVRa2ROUVRSSFFURlZaRVIzUlVJdmQxRkZRWGRKUm05RVFWUkNaMDVXU0ZOVlJVUkVRVXRDWjJkeVFtZEZSa0pSWTBSQmFrRm1Da0puVGxaSVUwMUZSMFJCVjJkQ1VVbDBaRUZIUm1SSWVEZzBUbFZRYTBWTllUSTNXRWxIWkdoS1ZFRkxRbWRuY1docmFrOVFVVkZFUVdkT1NrRkVRa2NLUVdsRlFYaHZSVU5EV0haNFJrWnhhSEpaYUZoeVZFMURWVlprVFVkaUsybFVZbkYyU1hKVE1TOVlaRFI2ZUhORFNWRkVXRzV5WmxOd2NsY3phVkJHVVFwa01XMUJiVzlLVkROVGQybHZUVTR4UlZCb00ya3lhMHRCVUdWcWNXYzlQUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDaTB0TFMwdFFrVkhTVTRnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUXBOU1VsQ1pIcERRMEZTTW1kQmQwbENRV2RKUWtGRVFVdENaMmR4YUd0cVQxQlJVVVJCYWtGcVRWTkZkMGgzV1VSV1VWRkVSRUpvY2swelRYUlpNbmh3Q2xwWE5UQk1WMDVvVVVSRk1rOUVXVFJPUkVWM1RVUkJkMGhvWTA1TmFrMTNUbXBGTVUxVVVURk9hbEYzVjJoalRrMTZUWGRPYWtWNVRWUlJNVTVxVVhjS1YycEJhazFUUlhkSWQxbEVWbEZSUkVSQ2FISk5NMDEwV1RKNGNGcFhOVEJNVjA1b1VVUkZNazlFV1RST1JFVjNUVVJCZDFkVVFWUkNaMk54YUd0cVR3cFFVVWxDUW1kbmNXaHJhazlRVVUxQ1FuZE9RMEZCVVZVM2NGUXllRkp3U2pBd1lVdEVUMXB2WVZaWVZqSXZhR0Z1TDJsRGEzZ3pZM2t3WWpOUmF6aHpDalZTWTBSVlNFNURXVGRPUVZOaEt6VlNRekZNVGpOd1VFTm9hREl5WkRWSGNEWXhiVTVvUzBaYWNtMXNiekJKZDFGRVFVOUNaMDVXU0ZFNFFrRm1PRVVLUWtGTlEwRnhVWGRFZDFsRVZsSXdWRUZSU0M5Q1FWVjNRWGRGUWk5NlFXUkNaMDVXU0ZFMFJVWm5VVlZEVEZoUlFtaFlVamhtVDBSV1JEVkNSRWQwZFFveGVVSnVXVk5WZDBObldVbExiMXBKZW1vd1JVRjNTVVJUUVVGM1VsRkphRUZLVFc5SGRISlllWEF2ZWtwNWNYRTROVkZEV1VaVVpWb3dTVzF3TnpJNENrbFRRMDVSZFNzelQwVmpSMEZwUW1OdWFYZERVMGRWT1c1M09VTmpkRWRvUlZWeFQyWlROUzlhVVRKSU5sUk5RMGxqWmxseFVFVk5XWGM5UFFvdExTMHRMVVZPUkNCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2c9PQogICAgY2xpZW50LWtleS1kYXRhOiBMUzB0TFMxQ1JVZEpUaUJGUXlCUVVrbFdRVlJGSUV0RldTMHRMUzB0Q2sxSVkwTkJVVVZGU1VJM1ZGaE1NblpMVVdZNFRVNXhhR3B2VUhKdVJrTkhPVEZyVldSa2NYcGhPQ3M0WkRsSVpERTVVemR2UVc5SFEwTnhSMU5OTkRrS1FYZEZTRzlWVVVSUlowRkZUM2RyWmxscFZHMVpaakE1VGtZMmRXdzNUazFZU2xKcVVtUTBSakpRTlZseWVWcFVWM2xqYkhOMVZtbEhZemhWYldWb01BcG9MMGxQZDNCV1Uyb3lUMVprUjFwdGNVOW9ielF2UlhFdlowWnNOSFk0U0cxUlBUMEtMUzB0TFMxRlRrUWdSVU1nVUZKSlZrRlVSU0JMUlZrdExTMHRMUW89Cg=="
}
}
7 changes: 7 additions & 0 deletions test/uffizzi/cli/cluster_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -479,9 +479,13 @@ def test_scale_down_cluster
cluster_name: cluster_name,
)

cluster_get_body = json_fixture('files/uffizzi/uffizzi_cluster_scaled_down.json')
stubbed_uffizzi_cluster_get_request = stub_get_cluster_request(cluster_get_body, @project_slug)

@cluster.sleep(cluster_name)

assert_requested(stubbed_uffizzi_cluster_scale_down_request)
assert_requested(stubbed_uffizzi_cluster_get_request)
end

def test_scale_down_cluster_from_context
Expand All @@ -494,10 +498,13 @@ def test_scale_down_cluster_from_context
@project_slug,
cluster_name: cluster_name,
)
cluster_get_body = json_fixture('files/uffizzi/uffizzi_cluster_scaled_down.json')
stubbed_uffizzi_cluster_get_request = stub_get_cluster_request(cluster_get_body, @project_slug)

@cluster.sleep

assert_requested(stubbed_uffizzi_cluster_scale_down_request)
assert_requested(stubbed_uffizzi_cluster_get_request)
end

def test_scale_up_cluster
Expand Down

0 comments on commit 27009ab

Please sign in to comment.