dyntool 0.2.7 → 0.3.0

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/dyntool.rb +70 -22
  3. metadata +18 -37
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6020ca92c28a77d5fd1af9a1eb11262f07a1002b
4
+ data.tar.gz: ef915a9e4933f5fa18a3cee6583f1c1f51af8787
5
+ SHA512:
6
+ metadata.gz: a02012df674306b6c58c812f6b3276332567881183cc6ac077316aebad7e6d308a3c2e7c4ac2923fe3da32288bb5408fc06980614752e0a2fe5ddb818c291559
7
+ data.tar.gz: a53112f9d52465aaff0db392ea84e33376322eb00cdc0e51b7e0458f32acab3995e31bc2dc189550b473f593f43abe3db9ead5ab88eddc8e029ac8aaefc53346
data/lib/dyntool.rb CHANGED
@@ -7,15 +7,23 @@ require 'ipaddr'
7
7
  require 'highline/import'
8
8
  require 'yaml'
9
9
  require 'time'
10
+ require 'ftools'
10
11
  ### class for loading and retrieving configuration from dyn.yml
11
12
  class LoadConfig
12
13
  def SetConfFile
13
14
  @pwd = Dir.pwd
14
15
  @confFile = "#{@pwd}/dyn.yml"
15
16
  end
17
+ def SetTmpFile
18
+ @pwd = Dir.pwd
19
+ @confFile = "#{@pwd}/status.yml"
20
+ end
16
21
  def GetHandler
17
22
  @conf = YAML.load_file(@confFile)
18
23
  end
24
+ def GetTmpHandler
25
+ @conf = YAML.load_file(@tmpFile)
26
+ end
19
27
  def GetDcs
20
28
  @dcs = @conf['sites']['names']
21
29
  end
@@ -31,6 +39,12 @@ class LoadConfig
31
39
  def GetDcProviders(dc)
32
40
  @dcproviders = @conf['sites'][dc]
33
41
  end
42
+ def SetDcProviders(dc,providers)
43
+ @conf['sites'][dc] = providers
44
+ File.open("#{@confFile}",'w') do |out|
45
+ YAML.dump(@conf,out)
46
+ end
47
+ end
34
48
  def GetProvierIP(provider)
35
49
  @providerip = @conf['providers'][provider]
36
50
  end
@@ -40,6 +54,12 @@ class LoadConfig
40
54
  def GetDcsEnabled(region,service)
41
55
  @dcs = @conf[service][region]
42
56
  end
57
+ def SetDcsEnabled(region,service,dcs)
58
+ @conf[service][region] = dcs
59
+ File.open("#{@confFile}",'w') do |out|
60
+ YAML.dump(@conf,out)
61
+ end
62
+ end
43
63
  def GetIpLabel(ip)
44
64
  @iplabel = @conf['ips'][ip]['label']
45
65
  end
@@ -58,6 +78,22 @@ class LoadConfig
58
78
  def GetNotifyApps
59
79
  @apps = @conf['notify_apps']
60
80
  end
81
+ def ConfManipulate(shiftfrom,shifto)
82
+ @confile = "./dyn.yml"
83
+ @tmpfile = "./status.yml"
84
+ if [shiftfrom == ""] && [shifto == ""]
85
+ if File.file?(@tmpfile)
86
+ File.delete(@tmpfile)
87
+ end
88
+ @rfile = "temp"
89
+ else
90
+ if File.file?(@tmpfile)
91
+ File.copy(@confile,@tmpfile)
92
+ end
93
+ @rfile = "dyn"
94
+ end
95
+ return(@rfile)
96
+ end
61
97
  end
62
98
  ## Getting authentication creds from users
63
99
  class Utils
@@ -413,46 +449,46 @@ class Parameters
413
449
 
414
450
  * add: Adding a new record *
415
451
 
