Class: GPUEater::APIv1

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

Defined Under Namespace

Classes: ProductsResnpose

Instance Method Summary collapse

Constructor Details

#initializeAPIv1

Returns a new instance of APIv1.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/gpueater.rb', line 10

def initialize
  @debug = false
  @base = 'https://www.gpueater.com'
  if ENV['GPUEATER_URL']
    @base = ENV['GPUEATER_URL']
  end

  @homedir     = File.expand_path('~')
  @tmpdir      = Dir.tmpdir
  @cookie_path = File.join(@tmpdir,"gpueater_cookie.txt")

  @g_config = {}
  @g_header = {'User-Agent':'RubyAPI'}
  @conn = Faraday::Connection.new(:url => @base) do |builder|
    builder.use Faraday::Request::UrlEncoded
    # builder.use Faraday::Response::Logger
    builder.use Faraday::Adapter::NetHttpPersistent # gem install net-http-persistent
    builder.options[:timeout] = 1800
  end
  @alist=["raccoon", "dog", "wild boar", "rabbit", "cow", "horse", "wolf", "hippopotamus", "kangaroo", "fox", "giraffe", "bear", "koala", "bat", "gorilla", "rhinoceros", "monkey", "deer", "zebra", "jaguar", "polar bear", "skunk", "elephant", "raccoon dog", "animal", "reindeer", "rat", "tiger", "cat", "mouse", "buffalo", "hamster", "panda", "sheep", "leopard", "pig", "mole", "goat", "lion", "camel", "squirrel", "donkey"]
  @blist=["happy", "glad", "comfortable", "pleased", "delighted", "relieved", "calm", "surprised", "exciting"]

  begin
    @g_config = JSON.load(open(".eater").read)
  rescue
    begin
      @g_config = JSON.load(open(File.join(@homedir,".eater")).read)
    rescue
      puts "You have to define to ~/.eater"
      exit(9)
    end
  end

  begin
    @g_header['cookie'] = open(@cookie_path).read
  rescue => e
  end
end

Instance Method Details

#__________________________Object

@



267
# File 'lib/gpueater.rb', line 267

def __________________________;end

#___________image___________Object

def func_post_launch(api,required_fields=[],form={}, e=nil, try=2)

raise e if try <= 0
tag = form['tag']
unless tag
  form['tag'] = @alist[((rand()*100) % @alist.length).to_i] +"-"+@blist[((rand()*100) % @blist.length).to_i]
end
required_fields.each{|v| raise "Required field => #{v}" unless form.include?(v) }
image = form['image']
ssh_key_id = form['ssh_key_id']
product_id = form['product_id']
unless image.kind_of?(String)
end

j = nil
begin
  j = JSON.load(_post(api,form).body)
rescue => e
  relogin
  return func_post(api, required_fields, form, e, try-1)
end
raise j['error'] if j['error']
j['data']

end



185
# File 'lib/gpueater.rb', line 185

def ___________image___________;end

#___________instance___________Object

@



204
# File 'lib/gpueater.rb', line 204

def ___________instance___________;end

#___________ssh_key___________Object

@



198
# File 'lib/gpueater.rb', line 198

def ___________ssh_key___________;end

#__________network__________Object

@



219
# File 'lib/gpueater.rb', line 219

def __________network__________;end

#__________storage__________Object

@



228
# File 'lib/gpueater.rb', line 228

def __________storage__________;end

#_________extensions__________Object

@



257
# File 'lib/gpueater.rb', line 257

def _________extensions__________;end

#_________payment__________Object

@



248
# File 'lib/gpueater.rb', line 248

def _________payment__________;end

#_________special__________Object

@



244
# File 'lib/gpueater.rb', line 244

def _________special__________;end

#_________subscription__________Object

@



233
# File 'lib/gpueater.rb', line 233

def _________subscription__________;end

#_get(u, q = {}) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/gpueater.rb', line 55

def _get(u,q={})
  puts u if @debug
  response = @conn.get do |req|
    req.url u
    req.params = q
    @g_header.each{|k,v|
      if v
        req.headers[k] = v
      end
    }
  end
  return response
