Class: EnfApi::API

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/enfapi.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#apiObject

Returns the value of attribute api.



288
289
290
# File 'lib/enfapi.rb', line 288

def api
  @api
end

#headersObject

Returns the value of attribute headers.



288
289
290
# File 'lib/enfapi.rb', line 288

def headers
  @headers
end

Instance Method Details

#activate_domain(domain_network) ⇒ Object



429
430
431
432
433
# File 'lib/enfapi.rb', line 429

def activate_domain(domain_network)
  @api["/api/xcr/v2/domains/#{domain_network}/status"].put( '', @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#activate_enfnw(subnet) ⇒ Object



482
483
484
485
486
# File 'lib/enfapi.rb', line 482

def activate_enfnw(subnet)
  @api["/api/xcr/v2/enfnws/#{subnet}"].put( '', @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#authenticate(host, user, password) ⇒ Object



290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
# File 'lib/enfapi.rb', line 290

def authenticate(host, user, password)
  # format url
  host = "https://#{host}" unless host =~ /^(http|https):\/\//

  # chomp trailing '/'
  host = host.chomp("/")

  # Initalize rest client
  @api = RestClient::Resource.new(host)

  # Create request json
  hash = { :username => user, :token => password }
  json = to_json( hash )

  # call api
  @api["/api/xcr/v2/xauth"].post( json, {content_type: :json, accept: :json}) { |response, request, result|
    case response.code
    when 200
      # get resp from json
      resp = from_json(response.body)

      # set request headers for subsequent api calls
      token = resp[:data][0][:token]
      @headers = {content_type: :json, accept: :json, "Authorization" => "Bearer #{token}"}

      # return resp
      resp
    else
      raise EnfApi::ERROR, "Login Failed! Invalid user or password!"
    end
  }
end

#cancel_invite(email) ⇒ Object



508
509
510
511
512
# File 'lib/enfapi.rb', line 508

def cancel_invite(email)
  @api["/api/xcr/v2/invites/#{email}"].delete( @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#create_domain(domain_hash) ⇒ Object



374
375
376
377
378
379
# File 'lib/enfapi.rb', line 374

def create_domain(domain_hash)
  json = to_json( domain_hash )
  @api["/api/xcr/v2/domains"].post( json, @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#create_nw(nw_hash) ⇒ Object



441
442
443
444
445
446
447
# File 'lib/enfapi.rb', line 441

def create_nw(nw_hash)
  json = to_json(nw_hash)
  domain_id = nw_hash[:domain_id]
  @api["/api/xcr/v2/domains/#{domain_id}/nws"].post(json, @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#deactivate_domain(domain_network) ⇒ Object



435
436
437
438
439
# File 'lib/enfapi.rb', line 435

def deactivate_domain(domain_network)
  @api["/api/xcr/v2/domains/#{domain_network}/status"].delete( @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#delete(request_uri) ⇒ Object



341
342
343
344
345
# File 'lib/enfapi.rb', line 341

def delete(request_uri)
  @api[request_uri].delete(@headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#get(request_uri) ⇒ Object



323
324
325
326
327
# File 'lib/enfapi.rb', line 323

def get(request_uri)
  @api[request_uri].get(@headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#get_domain(domain_id) ⇒ Object



368
369
370
371
372
# File 'lib/enfapi.rb', line 368

def get_domain(domain_id)
  @api["/api/xcr/v2/domains/#{domain_id}"].get( @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#get_domain_rate_limits(domain_network, filter = nil) ⇒ Object



402
403
404
405
406
407
408
409
# File 'lib/enfapi.rb', line 402

def get_domain_rate_limits(domain_network, filter = nil)
  api_url = "/api/xcr/v2/domains/#{domain_network}/ep_rate_limits"
  api_url = "#{api_url}/#{filter}" if filter

  @api[api_url].get( @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#get_endpoint(ipv6) ⇒ Object



467
468
469
470
471
# File 'lib/enfapi.rb', line 467

def get_endpoint(ipv6)
  @api["/api/xcr/v2/cxns/#{ipv6}"].get(@headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#get_ep_rate_limits(ipv6, filter = nil) ⇒ Object



420
421
422
423
424
425
426
427
# File 'lib/enfapi.rb', line 420

def get_ep_rate_limits(ipv6, filter = nil)
  api_url = "/api/xcr/v2/cxns/#{ipv6}/ep_rate_limits"
  api_url = "#{api_url}/#{filter}" if filter

  @api[api_url].get( @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#get_network_rate_limits(network, filter = nil) ⇒ Object



411
412
413
414
415
416
417
418
# File 'lib/enfapi.rb', line 411

def get_network_rate_limits(network, filter = nil)
  api_url = "/api/xcr/v2/nws/#{network}/ep_rate_limits"
  api_url = "#{api_url}/#{filter}" if filter

  @api[api_url].get( @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#invite(domain_network, hash) ⇒ Object



501
502
503
504
505
506
# File 'lib/enfapi.rb', line 501

def invite(domain_network, hash)
  json = to_json( hash )
  @api["/api/xcr/v2/domains/#{domain_network}/invites"].post( json, @headers) { |response, request, result|
    process_api_response response, request, result
  }
end

#list_domain_invites(domain_network) ⇒ Object



495
496
497
498
499
# File 'lib/enfapi.rb', line 495

def list_domain_invites(domain_network)
  @api["/api/xcr/v2/domains/#{domain_network}/invites"].get(@headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#list_domain_nws(domain_id) ⇒ Object

NOT READY API. MOVE ABOVE THIS LINE AFTER RSPEC OR INTO OWN CLASS



350
351
352
353
354
# File 'lib/enfapi.rb', line 350

def list_domain_nws(domain_id)
  @api["/api/xcr/v2/domains/#{domain_id}/nws"].get(@headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#list_domain_users(domain_network) ⇒ Object



488
489
490
491
492
493
# File 'lib/enfapi.rb', line 488

def list_domain_users(domain_network)
  @api["/api/xcr/v2/domains/#{domain_network}/users"].get( @headers) {|response, request, result|
    puts response.code
    process_api_response response, request, result
  }
end

#list_domainsObject



362
363
364
365
366
# File 'lib/enfapi.rb', line 362

def list_domains
  @api["/api/xcr/v2/domains"].get( @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#list_endpoint_events(ipv6) ⇒ Object



455
456
457
458
459
# File 'lib/enfapi.rb', line 455

def list_endpoint_events(ipv6)
  @api["/api/xcr/v2/cxns/#{ipv6}/events"].get(@headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#list_enfnwsObject



356
357
358
359
360
# File 'lib/enfapi.rb', line 356

def list_enfnws
  @api["/api/xcr/v2/enfnws"].get( @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#list_network_events(network_cidr) ⇒ Object



461
462
463
464
465
# File 'lib/enfapi.rb', line 461

def list_network_events(network_cidr)
  @api["/api/xcr/v2/nws/#{network_cidr}/events"].get(@headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#list_nw_connections(domain_id, network_cidr, file = nil) ⇒ Object



449
450
451
452
453
# File 'lib/enfapi.rb', line 449

def list_nw_connections(domain_id, network_cidr, file = nil)
  @api["/api/xcr/v2/domains/#{domain_id}/nws/#{network_cidr}/cxns"].get(@headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#post(request_uri, request_body = '') ⇒ Object



329
330
331
332
333
# File 'lib/enfapi.rb', line 329

def post(request_uri, request_body = '')
  @api[request_uri].post(request_body, @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#put(request_uri, request_body = '') ⇒ Object



335
336
337
338
339
# File 'lib/enfapi.rb', line 335

def put(request_uri, request_body = '')
  @api[request_uri].put(request_body, @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#resend_invite(email) ⇒ Object



514
515
516
517
518
# File 'lib/enfapi.rb', line 514

def resend_invite(email)
  @api["/api/xcr/v2/invites/#{email}"].put( "{}", @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#update_domain_rate_limits(domain_network, limit, limits_hash) ⇒ Object



381
382
383
384
385
386
# File 'lib/enfapi.rb', line 381

def update_domain_rate_limits(domain_network, limit, limits_hash)
  json = to_json( limits_hash )
  @api["/api/xcr/v2/domains/#{domain_network}/ep_rate_limits/#{limit}"].put( json, @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#update_endpoint(ipv6, name) ⇒ Object



473
474
475
476
477
478
479
480
# File 'lib/enfapi.rb', line 473

def update_endpoint(ipv6, name)
  hash = { :ipv6 => ipv6, :name => name }
  json = to_json( hash )

  @api["/api/xcr/v2/cxns/#{ipv6}"].put( json, @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#update_ep_rate_limits(ipv6, limit, limits_hash) ⇒ Object



395
396
397
398
399
400
# File 'lib/enfapi.rb', line 395

def update_ep_rate_limits(ipv6, limit, limits_hash)
  json = to_json( limits_hash )
  @api["/api/xcr/v2/cxns/#{ipv6}/ep_rate_limits/#{limit}"].put( json, @headers) {|response, request, result|
    process_api_response response, request, result
  }
end

#update_network_rate_limits(network, limit, limits_hash) ⇒ Object



388
389
390
391
392
393
# File 'lib/enfapi.rb', line 388

def update_network_rate_limits(network, limit, limits_hash)
  json = to_json( limits_hash )
  @api["/api/xcr/v2/nws/#{network}/ep_rate_limits/#{limit}"].put( json, @headers) {|response, request, result|
    process_api_response response, request, result
  }
end