Class: CloudGarage::API

Inherits:
Object
  • Object
show all
Defined in:
lib/cloudgarage/api.rb

Constant Summary collapse

BASE_URI =
'https://api.cloudgarage.jp'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(token = nil) ⇒ API

Returns a new instance of API.



16
17
18
# File 'lib/cloudgarage/api.rb', line 16

def initialize(token = nil)
  @token = token
end

Instance Attribute Details

#tokenObject

Returns the value of attribute token.



14
15
16
# File 'lib/cloudgarage/api.rb', line 14

def token
  @token
end

Instance Method Details

#contracts(contract_id = nil) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/cloudgarage/api.rb', line 25

def contracts(contract_id = nil)
  if contract_id 
    get("contracts/#{contract_id}")[:contract]
  else
    get('contracts')[:contracts]
  end
end

#create_server(name, password, contract_id: nil, spec: {}, ports: [], image_id: nil, keyname: nil, comment: nil) ⇒ Object



67
68
69
70
71
72
73
74
75
76
# File 'lib/cloudgarage/api.rb', line 67

def create_server(name, password, contract_id: nil, spec: {}, ports: [], image_id: nil, keyname: nil, comment: nil)
  payload = {'name' => name, 'password' => password}
  payload['contract_id'] = contract_id if contract_id
  payload['spec'] = spec unless spec.empty?
  payload['ports'] = ports unless ports.empty?
  payload['image_id'] = image_id if image_id
  payload['keyname'] = keyname if keyname
  payload['comment'] = comment if comment
  post('servers', payload)[:resource_id]
end

#delete_server(resource_id, notify = true) ⇒ Object



89
90
91
92
# File 'lib/cloudgarage/api.rb', line 89

def delete_server(resource_id, notify = true)
  delete("servers/#{resource_id}?sendMail=#{notify ? 'true': 'false'}")
  return true
end

#images(image_type = nil) ⇒ Object

image_type: :os, :application, :private



34
35
36
37
38
39
40
41
# File 'lib/cloudgarage/api.rb', line 34

def images(image_type = nil)
  images = get("images")[:images]
  if image_type
    image_type = image_type.to_s.upcase
    images.select!{|i| i[:image_type] == image_type}
  end
  return images
end

#keypairs(keypair_id = nil) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/cloudgarage/api.rb', line 43

def keypairs(keypair_id = nil)
  if keypair_id
    get("keypairs/#{keypair_id}")[:keypair]
  else
    get('keypairs')[:keypairs]
  end
end

#login(client_id, client_secret) ⇒ Object



20
21
22
23
# File 'lib/cloudgarage/api.rb', line 20

def (client_id, client_secret)
  payload = {'client_id' => client_id, 'client_secret' => client_secret}
  @token = post('tokens', payload)[:token][:id]
end

#operate_servers(operation, servers) ⇒ Object

operation: :start, :restart, :restart_hard, :stop servers: array of server UUIDs



80
81
82
83
# File 'lib/cloudgarage/api.rb', line 80

def operate_servers(operation, servers)
  payload = {'operate' => operation.to_s.upcase, 'servers' => [servers].flatten}
  post('servers/operate', payload)
end

#restart_hard_servers(servers) ⇒ Object



86
# File 'lib/cloudgarage/api.rb', line 86

def restart_hard_servers(servers); operate_servers(:restart_hard, servers); end

#restart_servers(servers) ⇒ Object



85
# File 'lib/cloudgarage/api.rb', line 85

def restart_servers(servers); operate_servers(:restart, servers); end

#server_auto_backup_info(server_id) ⇒ Object



59
60
61
# File 'lib/cloudgarage/api.rb', line 59

def server_auto_backup_info(server_id)
  get("servers/#{server_id}/autoBackup")[:autoBackup]
end

#server_info(server_id) ⇒ Object



55
56
57
# File 'lib/cloudgarage/api.rb', line 55

def server_info(server_id)
  get("servers/#{server_id}")[:server_detail]
end

#server_security_info(server_id) ⇒ Object



63
64
65
# File 'lib/cloudgarage/api.rb', line 63

def server_security_info(server_id)
  get("servers/#{server_id}/security")[:securityRules]
end

#serversObject



51
52
53
# File 'lib/cloudgarage/api.rb', line 51

def servers()
  get('servers')[:servers]
end

#start_servers(servers) ⇒ Object



84
# File 'lib/cloudgarage/api.rb', line 84

def start_servers(servers); operate_servers(:start, servers); end

#stop_servers(servers) ⇒ Object



87
# File 'lib/cloudgarage/api.rb', line 87

def stop_servers(servers); operate_servers(:stop, servers); end

#versionObject



94
95
96
# File 'lib/cloudgarage/api.rb', line 94

def version
  get("version")[:version]
end