enfcli 4.1.0.pre.beta → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 27d832f6ee49be44d9463b1b77931d15db08f79f6d382c1bc243635ef9eca137
4
- data.tar.gz: 070eabadf3b810b47c948dd5ca84cc362852dde237dba5a95a7e4e90e011f8b0
3
+ metadata.gz: 86826b25857a616c9ce13cf6bc4f7ee929e601bc8a70cc3d2510b73259ebd5e1
4
+ data.tar.gz: 77d3e2ab72a9ababd8926e3fd09d6f0155cc5464677d2b4fdb0ef33196b5bb24
5
5
  SHA512:
6
- metadata.gz: afc068399c4e7477a16388c3ead24346520823cb214b19befe9a4a4d58a19f14b4f45868b31c66b7841c24073970241fb81b68f54e5bc23534d547e586436de4
7
- data.tar.gz: 3d9e53a84414a42d17e35c8c01852af895a149d5e906000d3e84fa7282150d49542a91c130c73b35b8a010139771adcac0267a31991686799b62346f42daf6ba
6
+ metadata.gz: 12b1b10048964fda4775f2408a4ead3118c10307cf267757c261e0c4d1dcf88dad4a91cb14e3e3d52c13bbaf3aada2f534647a245fc6aaaea8f2f2e810c3e905
7
+ data.tar.gz: 79d93340b0b3818261b2f7f90527076878ecfc8d7485a79811e8cb9edb774a0b41855bbcdfd87f72f50de1271f40912d251eaae8c7f0980d0d3307d08c9e5456
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- enfcli (4.1.0.pre.beta)
4
+ enfcli (5.0.1)
5
5
  clipboard
6
6
  ffi
7
7
  readline
@@ -21,7 +21,7 @@ GEM
21
21
  diff-lcs (1.3)
22
22
  domain_name (0.5.20190701)
23
23
  unf (>= 0.0.5, < 1.0.0)
24
- ffi (1.12.2)
24
+ ffi (1.13.1)
25
25
  fuubar (2.5.0)
26
26
  rspec-core (~> 3.0)
27
27
  ruby-progressbar (~> 1.4)
@@ -32,13 +32,13 @@ GEM
32
32
  io-console (0.5.6)
33
33
  mime-types (3.3.1)
34
34
  mime-types-data (~> 3.2015)
35
- mime-types-data (3.2019.1009)
35
+ mime-types-data (3.2020.0512)
36
36
  netrc (0.11.0)
37
37
  public_suffix (4.0.3)
38
38
  rake (10.5.0)
39
39
  readline (0.0.2)
40
40
  reline
41
- reline (0.1.3)
41
+ reline (0.1.4)
42
42
  io-console (~> 0.5)
43
43
  rest-client (2.1.0)
44
44
  http-accept (>= 1.7.0, < 2.0)
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright 2018 Xaptum,Inc
2
+ # Copyright 2020 Xaptum,Inc
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License");
5
5
  # you may not use this file except in compliance with the License.
@@ -30,6 +30,14 @@ module EnfApi
30
30
  JSON.generate(hash)
31
31
  end
32
32
 
33
+ def self.from_json(string)
34
+ begin
35
+ JSON.parse(string, { symbolize_names: true })
36
+ rescue
37
+ raise EnfApi::ERROR, "Unable to parse api response json!"
38
+ end
39
+ end
40
+
33
41
  def self.url_encode(str)
34
42
  CGI.escape(str).gsub("+", "%20")
35
43
  end
@@ -40,103 +48,6 @@ module EnfApi
40
48
  end
41
49
  end
42
50
 