416
- add a fqdn(a) ip example: dynamo.rb add a mynode.example.com 11.12.13.14
417
- add cname fqdn(cname) fqdn(a) example: dynamo.rb add cname mycnamenode.example.com mynode.example.com
418
- add txt fqdn(a) "some text" example: dynamo.rb add txt mynode.example.com "this is some text"
419
- add zone zonename example: dynamo.rb add zone example2.com
452
+ add a fqdn(a) ip example: dynamo.rb add a mynode.example.com 11.12.13.14 -m "some comment"
453
+ add cname fqdn(cname) fqdn(a) example: dynamo.rb add cname mycnamenode.example.com mynode.example.com -m "some comment"
454
+ add txt fqdn(a) "some text" example: dynamo.rb add txt mynode.example.com "this is some text" -m "some comment"
455
+ add zone zonename example: dynamo.rb add zone example2.com -m "some comment"
420
456
 
421
457
 
422
458
  * del: Deleting a node or service *
423
459
 
424
- del node fqdn(node) - node can be a,cname,txt,geonode,etc example: dynamo.rb del node mynode.example.com
425
- del service geoservice example: dynamo.rb del service geo17
460
+ del node fqdn(node) - node can be a,cname,txt,geonode,etc example: dynamo.rb del node mynode.example.com -m "some comment"
461
+ del service geoservice example: dynamo.rb del service geo17 -m "some comment"
426
462
 
427
463
 
428
464
  * change: Changing a record *
429
465
 
430
- change cname cname newfqdn example: dynamo.rb change cname mycnamenode.example.com test19.example.com
466
+ change cname cname newfqdn example: dynamo.rb change cname mycnamenode.example.com test19.example.com -m "some comment"
431
467
 
432
468
 
433
469
  * generate: Generating Geo service from yaml *
434
470
 
435
- generate geoservice geonode example: dynamo.rb generate geo11 test11.example.com
471
+ generate geoservice geonode example: dynamo.rb generate geo11 test11.example.com -m "some comment"
436
472
 
437
473
 
438
474
  * shift: Shifting traffic from dc or from provider on geo service *
439
475
 
440
- shift geoservice from dc/provider to dc/dcs/provider(in same dc) example1: dynamo.rb shift geo11 from dc chidc1 to nydc1
441
- example2: dynamo.rb shift geo11 from dc chidc1 to nydc1 ladc1
442
- example2: dynamo.rb shift all from dc chidc1 to nydc1 ladc1
443
- example3: dynamo.rb shift geo15 from provider amc_chi to inap_chi
476
+ shift geoservice from dc/provider to dc/dcs/provider(in same dc) example1: dynamo.rb shift geo11 from dc chidc1 to nydc1 -m "some comment"
477
+ example2: dynamo.rb shift geo11 from dc chidc1 to nydc1 ladc1 -m "some comment"
478
+ example2: dynamo.rb shift all from dc chidc1 to nydc1 ladc1 -m "some comment"
479
+ example3: dynamo.rb shift geo15 from provider amc_chi to inap_chi -m "some comment"
444
480
 
445
481
  * revert: Reverting a state of geo service to yaml state *
446
482
 
447
- revert geoservice example: dynamo.rb revert geo15
448
- example: dynamo.rb revert all
483
+ revert geoservice example: dynamo.rb revert geo15 -m "some comment"
484
+ example: dynamo.rb revert all -m "some comment"
449
485
 
450
486
 
451
487
  * get: Getting infotmation of geo services, geonodes, cname pointing to geo *
452
488
 
453
- get services (get all geo services) example: dynamo.rb get services
454
- get node geonode example: dynamo.rb get node test1.example.com
455
- get cname cname example: dynamo.rb get cname mycnamenode.example.com
489
+ get services (get all geo services) example: dynamo.rb get services -m "some comment"
490
+ get node geonode example: dynamo.rb get node test1.example.com -m "some comment"
491
+ get cname cname example: dynamo.rb get cname mycnamenode.example.com -m "some comment"
456
492
  EOF
457
493
  exit(2)
458
494
  end
@@ -626,15 +662,21 @@ class OperateDyn
626
662
  # building the record_data hash for generating geo service in dyn API
