class Ey::Core::Client::Server

Attributes

force[RW]
iops[RW]
mnt_volume_size[RW]
snapshot_id[RW]
volume_size[RW]

Public Instance Methods

apply(type="main") click to toggle source
# File lib/ey-core/models/server.rb, line 44
def apply(type="main")
  requires :identity

  connection.requests.new(self.connection.apply_server_updates("id" => self.identity, "type" => type).body["request"])
end
destroy!(skip_snapshot="false") click to toggle source
# File lib/ey-core/models/server.rb, line 136
def destroy!(skip_snapshot="false")
  if environment.servers.count == 1
    raise Ey::Core::Client::NotPermitted, "Terminating the last server in an environment is not allowed.  You must deprovision or destroy the environment instead."
  end

  requires :identity

  params = {
     :skip_snapshot => skip_snapshot
  }

  connection.requests.new(
    self.connection.destroy_server(self.identity, params).body["request"]
  )
end
latest_custom_log() click to toggle source
# File lib/ey-core/models/server.rb, line 54
def latest_custom_log
  logs.select{|l| l.filename.match(/custom/)}.sort_by(&:created_at).last
end
latest_main_log() click to toggle source
# File lib/ey-core/models/server.rb, line 50
def latest_main_log
  logs.select{|l| l.filename.match(/main/)}.sort_by(&:created_at).last
end
reboot() click to toggle source
# File lib/ey-core/models/server.rb, line 58
def reboot
  requires :identity

  connection.requests.new(
    self.connection.reboot_server("id" => self.identity).body["request"]
  )
end
reconcile() click to toggle source
# File lib/ey-core/models/server.rb, line 82
def reconcile
  requires :identity

  connection.requests.new(
    self.connection.reconcile_server("id" => self.identity).body["request"]
  )
end
reset_state(state) click to toggle source
# File lib/ey-core/models/server.rb, line 90
def reset_state(state)
  params = {
    "url"   => self.collection.url,
    "id"    => self.id,
    "state" => state
  }

  unless new_record?
    merge_attributes(self.connection.reset_server_state(params).body["server"])
  end
end
save!() click to toggle source
# File lib/ey-core/models/server.rb, line 102
def save!
  if new_record?
    requires :flavor_id, :role, :environment

    server_attributes = {
      "environment" => environment.id,
      "wait_for_chef" => self.wait_for_chef,
      "snapshot"    => self.snapshot_id,
      "force"       => self.force,
      "server"      => {
        "dedicated"       => self.dedicated,
        "flavor"          => self.flavor_id,
        "iops"            => self.iops,
        "location"        => self.location || environment.region,
        "mnt_volume_size" => self.mnt_volume_size,
        "name"            => self.name,
        "release_label"   => self.release_label,
        "role"            => self.role,
        "volume_size"     => self.volume_size,
        "ip_id"           => self.ip_id
      }
    }
    connection.requests.new(connection.create_server(server_attributes).body["request"])
  else
    requires :identity
    server_attributes = Cistern::Hash.slice(Cistern::Hash.stringify_keys(self.attributes), "provisioned_at", "deprovisioned_at", "disappeared_at")
    server_attributes.merge!("status" => self.state) if self.state
    connection.update_server(
      "id"     => self.identity,
      "server" => server_attributes,
    )
  end
end
start() click to toggle source
# File lib/ey-core/models/server.rb, line 74
def start
  requires :identity

  connection.requests.new(
    self.connection.start_server("id" => self.identity).body["request"]
  )
end
stop() click to toggle source
# File lib/ey-core/models/server.rb, line 66
def stop
  requires :identity

  connection.requests.new(
    self.connection.stop_server("id" => self.identity).body["request"]
  )
end