Sha256: 14d9e6ebdc3040faf517cdb6223bd819e5971a81bd61e2456bddad577ba050ad

Contents?: true

Size: 1.56 KB

Versions: 6

Compression:

Stored size: 1.56 KB

Contents

# frozen_string_literal: true

require 'uffizzi/clients/api/api_client'

class ClusterService
  CLUSTER_STATE_DEPLOYING_NAMESPACE = 'deploying_namespace'
  CLUSTER_STATE_DEPLOYING = 'deploying'
  CLUSTER_STATE_DEPLOYED = 'deployed'
  CLUSTER_STATE_FAILED_DEPLOY_NAMESPACE = 'failed_deploy_namespace'
  CLUSTER_STATE_FAILED = 'failed'

  class << self
    include ApiClient

    def deployed?(cluster_state)
      cluster_state == CLUSTER_STATE_DEPLOYED
    end

    def deploying?(cluster_state)
      [CLUSTER_STATE_DEPLOYING_NAMESPACE, CLUSTER_STATE_DEPLOYING].include?(cluster_state)
    end

    def failed?(cluster_state)
      [CLUSTER_STATE_FAILED_DEPLOY_NAMESPACE, CLUSTER_STATE_FAILED].include?(cluster_state)
    end

    def wait_cluster_deploy(project_slug, cluster_name, oidc_token)
      loop do
        params = {
          cluster_name: cluster_name,
          oidc_token: oidc_token,
        }
        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 cluster_data unless deploying?(cluster_data[:state])

        sleep(5)
      end
    end

    def generate_name
      name = [Faker::Name.first_name, Faker::Name.last_name].map(&:downcase).join('-')

      return name if valid_name?(name)

      generate_name
    end

    def valid_name?(name)
      return false if name.nil?

      regex = /\A[a-zA-Z0-9-]*\z/
      regex.match?(name)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
uffizzi-cli-2.0.36 lib/uffizzi/services/cluster_service.rb
uffizzi-cli-2.0.35 lib/uffizzi/services/cluster_service.rb
uffizzi-cli-2.0.34 lib/uffizzi/services/cluster_service.rb
uffizzi-cli-2.0.32 lib/uffizzi/services/cluster_service.rb
uffizzi-cli-2.0.27 lib/uffizzi/services/cluster_service.rb
uffizzi-cli-2.0.29 lib/uffizzi/services/cluster_service.rb