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

Sign up to get free protection for your applications and to get access to all the features.
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