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.



303
304
305
# File 'lib/enfapi.rb', line 303

def api
  @api
end

#headersObject

Returns the value of attribute headers.



303
304
305
# File 'lib/enfapi.rb', line 303

def headers
  @headers
end

Instance Method Details

#activate_domain(domain_network) ⇒ Object



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

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



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

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



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
330
331
332
333
334
335
336
# File 'lib/enfapi.rb', line 305

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



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

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



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

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



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

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



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

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



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

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

#get(request_uri) ⇒ Object



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

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

#get_domain(domain_id) ⇒ Object



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



529
530
531
532
533
# File 'lib/enfapi.rb', line 529

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



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

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



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

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



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

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



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

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