Sha256: 89661faf87e2310b4b25375781a4e7a2382abe8c9b793adda217d7acee7cc946

Contents?: true

Size: 1.42 KB

Versions: 39

Compression:

Stored size: 1.42 KB

Contents

class Ey::Core::Client::DatabaseService < Ey::Core::Model
  extend Ey::Core::Associations

  identity :id

  attribute :location
  attribute :name
  attribute :deleted_at, type: :time
  attribute :service_level

  has_one :provider

  has_many :databases, model: :logical_databases
  has_many :servers,   model: :database_servers
  has_many :snapshots, model: :database_server_snapshots

  # @todo remove me next major revision
  attr_accessor :database_server

  def save!
    requires :name, :provider_id

    server_info  = self.servers.map { |c| c.is_a?(Ey::Core::Client::DatabaseServer) ? c.attributes : c }

    server_info += [database_server] if database_server

    if server_info.size > 1
      raise ArgumentError, "only one server can be specified"
    elsif server_info.size < 1
      raise ArgumentError, "you must specify at least one server dude"
    end

    params = {
      "url"              => self.collection.url,
      "provider"         => self.provider_id,
      "database_server"  => server_info.first,
      "database_service" => {
        "name"          => self.name,
        "service_level" => self.service_level,
      },
    }

    if new_record?
      self.connection.requests.new(self.connection.create_database_service(params).body["request"])
    else raise NotImplementedError
    end
  end

  def destroy!
    connection.requests.new(self.connection.destroy_database_service("id" => self.id).body["request"])
  end
end

Version data entries

39 entries across 39 versions & 2 rubygems

Version Path
ey-core-3.6.0.autoscaling1 lib/ey-core/models/database_service.rb
ey-core-3.6.4 lib/ey-core/models/database_service.rb
ey-core-3.6.3 lib/ey-core/models/database_service.rb
ey-core-3.6.1 lib/ey-core/models/database_service.rb
groove-ey-core-3.6.3 lib/ey-core/models/database_service.rb
groove-ey-core-3.6.2 lib/ey-core/models/database_service.rb
groove-ey-core-3.6.1 lib/ey-core/models/database_service.rb
ey-core-3.5.0 lib/ey-core/models/database_service.rb
ey-core-3.4.4 lib/ey-core/models/database_service.rb
ey-core-3.4.2 lib/ey-core/models/database_service.rb
ey-core-3.4.1 lib/ey-core/models/database_service.rb
ey-core-3.4.0 lib/ey-core/models/database_service.rb
ey-core-3.3.1 lib/ey-core/models/database_service.rb
ey-core-3.3.0 lib/ey-core/models/database_service.rb
ey-core-3.2.6 lib/ey-core/models/database_service.rb
ey-core-3.2.5 lib/ey-core/models/database_service.rb
ey-core-3.2.4 lib/ey-core/models/database_service.rb
ey-core-3.2.3 lib/ey-core/models/database_service.rb
ey-core-3.2.2 lib/ey-core/models/database_service.rb
ey-core-3.2.1 lib/ey-core/models/database_service.rb