43
- class Dns
44
- include Singleton
45
-
46
- def initialize
47
- @version = "2019-05-27"
48
- @xdns_base_url = "/api/xdns/#{@version}"
49
- end
50
-
51
- def list_zones(domain)
52
- EnfApi::API.instance.get "#{@xdns_base_url}/zones?enf_domain=#{domain}"
53
- end
54
-
55
- def create_dns_zone(new_zone)
56
- json = EnfApi::to_json(new_zone)
57
- EnfApi::API.instance.post "#{@xdns_base_url}/zones", json
58
- end
59
-
60
- def update_dns_zone(zone_id, updated_zone)
61
- json = EnfApi::to_json(updated_zone)
62
- EnfApi::API.instance.put "#{@xdns_base_url}/zones/#{zone_id}", json
63
- end
64
-
65
- def delete_dns_zone(zone_id)
66
- EnfApi::API.instance.delete "#{@xdns_base_url}/zones/#{zone_id}"
67
- end
68
-
69
- def add_networks_to_zone(zone_id, add_networks)
70
- json = EnfApi::to_json(add_networks)
71
- EnfApi::API.instance.post "#{@xdns_base_url}/zones/#{zone_id}/networks", json
72
- end
73
-
74
- def replace_networks_in_zone(zone_id, replace_networks)
75
- json = EnfApi::to_json(replace_networks)
76
- EnfApi::API.instance.put "#{@xdns_base_url}/zones/#{zone_id}/networks", json
77
- end
78
-
79
- def list_networks_in_zone(zone_id)
80
- EnfApi::API.instance.get "#{@xdns_base_url}/zones/#{zone_id}/networks"
81
- end
82
-
83
- def delete_networks_from_zone(zone_id, delete_networks)
84
- EnfApi::API.instance.delete "#{@xdns_base_url}/zones/#{zone_id}/networks?delete=#{delete_networks}"
85
- end
86
-
87
- def list_zones_in_network(network)
88
- EnfApi::API.instance.get "#{@xdns_base_url}/networks/#{network}/zones"
89
- end
90
-
91
- def provision_server(network, new_server)
92
- json = EnfApi::to_json(new_server)
93
- EnfApi::API.instance.post "#{@xdns_base_url}/networks/#{network}/servers", json
94
- end
95
-
96
- def list_servers(network)
97
- EnfApi::API.instance.get "#{@xdns_base_url}/networks/#{network}/servers"
98
- end
99
-
100
- def delete_server(network, server_ipv6)
101
- EnfApi::API.instance.delete "#{@xdns_base_url}/networks/#{network}/servers/#{server_ipv6}"
102
- end
103
-
104
- def create_dns_record(zone_id, new_record)
105
- json = EnfApi::to_json(new_record)
106
- EnfApi::API.instance.post "#{@xdns_base_url}/zones/#{zone_id}/records", json
107
- end
108
-
109
- def list_dns_records(zone_id)
110
- EnfApi::API.instance.get "#{@xdns_base_url}/zones/#{zone_id}/records"
111
- end
112
-
113
- def query(network, type, name)
114
- EnfApi::API.instance.get "#{@xdns_base_url}/networks/#{network}/query/#{type}/#{name}"
115
- end
116
-
117
- def delete_dns_record(record_id)
118
- EnfApi::API.instance.delete "#{@xdns_base_url}/records/#{record_id}"
119
- end
120
- end
121
-
122
- class Firewall
123
- include Singleton
124
-
125
- def list_firewall_rules(network)
126
- EnfApi::API.instance.get "/api/xfw/v1/#{network}/rule"
127
- end
128
-
129
- def add_firewall_rule(network, rule)
130
- rule_json = EnfApi::to_json(rule)
131
- EnfApi::API.instance.post "/api/xfw/v1/#{network}/rule", rule_json
132
- end
133
-
134
- def delete_firewall_rules(network, id = nil)
135
- # Same method to call to delete all firewall rules in a network. if id is nil
136
- EnfApi::API.instance.delete "/api/xfw/v1/#{network}/rule/#{id}"
137
- end
138
- end
139
-
140
51
  class Iam
141
52
  include Singleton
142
53
 
@@ -284,6 +195,89 @@ module EnfApi
284
195
  json = EnfApi.to_json(profile_updates)
