Class: CloudGarage

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

Constant Summary collapse

VERSION =
"0.1.0".freeze
BASE_URI =
'https://api.cloudgarage.jp'.freeze

Instance Method Summary collapse

Constructor Details

#initialize(client_id, client_secret) ⇒ CloudGarage

Returns a new instance of CloudGarage.



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

def initialize(client_id, client_secret)
  @client_id, @client_secret = client_id, client_secret
  token
end

Instance Method Details

#contracts(contract_id = nil) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/cloudgarage-api.rb', line 23

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



65
66
67
68
69
70
71
72
73
74
# File 'lib/cloudgarage-api.rb', line 65

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



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

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

#images(image_type = nil) ⇒ Object

image_type: :os, :application, :private



32
33
34
35
36
37
38
39
# File 'lib/cloudgarage-api.rb', line 32

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



41
42
43
44
45
46
47
# File 'lib/cloudgarage-api.rb', line 41

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

#operate_servers(operation, servers) ⇒ Object

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



78
79
80
81
# File 'lib/cloudgarage-api.rb', line 78

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

#restart_hard_servers(servers) ⇒ Object



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

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

#restart_servers(servers) ⇒ Object



83
# File 'lib/cloudgarage-api.rb', line 83

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

#server_auto_backup_info(server_id) ⇒ Object



57
58
59
# File 'lib/cloudgarage-api.rb', line 57

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

#server_info(server_id) ⇒ Object



53
54
55
# File 'lib/cloudgarage-api.rb', line 53

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

#server_security_info(server_id) ⇒ Object



61
62
63
# File 'lib/cloudgarage-api.rb', line 61

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

#serversObject



49
50
51
# File 'lib/cloudgarage-api.rb', line 49

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

#start_servers(servers) ⇒ Object



82
# File 'lib/cloudgarage-api.rb', line 82

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

#stop_servers(servers) ⇒ Object



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

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

#tokenObject



18
19
20
21
# File 'lib/cloudgarage-api.rb', line 18

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

#versionObject



91
92
93
# File 'lib/cloudgarage-api.rb', line 91

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