Class: Tengine::Resource::CLI::Server

Inherits:
Thor
  • Object
show all
Includes:
GlobalOptions, Options
Defined in:
lib/tengine/resource/cli/server.rb

Instance Method Summary collapse

Instance Method Details

#add(name, *args) ⇒ Object

def add(name, options = {})



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/tengine/resource/cli/server.rb', line 37

def add(name, *args)
  opts = merge_options(args, options)
  config_mongoid
  Tengine::Resource::Provider.manual.tap do |provider|
    server = provider.physical_servers.create!({
        name: name,
        provided_id: name,
        addresses: opts[:addresses] || {},
        properties: opts[:properties] || {}
      })
    $stdout.puts "server created successfully!: #{server.to_json}"
  end
end

#list(*args) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/tengine/resource/cli/server.rb', line 11

def list(*args)
  opts = merge_options(args, options)
  config_mongoid
  require 'text-table'
  res = [%w[provider virtual? name status addresses created_at updated_at]]
  sort_options = {(opts[:sort] || "name").to_sym => 1}
  sort_options[:name] = 1 # 同じ時刻などのソートキーが決まらない場合を想定して名前もソートキーに入れる
  Tengine::Resource::Server.all.order_by(sort_options).each do |server|
    res << [
      server.provider ? server.provider.name : "-",
      server.is_a?(Tengine::Resource::VirtualServer) ? "virtual" : "physical",
      server.name,
      server.status,
      server.addresses.to_json,
      server.created_at.iso8601,
      server.updated_at.iso8601,
    ]
  end
  $stdout.puts res.to_table(:first_row_is_head => true)
  res
end

#remove(name) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/tengine/resource/cli/server.rb', line 52

def remove(name)
  config_mongoid
  Tengine::Resource::Provider.manual.tap do |provider|
    if server = provider.physical_servers.where({name: name}).first
      server.destroy
      $stdout.puts "server was destroyed successfully!: #{name}"
    else
      raise "server \"#{name}\" not found under provider \"#{provider.name}\""
    end
  end
end