Sha256: 2156d840a341c07df215af1497d5cf8865a257e6f745784802470bb659e0c6da

Contents?: true

Size: 1.47 KB

Versions: 5

Compression:

Stored size: 1.47 KB

Contents

# -*- coding: utf-8 -*-
require "magellan/cli/resources"

module Magellan
  module Cli
    module Resources

      class Cloudsql < Base
        include Deletable

        self.resource_key = "cloudsql~database"
        self.resource_dependency = {"stage" => Stage.parameter_name}
        self.hidden_fields = %w[cloudsql_instance_id].map(&:freeze).freeze

        desc "create NAME", I18n.t(:create, scope: [:resources_common, :cmd], resource_name: "#{resource_name} database")
        option :A, type: :boolean, default: false, desc: I18n.t(:async, scope: [:cloudsql, :cmd_create])
        option :i, type: :numeric, default: 10, desc: I18n.t(:interval, scope: [:cloudsql, :cmd_create])
        option :t, type: :numeric, default: 600, desc: I18n.t(:timeout, scope: [:cloudsql, :cmd_create])
        def create(name)
          o = load_selection!(Stage)
          params = {
            parameter_name => {
              "stage_title_id" => o["id"],
              "name" => name,
            }
          }
          res0 = post_json("/admin/#{resource_key}/new.json", params)
          select(name)

          return res0 if options["A"]

          id = load_selection!(parameter_name)["id"]
          interval = options["i"]
          Timeout.timeout(options["t"]) do
            loop do
              sleep(interval)
              res1 = get_json("/admin/#{resource_key}/#{id}.json")
              return res1 if res1["available"]
            end
          end
        end

      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
magellan-cli-0.4.4 lib/magellan/cli/resources/cloudsql.rb
magellan-cli-0.4.3 lib/magellan/cli/resources/cloudsql.rb
magellan-cli-0.4.2 lib/magellan/cli/resources/cloudsql.rb
magellan-cli-0.4.1 lib/magellan/cli/resources/cloudsql.rb
magellan-cli-0.4.0 lib/magellan/cli/resources/cloudsql.rb