zerigo-designate 0.0.8.pre.2 → 0.0.8.pre.4

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.
data/designate.gemspec CHANGED
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
18
18
 
19
19
  s.has_rdoc = false
20
20
  s.add_dependency("rest-client", "= 1.6.7")
21
+ s.add_dependency("capify-ec2", ">=1.2.4")
21
22
  s.add_dependency("crack", "= 0.3.1")
22
23
  s.add_development_dependency('shoulda')
23
24
  end
@@ -1,6 +1,7 @@
1
1
  require File.join(File.dirname(__FILE__), '../designate')
2
2
  require 'rubygems'
3
3
  require 'capistrano'
4
+ require 'capify-ec2'
4
5
 
5
6
  Capistrano::Configuration.instance(:must_exist).load do
6
7
  namespace :zerigo do
@@ -11,7 +12,6 @@ Capistrano::Configuration.instance(:must_exist).load do
11
12
  roles.each do |role|
12
13
  dns_names << role[1].instance_variable_get("@static_servers").first.instance_variable_get("@host")
13
14
  end
14
-
15
15
  zone = Designate::Client.new().find_or_create_zone()
16
16
  zone.create_host('CNAME', dns_names.first, {:hostname => hostname})
17
17
 
@@ -20,11 +20,30 @@ Capistrano::Configuration.instance(:must_exist).load do
20
20
  else
21
21
  subzone = Designate::Client.new().find_or_create_zone("#{zerigo_config[:subdomain]}.#{zerigo_config[:domain]}")
22
22
  subzone.create_host('CNAME', "#{hostname}.#{zerigo_config[:domain]}", {:hostname => "#{hostname}"})
23
+ cleanup_hosts(subzone, zone)
23
24
  end
24
25
  end
25
26
 
26
27
  def zerigo_config()
27
28
  YAML.load(File.new("config/zerigo.yml"))
28
29
  end
30
+
31
+ def cleanup_hosts(subzone, zone)
32
+ return if !zerigo_config[:host_prefix]
33
+ expired_hosts = get_expired_hosts(subzone)
34
+ delete_hosts(expired_hosts, subzone)
35
+ delete_hosts(expired_hosts, zone)
36
+ end
37
+
38
+ def get_expired_hosts(subzone)
39
+ hostnames = CapifyEc2.new().desired_instances.select {|instance| instance.name.match(zerigo_config[:host_prefix])}.map {|instance| instance.name}
40
+ subzone.hosts.delete_if {|host| hostnames.find {|hostname| hostname == host.hostname} ||
41
+ !host.hostname.match(zerigo_config[:host_prefix])}.map {|host| host.hostname}
42
+ end
43
+
44
+ def delete_hosts(expired_hosts, zone)
45
+ zone.hosts.delete_if {|host| !expired_hosts.find {|hostname| hostname == host.hostname}}
46
+ zone.hosts.each {|host| p "Deleting host: #{host.fqdn}"; host.destroy}
47
+ end
29
48
  end
30
49
  end
@@ -1,3 +1,3 @@
1
1
  module Designate
2
- VERSION = "0.0.8.pre.2"
2
+ VERSION = "0.0.8.pre.4"
3
3
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zerigo-designate
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1923832045
4
+ hash: 1923832033
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
9
  - 8
10
10
  - pre
11
- - 2
12
- version: 0.0.8.pre.2
11
+ - 4
12
+ version: 0.0.8.pre.4
13
13
  platform: ruby
14
14
  authors:
15
15
  - James Miller
@@ -18,7 +18,7 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2012-03-13 00:00:00 +00:00
21
+ date: 2012-03-30 00:00:00 +01:00
22
22
  default_executable:
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
@@ -38,9 +38,25 @@ dependencies:
38
38
  type: :runtime
39
39
  version_requirements: *id001
40
40
  - !ruby/object:Gem::Dependency
41
- name: crack
41
+ name: capify-ec2
42
42
  prerelease: false
43
43
  requirement: &id002 !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ hash: 23
49
+ segments:
50
+ - 1
51
+ - 2
52
+ - 4
53
+ version: 1.2.4
54
+ type: :runtime
55
+ version_requirements: *id002
56
+ - !ruby/object:Gem::Dependency
57
+ name: crack
58
+ prerelease: false
59
+ requirement: &id003 !ruby/object:Gem::Requirement
44
60
  none: false
45
61
  requirements:
46
62
  - - "="
@@ -52,11 +68,11 @@ dependencies:
52
68
  - 1
53
69
  version: 0.3.1
54
70
  type: :runtime
55
- version_requirements: *id002
71
+ version_requirements: *id003
56
72
  - !ruby/object:Gem::Dependency
57
73
  name: shoulda
58
74
  prerelease: false
59
- requirement: &id003 !ruby/object:Gem::Requirement
75
+ requirement: &id004 !ruby/object:Gem::Requirement
60
76
  none: false
61
77
  requirements:
62
78
  - - ">="
@@ -66,7 +82,7 @@ dependencies:
66
82
  - 0
67
83
  version: "0"
68
84
  type: :development
69
- version_requirements: *id003
85
+ version_requirements: *id004
70
86
  description: Designate is a simple Ruby gem wrapper for the Zerigo DNS API v1.1 specification.
71
87
  email:
72
88
  - bensie@gmail.com