end

#_post(u, form) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/gpueater.rb', line 69

def _post(u,form)
  puts u if @debug
  response = @conn.post do |req|
    req.url u
    @g_header.each{|k,v|
      if v
        req.headers[k] = v
      end
    }
    req.body = form
  end
  return response
end

#cancel_transactionObject

@



246
# File 'lib/gpueater.rb', line 246

def cancel_transaction;                  raise "Not implemented yet"; end

#change_instance_tag(form) ⇒ Object

@



210
# File 'lib/gpueater.rb', line 210

def change_instance_tag(form);          func_post('/console/servers/change_instance_tag',['instance_id','tag'],form); end

#change_snapshot_tag(form) ⇒ Object

@



189
# File 'lib/gpueater.rb', line 189

def change_snapshot_tag(form); func_post('/console/servers/change_snapshot_tag',['snapshot_id','tag'],form); end

#close_port(form) ⇒ Object

@



222
# File 'lib/gpueater.rb', line 222

def close_port(form);               func_post('/console/servers/delete_port',['instance_id','connection_id','port'],form); end

#copy_fileObject

@



258
# File 'lib/gpueater.rb', line 258

def copy_file;                  raise "Not implemented yet"; end

#create_image(form) ⇒ Object

@



193
# File 'lib/gpueater.rb', line 193

def create_image(form); func_post('/console/servers/create_user_defined_image',['instance_id','image_name'],form); end

#create_volumeObject

@



229
# File 'lib/gpueater.rb', line 229

def create_volume;                  raise "Not implemented yet"; end

#delete_fileObject

@



259
# File 'lib/gpueater.rb', line 259

def delete_file;                  raise "Not implemented yet"; end

#delete_image(form) ⇒ Object

@



194
# File 'lib/gpueater.rb', line 194

def delete_image(form); func_post('/console/servers/delete_user_defined_image',['fingerprint'],form); end

#delete_snapshot(form) ⇒ Object

@



190
# File 'lib/gpueater.rb', line 190

def delete_snapshot(form); func_post('/console/servers/delete_snapshot',['snapshot_id'],form); end

#delete_ssh_key(form) ⇒ Object

@



202
# File 'lib/gpueater.rb', line 202

def delete_ssh_key(form);     func_post('/console/servers/delete_ssh_key',['id'],form); end

#delete_volumeObject

@



230
# File 'lib/gpueater.rb', line 230

def delete_volume;                  raise "Not implemented yet"; end

#emergency_restart_instance(form) ⇒ Object

@



216
# File 'lib/gpueater.rb', line 216

def emergency_restart_instance(form);   func_post_inss('/console/servers/emergency_restart',['instance_id','machine_resource_id'],form); end

#file_listObject

@



262
# File 'lib/gpueater.rb', line 262

def file_list;                  raise "Not implemented yet"; end

#func_get(api, required_fields = [], query = {}, e = nil, try = 2) ⇒ Object



118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/gpueater.rb', line 118

def func_get(api,required_fields=[],query={}, e=nil, try=2)
  raise e if try <= 0
  required_fields.each{|v| raise "Required field => #{v}" unless query.include?(v) }
  j = nil
  begin
    j = JSON.load(_get(api,query).body)
  rescue => e
    relogin
    return func_get(api, required_fields, query, e, try-1)
  end
  raise j['error'] if j['error']
  j['data']
end

#func_post(api, required_fields = [], form = {}, e = nil, try = 2) ⇒ Object



132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/gpueater.rb', line 132

def func_post(api,required_fields=[],form={}, e=nil, try=2)
  raise e if try <= 0
  required_fields.each{|v| raise "Required field => #{v}" unless form.include?(v) }
  j = nil
  begin
    j = JSON.load(_post(api,form).body)
  rescue => e
    relogin
    return func_post(api, required_fields, form, e, try-1)
  end
  raise j['error'] if j['error']
  j['data']
end

#func_post_inss(api, required_fields = [], form = {}, e = nil, try = 2) ⇒ Object