285
196
  EnfApi::API.instance.put "/api/captive/v1/profile/#{id}", json
286
197
  end
198
+
199
+ # Get the list of devices
200
+ ## NO_TEST
201
+ def list_firmware_images()
202
+ url = "/api/captive/v1/firmware/release"
203
+ EnfApi::API.instance.get url
204
+ end
205
+
206
+ # Upload the firmware image
207
+ # Current version sends an empty body - captive server doesn't support
208
+ # sending the binary image yet.
209
+ ## NO_TEST
210
+ def upload_firmware_image(version, image_name)
211
+ url = "/api/captive/v1/firmware/release/#{version}/#{image_name}"
212
+ EnfApi::API.instance.put url
213
+ end
214
+
215
+ # gets the details for a specific firmware version
216
+ ## NO_TEST
217
+ def get_firmware_info(version)
218
+ url = "/api/captive/v1/firmware/release/#{version}"
219
+ EnfApi::API.instance.get url
220
+ end
221
+
222
+ # creates a new schedule object via POST
223
+ ## NO_TEST
224
+ def create_schedule(sched_hash)
225
+ json = EnfApi.to_json(sched_hash)
226
+ EnfApi::API.instance.post "/api/captive/v1/schedule", json
227
+ end
228
+
229
+ # GETs a list of all existing schedules
230
+ ## NO_TEST
231
+ def list_schedules
232
+ EnfApi::API.instance.get "/api/captive/v1/schedule"
233
+ end
234
+
235
+ # GETs the details of a specific schedule
236
+ ## NO_TEST
237
+ def get_schedule(id)
238
+ EnfApi::API.instance.get "/api/captive/v1/schedule/#{id}"
239
+ end
240
+
241
+ # update the details of a specific schedule
242
+ ## NO_TEST
243
+ def update_schedule(id, sched_hash)
244
+ json = EnfApi.to_json(sched_hash)
245
+ url = "/api/captive/v1/schedule/#{id}"
246
+ EnfApi::API.instance.put url, json
247
+ end
248
+
249
+ # DELETEs the specified schedule
250
+ ## NO_TEST
251
+ def delete_schedule(id)
252
+ EnfApi::API.instance.delete "/api/captive/v1/schedule/#{id}"
253
+ end
254
+
255
+ # GET the list of existing update objects
256
+ ## NO_TEST
257
+ def list_firmware_updates()
258
+ EnfApi::API.instance.get "/api/captive/v1/firmware/update"
259
+ end
260
+
261
+ # GET details of a specified firmware update task
262
+ ## NO_TEST
263
+ def get_firmware_update(update_id)
264
+ EnfApi::API.instance.get "/api/captive/v1/firmware/update/#{update_id}"
265
+ end
266
+
267
+ # POSTs a new firmware-udpate object
268
+ ## NO_TEST
269
+ def create_firmware_update(update_hash)
270
+ json = EnfApi.to_json(update_hash)
271
+ EnfApi::API.instance.post "/api/captive/v1/firmware/update", json
272
+ end
273
+
274
+ # uses PUT to modify an existing firmware update task
275
+ ## NO_TEST
276
+ def modify_firmware_update(update_id, update_hash)
277
+ url = "/api/captive/v1/firmware/update/#{update_id}"
278
+ json = EnfApi.to_json(update_hash)
279
+ EnfApi::API.instance.put url, json
280
+ end
287
281
  end
288
282
 
289
283
  class NetworkManager
@@ -306,11 +300,11 @@ module EnfApi
306
300
  @api = RestClient::Resource.new(host)
307
301
 
308
302
  # Create request json
309
- hash = { :username => user, :token => password }
303
+ hash = { username: user, password: password }
310
304
  json = to_json(hash)
311
305
 
312
306
  # call api