627
663
  def BuildService(service,flag,shiftfrom,shifto)
628
664
  puts "Generating the geo service data"
629
- @@conf = LoadConfig.new()
630
- @@conf.SetConfFile
631
- @@conf.GetHandler
632
- @regions = @@conf.GetRegions
633
- @dcs = @@conf.GetDcs
634
665
  @shiftfrom = []
635
666
  @shifto = []
636
667
  @shiftfrom << shiftfrom
637
668
  @shifto = shifto.split("-")
669
+ @@conf = LoadConfig.new()
670
+ @ftype = @@conf.ConfManipulate(shiftfrom,shifto)
671
+ if @ftype == "dyn"
672
+ @@conf.SetConfFile
673
+ @@conf.GetHandler
674
+ else
675
+ @@conf.SetTmpFile
676
+ @@conf.GetTmpHandler
677
+ end
678
+ @regions = @@conf.GetRegions
679
+ @dcs = @@conf.GetDcs
638
680
  @region_hash = []
639
681
  @i = 0
640
682
  @regions.each do |region|
@@ -648,6 +690,9 @@ class OperateDyn
648
690
  @dcs = @dcs - @shiftfrom
649
691
  @dcs = @dcs + @shifto
650
692
  end
693
+ if @ftype == "temp"
694
+ @conf.SetDcsEnabled(region,service,@dcs)
695
+ end
651
696
  end
652
697
  if @dcs.nil?
653
698
  abort("The region #{region}, has empty dc list. aborting....")
@@ -662,6 +707,9 @@ class OperateDyn
662
707
  @providers = @providers - @shiftfrom
663
708
  @providers = @providers + @shifto
664
709
  end
710
+ if @ftype == "temp"
711
+ SetDcProviders(dc,@providers)
712
+ end
665
713
  end
666
714
  @providers.each do |provider|
667
715
  @ips += @@conf.GetProvierIP(provider)
metadata CHANGED
@@ -1,62 +1,43 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dyntool
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 2
8
- - 7
9
- version: 0.2.7
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
10
5
  platform: ruby
11
- authors:
6
+ authors:
12
7
  - Ariel Moskovich
13
8
  autorequire:
14
9
  bindir: bin
15
10
  cert_chain: []
16
-
17
- date: 2014-01-24 00:00:00 +02:00
18
- default_executable:
11
+ date: 2014-03-09 00:00:00.000000000 Z
19
12
  dependencies: []
20
-
21
13
  description: Tool for manipulation dyn dns records
22
14
  email: ariel@outbrain.com
23
15
  executables: []
24
-
25
16
  extensions: []
26
-
27
17
  extra_rdoc_files: []
28
-
29
- files:
18
+ files:
30
19
  - lib/dyntool.rb
31
- has_rdoc: true
32
20
  homepage: http://rubygems.org/gems/dyntool
33
21
  licenses: []
34
-
22
+ metadata: {}
35
23
  post_install_message:
36
24
  rdoc_options: []
37
-
38
- require_paths:
25
+ require_paths:
39
26
  - lib
40
- required_ruby_version: !ruby/object:Gem::Requirement
41
- requirements:
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ requirements:
42
29
  - - ">="
43
- - !ruby/object:Gem::Version
44
- segments:
45
- - 0
46
- version: "0"
47
- required_rubygems_version: !ruby/object:Gem::Requirement
48
- requirements:
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ required_rubygems_version: !ruby/object:Gem::Requirement
33
+ requirements:
49
34
  - - ">="
50
- - !ruby/object:Gem::Version
51
- segments:
52
- - 0
53
- version: "0"
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
54
37
  requirements: []
55
-
56
38
  rubyforge_project:
57
- rubygems_version: 1.3.6
39
+ rubygems_version: 2.2.2
58
40
  signing_key:
59
- specification_version: 3
41
+ specification_version: 4
60
42
  summary: Dyn tools
61
43
  test_files: []
62
-