146
147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/gpueater.rb', line 146

def func_post_inss(api,required_fields=[],form={}, e=nil, try=2)
  raise e if try <= 0
  required_fields.each{|v| raise "Required field => #{v}" unless form.include?(v) }
  form["instances"] = [{"instance_id"=>form["instance_id"],"machine_resource_id"=>form["machine_resource_id"]}].to_json;
  j = nil
  begin
    j = JSON.load(_post(api,form).body)
  rescue => e
    relogin
    return func_post(api, required_fields, form, e, try-1)
  end
  raise j['error'] if j['error']
  j['data']
end

#generate_ssh_keyObject

@



200
# File 'lib/gpueater.rb', line 200

def generate_ssh_key;         func_get('/console/servers/ssh_key_gen'); end

#image_listObject

@



186
# File 'lib/gpueater.rb', line 186

def image_list; func_get('/console/servers/images'); end

#import_image(form) ⇒ Object

@



195
# File 'lib/gpueater.rb', line 195

def import_image(form); func_post('/console/servers/import_image',['url','image_name'],form); end

#instance_listObject

@



209
# File 'lib/gpueater.rb', line 209

def instance_list;                      func_get('/console/servers/instance_list'); end

#invoice_listObject

@



249
# File 'lib/gpueater.rb', line 249

def invoice_list;                  func_get('/console/servers/charge_list'); end

#launch_ondemand_instance(form) ⇒ Object

@



207
# File 'lib/gpueater.rb', line 207

def launch_ondemand_instance(form);     func_post('/console/servers/launch_ondemand_instance',['product_id','image','ssh_key_id','tag'],form); end

#launch_subcription_instance(form) ⇒ Object

@



208
# File 'lib/gpueater.rb', line 208

def launch_subcription_instance(form);  raise "Not implemented yet"; end

#live_migrationObject

@



245
# File 'lib/gpueater.rb', line 245

def live_migration;                  raise "Not implemented yet"; end

#login_instanceObject

@



264
# File 'lib/gpueater.rb', line 264

def ;                  raise "Not implemented yet"; end

#make_directoryObject

@



261
# File 'lib/gpueater.rb', line 261

def make_directory;                  raise "Not implemented yet"; end

#make_invoiceObject

@



251
# File 'lib/gpueater.rb', line 251

def make_invoice;                  raise "Not implemented yet"; end

#move_fileObject

@



260
# File 'lib/gpueater.rb', line 260

def move_file;                  raise "Not implemented yet"; end

#network_description(form) ⇒ Object

@



225
# File 'lib/gpueater.rb', line 225

def network_description(form);      func_get('/console/servers/instance_info',['instance_id'],form); end

#ondemand_listObject

@



205
# File 'lib/gpueater.rb', line 205

def ondemand_list; ProductsResnpose.new(func_get('/console/servers/ondemand_launch_list')); end

#open_port(form) ⇒ Object

@



221
# File 'lib/gpueater.rb', line 221

def open_port(form);                func_post('/console/servers/add_port',['instance_id','connection_id','port'],form); end

#payment_testObject



253
254
255
# File 'lib/gpueater.rb', line 253

def payment_test
  puts invoice_list
end

#port_list(form) ⇒ Object

@



220
# File 'lib/gpueater.rb', line 220

def port_list(form);                func_get('/console/servers/port_list',['instance_id'],form); end

#refresh_ipv4(form) ⇒ Object

@



224
# File 'lib/gpueater.rb', line 224

def refresh_ipv4(form);             func_post('/console/servers/refresh_ipv4',['instance_id'],form); end

#register_ssh_key(form) ⇒ Object

@



201
# File 'lib/gpueater.rb', line 201

def register_ssh_key(form);   func_post('/console/servers/register_ssh_key',['name','public_key'],form); end

#registered_image_listObject

@



192
# File 'lib/gpueater.rb', line 192

def registered_image_list; func_get('/console/servers/registered_image_list'); end

#reloginObject



83
84
85
86
87
88
89
90
91
# File 'lib/gpueater.rb', line 83