313
- @api["/api/xcr/v2/xauth"].post(json, { content_type: :json, accept: :json }) { |response, request, result|
307
+ @api["/api/xcr/v3/xauth"].post(json, { content_type: :json, accept: :json }) { |response, request, result|
314
308
  case response.code
315
309
  when 200
316
310
  # get resp from json
@@ -356,59 +350,59 @@ module EnfApi
356
350
  # NOT READY API. MOVE ABOVE THIS LINE AFTER RSPEC OR INTO OWN CLASS
357
351
  ############################################################################################################################
358
352
  def list_domain_nws(domain_id)
359
- @api["/api/xcr/v2/domains/#{domain_id}/nws"].get(@headers) { |response, request, result|
353
+ @api["/api/xcr/v3/domains/#{domain_id}/nws"].get(@headers) { |response, request, result|
360
354
  process_api_response response, request, result
361
355
  }
362
356
  end
363
357
 
364
358
  def list_enfnws
365
- @api["/api/xcr/v2/enfnws"].get(@headers) { |response, request, result|
359
+ @api["/api/xcr/v3/enfnws"].get(@headers) { |response, request, result|
366
360
  process_api_response response, request, result
367
361
  }
368
362
  end
369
363
 
370
364
  def list_domains
371
- @api["/api/xcr/v2/domains"].get(@headers) { |response, request, result|
365
+ @api["/api/xcr/v3/domains"].get(@headers) { |response, request, result|
372
366
  process_api_response response, request, result
373
367
  }
374
368
  end
375
369
 
376
370
  def get_domain(domain_id)
377
- @api["/api/xcr/v2/domains/#{domain_id}"].get(@headers) { |response, request, result|
371
+ @api["/api/xcr/v3/domains/#{domain_id}"].get(@headers) { |response, request, result|
378
372
  process_api_response response, request, result
379
373
  }
380
374
  end
381
375
 
382
376
  def create_domain(domain_hash)
383
377
  json = to_json(domain_hash)
384
- @api["/api/xcr/v2/domains"].post(json, @headers) { |response, request, result|
378
+ @api["/api/xcr/v3/domains"].post(json, @headers) { |response, request, result|
385
379
  process_api_response response, request, result
386
380
  }
387
381
  end
388
382
 
389
383
  def update_domain_rate_limits(domain_network, limit, limits_hash)
390
384
  json = to_json(limits_hash)
391
- @api["/api/xcr/v2/domains/#{domain_network}/ep_rate_limits/#{limit}"].put(json, @headers) { |response, request, result|
385
+ @api["/api/xcr/v3/domains/#{domain_network}/ep_rate_limits/#{limit}"].put(json, @headers) { |response, request, result|
392
386
  process_api_response response, request, result
393
387
  }
394
388
  end
395
389
 
396
390
  def update_network_rate_limits(network, limit, limits_hash)
397
391
  json = to_json(limits_hash)
398
- @api["/api/xcr/v2/nws/#{network}/ep_rate_limits/#{limit}"].put(json, @headers) { |response, request, result|
392
+ @api["/api/xcr/v3/nws/#{network}/ep_rate_limits/#{limit}"].put(json, @headers) { |response, request, result|
399
393
  process_api_response response, request, result
400
394
  }
401
395
  end
402
396
 
403
397
  def update_ep_rate_limits(ipv6, limit, limits_hash)
404
398
  json = to_json(limits_hash)
405
- @api["/api/xcr/v2/cxns/#{ipv6}/ep_rate_limits/#{limit}"].put(json, @headers) { |response, request, result|
399
+ @api["/api/xcr/v3/cxns/#{ipv6}/ep_rate_limits/#{limit}"].put(json, @headers) { |response, request, result|
406
400
  process_api_response response, request, result
407
401
  }
408
402
  end
409
403
 
410
404
  def get_domain_rate_limits(domain_network, filter = nil)
411
- api_url = "/api/xcr/v2/domains/#{domain_network}/ep_rate_limits"
405
+ api_url = "/api/xcr/v3/domains/#{domain_network}/ep_rate_limits"
412
406
  api_url = "#{api_url}/#{filter}" if filter
413
407
 
414
408
  @api[api_url].get(@headers) { |response, request, result|
@@ -417,7 +411,7 @@ module EnfApi
417
411
  end
418
412
 
419
413
  def get_network_rate_limits(network, filter = nil)
420
- api_url = "/api/xcr/v2/nws/#{network}/ep_rate_limits"
414
+ api_url = "/api/xcr/v3/nws/#{network}/ep_rate_limits"
421
415
  api_url = "#{api_url}/#{filter}" if filter
422
416
 
423
417
  @api[api_url].get(@headers) { |response, request, result|
@@ -426,7 +420,7 @@ module EnfApi
426
420
  end
427
421
 
428
422
  def get_ep_rate_limits(ipv6, filter = nil)
429
- api_url = "/api/xcr/v2/cxns/#{ipv6}/ep_rate_limits"
423
+ api_url = "/api/xcr/v3/cxns/#{ipv6}/ep_rate_limits"
430
424
  api_url = "#{api_url}/#{filter}" if filter
431
425
 
432
426
  @api[api_url].get(@headers) { |response, request, result|
@@ -436,105 +430,66 @@ module EnfApi
436
430
 
437
431
  def update_domain_status(domain_network, status)
438
432
  json = to_json(status)
439
- @api["/api/xcr/v2/domains/#{domain_network}/status"].put(json, @headers) { |response, request, result|
433
+ @api["/api/xcr/v3/domains/#{domain_network}/status"].put(json, @headers) { |response, request, result|
440
434
  process_api_response response, request, result
441
435
  }
442
436
  end
443
437
 
444
- def create_nw(nw_hash)
438
+ def create_nw(domain, nw_hash)
445
439
  json = to_json(nw_hash)
446
- domain_id = nw_hash[:domain_id]
447
- @api["/api/xcr/v2/domains/#{domain_id}/nws"].post(json, @headers) { |response, request, result|
440
+ @api["/api/xcr/v3/domains/#{domain}/nws"].post(json, @headers) { |response, request, result|
448
441
  process_api_response response, request, result
449
442
  }
450
443
  end
451
444
 
452
445
  def update_nw(network_cidr, nw_hash)
453
446
  json = to_json(nw_hash)
454
- @api["/api/xcr/v2/nws/#{network_cidr}"].put(json, @headers) { |response, request, result|
447
+ @api["/api/xcr/v3/nws/#{network_cidr}"].put(json, @headers) { |response, request, result|
455
448
  process_api_response response, request, result
456
449
  }
457
450
  end
458
451
 
459
452
  def get_nw(network_cidr)
460
- @api["/api/xcr/v2/nws/#{network_cidr}"].get(@headers) { |response, request, result|
453
+ @api["/api/xcr/v3/nws/#{network_cidr}"].get(@headers) { |response, request, result|
461
454
  process_api_response response, request, result
462
455
  }
463
456
  end
464
457
 
465
- def list_nw_connections(domain_id, network_cidr, file = nil)
466
- @api["/api/xcr/v2/domains/#{domain_id}/nws/#{network_cidr}/cxns"].get(@headers) { |response, request, result|
458
+ def list_nw_connections(network_cidr, file = nil)
459
+ @api["/api/xcr/v3/nws/#{network_cidr}/cxns"].get(@headers) { |response, request, result|
467
460
  process_api_response response, request, result
468
461
  }
469
462
  end
470
463
 
471
464
  def list_endpoint_events(ipv6)
472
- @api["/api/xcr/v2/cxns/#{ipv6}/events"].get(@headers) { |response, request, result|
465
+ @api["/api/xcr/v3/cxns/#{ipv6}/events"].get(@headers) { |response, request, result|
473
466
  process_api_response response, request, result
474
467
  }
475
468
  end
476
469
 
477
470
  def list_network_events(network_cidr)
478
- @api["/api/xcr/v2/nws/#{network_cidr}/events"].get(@headers) { |response, request, result|
471
+ @api["/api/xcr/v3/nws/#{network_cidr}/events"].get(@headers) { |response, request, result|
479
472
  process_api_response response, request, result
480
473
  }
481
474
  end
482
475
 
483
476
  def get_endpoint(ipv6)
484
- @api["/api/xcr/v2/cxns/#{ipv6}"].get(@headers) { |response, request, result|
477
+ @api["/api/xcr/v3/cxns/#{ipv6}"].get(@headers) { |response, request, result|
485
478
  process_api_response response, request, result
486
479
  }
487
480
  end
488
481
 
489
482
  def update_endpoint(ipv6, name)
490
- hash = { :ipv6 => ipv6, :name => name }
483
+ hash = { ipv6: ipv6, name: name }
491
484
  json = to_json(hash)
492
485
 
493
- @api["/api/xcr/v2/cxns/#{ipv6}"].put(json, @headers) { |response, request, result|
486
+ @api["/api/xcr/v3/cxns/#{ipv6}"].put(json, @headers) { |response, request, result|
494
487
  process_api_response response, request, result
495
488
  }
496
489
  end
497
490
 
498
491
  def activate_enfnw(subnet)
499
- @api["/api/xcr/v2/enfnws/#{subnet}"].put("", @headers) { |response, request, result|
500
- process_api_response response, request, result
501
- }
502
- end
503
-
504
- def list_domain_users(domain_network)
505
- @api["/api/xcr/v2/domains/#{domain_network}/users"].get(@headers) { |response, request, result|
506
- process_api_response response, request, result
507
- }
508
- end
509
-
510
- def list_domain_invites(domain_network)
511
- @api["/api/xcr/v2/domains/#{domain_network}/invites"].get(@headers) { |response, request, result|
512
- process_api_response response, request, result
513
- }
514
- end
515
-
516
- def invite(domain_network, hash)
517
- json = to_json(hash)
518
- @api["/api/xcr/v2/domains/#{domain_network}/invites"].post(json, @headers) { |response, request, result|
519
- process_api_response response, request, result
520
- }
521
- end
522
-
523
- def cancel_invite(email)
524
- @api["/api/xcr/v2/invites/#{email}"].delete(@headers) { |response, request, result|
525
- process_api_response response, request, result
526
- }
527
- end
528
-
529
- def resend_invite(email)
530
- @api["/api/xcr/v2/invites/#{email}"].put("{}", @headers) { |response, request, result|
531
- process_api_response response, request, result
532
- }
533
- end
534
-
535
- def update_user_status(user_id, status)
536
- json = to_json(status)
537
- @api["/api/xcr/v2/users/#{user_id}/status"].put(json, @headers) { |response, request, result|
492
+ @api["/api/xcr/v3/enfnws/#{subnet}"].put("", @headers) { |response, request, result|
538
493
  process_api_response response, request, result
539
494
  }
540
495
  end
@@ -569,21 +524,24 @@ module EnfApi
569
524
  rescue JSON::ParserError => e
570
525
  raise EnfApi::ERROR, "Not Found"
571
526
  end
527
+ when 500
528
+ begin
529
+ JSON.parse(response.body)
530
+ raise EnfApi::ERROR, api_error_msg(from_json(response.body))
531
+ rescue JSON::ParserError => e
532
+ raise EnfApi::ERROR, "Server error was received without details."
533
+ end
572
534
  else
573
535
  raise EnfApi::ERROR, "Unexpected error! Please try again!"
574
536
  end
575
537
  end
576
538
 
577
539
  def from_json(string)
578
- begin
579
- JSON.parse(string, { :symbolize_names => true })
580
- rescue
581
- raise EnfApi::ERROR, "Unable to parse api response json!"
582
- end
540
+ EnfApi::from_json(string)
583
541
  end
584
542
 
585
543
  def to_json(hash)
586
- JSON.generate(hash)
544
+ EnfApi::to_json(hash)
587
545
  end
588
546
 
589
547
  def api_error_msg(err)