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.



296
297
298
# File 'lib/enfapi.rb', line 296

def api
  @api
end

#headersObject

Returns the value of attribute headers.



296
297
298
# File 'lib/enfapi.rb', line 296

def headers
  @headers
end

Instance Method Details

#activate_domain(domain_network) ⇒ Object



437
438
439
440
441
# File 'lib/enfapi.rb', line 437

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



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

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



298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
# File 'lib/enfapi.rb', line 298

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



516
517
518
519
520
# File 'lib/enfapi.rb', line 516

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



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

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



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

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



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

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



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

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

#get(request_uri) ⇒ Object



331
332
333
334
335
# File 'lib/enfapi.rb', line 331

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

#get_domain(domain_id) ⇒ Object



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

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



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

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



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

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



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

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



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

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



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

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



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

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



358
359
360
361
362
# File 'lib/enfapi.rb', line 358

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



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

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



370
371
372
373
374
# File 'lib/enfapi.rb', line 370

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



463
464
465
466
467
# File 'lib/enfapi.rb', line 463

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



364
365
366
367
368
# File 'lib/enfapi.rb', line 364

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



469
470
471
472
473
# File 'lib/enfapi.rb', line 469

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



457
458
459
460
461
# File 'lib/enfapi.rb', line 457

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



337
338
339
340
341
# File 'lib/enfapi.rb', line 337

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



343
344
345
346
347
# File 'lib/enfapi.rb', line 343

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



522
523
524
525
526
# File 'lib/enfapi.rb', line 522

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



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

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



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

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



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

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



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

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