def relogin
  res = _post('/api_login',{'email':@g_config['gpueater']['email'],'password':@g_config['gpueater']['password']})
  if res.headers['set-cookie']
    @g_header['cookie'] = res.headers['set-cookie']
    f = open(@cookie_path,"w")
    f.write(@g_header['cookie'])
    f.close
  end
end

#renew_ipv4(form) ⇒ Object

@



223
# File 'lib/gpueater.rb', line 223

def renew_ipv4(form);               func_post('/console/servers/renew_ipv4',['instance_id'],form); end

#restart_instance(form) ⇒ Object

@



214
# File 'lib/gpueater.rb', line 214

def restart_instance(form);             func_post_inss('/console/servers/stop',['instance_id','machine_resource_id'],form); func_post_inss('/console/servers/start',['instance_id','machine_resource_id'],form); end

#snapshot_listObject

@



187
# File 'lib/gpueater.rb', line 187

def snapshot_list; func_get('/console/servers/snapshots'); end

#ssh_key_listObject

@



199
# File 'lib/gpueater.rb', line 199

def ssh_key_list;             func_get('/console/servers/ssh_keys'); end

#start_instance(form) ⇒ Object

@



212
# File 'lib/gpueater.rb', line 212

def start_instance(form);               func_post_inss('/console/servers/start',['instance_id','machine_resource_id'],form); end

#stop_instance(form) ⇒ Object

@



213
# File 'lib/gpueater.rb', line 213

def stop_instance(form);                func_post_inss('/console/servers/stop',['instance_id','machine_resource_id'],form); end

#subscribe_instanceObject

@



237
# File 'lib/gpueater.rb', line 237

def subscribe_instance;                  raise "Not implemented yet"; end

#subscribe_networkObject

@



241
# File 'lib/gpueater.rb', line 241

def subscribe_network;                  raise "Not implemented yet"; end

#subscribe_storageObject

@



239
# File 'lib/gpueater.rb', line 239

def subscribe_storage;                  raise "Not implemented yet"; end

#subscription_instance_listObject

@



234
# File 'lib/gpueater.rb', line 234

def subscription_instance_list;                  raise "Not implemented yet"; end

#subscription_invoice_listObject

@



250
# File 'lib/gpueater.rb', line 250

def subscription_invoice_list;     raise "Not implemented yet"; end

#subscription_listObject

@



206
# File 'lib/gpueater.rb', line 206

def subscription_list;                  raise "Not implemented yet"; end

#subscription_network_listObject

@



236
# File 'lib/gpueater.rb', line 236

def subscription_network_list;                  raise "Not implemented yet"; end

#subscription_storage_listObject

@



235
# File 'lib/gpueater.rb', line 235

def subscription_storage_list;                  raise "Not implemented yet"; end

#synchronize_filesObject

@



263
# File 'lib/gpueater.rb', line 263

def synchronize_files;                  raise "Not implemented yet"; end

#take_snapshot(form) ⇒ Object

@



188
# File 'lib/gpueater.rb', line 188

def take_snapshot(form); func_post('/console/servers/take_snapshot',['instance_id','tag'],form); end

#terminate_instance(form) ⇒ Object

@



215
# File 'lib/gpueater.rb', line 215

def terminate_instance(form);           func_post_inss('/console/servers/force_terminate',['instance_id','machine_resource_id'],form); end

#transfer_volumeObject

@



231
# File 'lib/gpueater.rb', line 231

def transfer_volume;                raise "Not implemented yet"; end

#tunnelObject

@



265
# File 'lib/gpueater.rb', line 265

def tunnel;                  raise "Not implemented yet"; end

#unsubscribe_instanceObject

@



238
# File 'lib/gpueater.rb', line 238

def unsubscribe_instance;                  raise "Not implemented yet"; end

#unsubscribe_networkObject

@



242
# File 'lib/gpueater.rb', line 242

def unsubscribe_network;                  raise "Not implemented yet"; end

#unsubscribe_storageObject

@



240
# File 'lib/gpueater.rb', line 240

def unsubscribe_storage;                  raise "Not implemented yet"; end