hugo 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -18,6 +18,12 @@ begin
18
18
  gemspec.add_dependency('amazon-ec2', '>= 0.7.5')
19
19
  gemspec.add_dependency('json', '>= 1.2.0')
20
20
  gemspec.add_dependency('net-ssh', '>= 2.0.16')
21
+ gemspec.add_dependency('builder', '>= 0')
22
+ gemspec.add_dependency('i18n', '>= 0')
23
+ gemspec.add_dependency('activesupport', '>= 2.3.5')
24
+ gemspec.add_dependency('activeresource', '>= 2.3.5')
25
+ gemspec.add_dependency('zerigo_dns', '>= 1.0.0')
26
+
21
27
  gemspec.files = FileList['spec/*.rb'] + FileList['lib/**/*.rb'] + ['README.rdoc', 'LICENSE', 'VERSION.yml', 'Rakefile']
22
28
  end
23
29
  Jeweler::GemcutterTasks.new
data/lib/hugo.rb CHANGED
@@ -1,9 +1,16 @@
1
- # This makes sure the bundled gems are in our $LOAD_PATH
2
- #require File.expand_path(File.join(File.dirname(__FILE__) + "/..", 'vendor', 'gems', 'environment'))
3
-
4
- # This actually requires the bundled gems
5
- #Bundler.require_env
1
+ begin
2
+ # Require the preresolved locked set of gems.
3
+ require File.expand_path('../.bundle/environment', __FILE__)
4
+ rescue LoadError
5
+ # Fallback on doing the resolve at runtime.
6
+ require "rubygems"
7
+ require "bundler"
8
+ Bundler.setup
9
+ end
6
10
 
11
+ require 'active_support'
12
+ require 'active_resource'
13
+ require 'zerigo_dns'
7
14
  require 'AWS'
8
15
  require 'net/ssh'
9
16
  require 'json'
@@ -13,6 +20,7 @@ require File.dirname(__FILE__) + '/hugo/cloud'
13
20
  require File.dirname(__FILE__) + '/hugo/balancer'
14
21
  require File.dirname(__FILE__) + '/hugo/database'
15
22
  require File.dirname(__FILE__) + '/hugo/app'
23
+ require File.dirname(__FILE__) + '/hugo/dns'
16
24
  require File.dirname(__FILE__) + '/hugo/aws/rds'
17
25
  require File.dirname(__FILE__) + '/hugo/aws/elb'
18
26
  require File.dirname(__FILE__) + '/hugo/aws/ec2'
data/lib/hugo/cloud.rb CHANGED
@@ -39,6 +39,13 @@ class Hugo::Cloud
39
39
 
40
40
  end
41
41
 
42
+ def dns(hostname, &block)
43
+ dns_info = Hugo::Dns.instance
44
+ dns_info.hostname hostname
45
+ dns_info.instance_eval(&block) if block_given?
46
+ dns_info.deploy
47
+ end
48
+
42
49
  def deploy
43
50
  if cloud_app
44
51
  cloud_app.setup
data/lib/hugo/dns.rb ADDED
@@ -0,0 +1,57 @@
1
+ module Hugo; end
2
+
3
+ class Hugo::Dns
4
+ include Singleton
5
+ include Hugo::Mixin::ParamsValidate
6
+
7
+ attr_accessor :host
8
+
9
+ def deploy
10
+
11
+ # Initialize Resouce
12
+ Zerigo::DNS::Base.user = user
13
+ Zerigo::DNS::Base.password = token
14
+
15
+ # find or create domain
16
+ zone = Zerigo::DNS::Zone.find_or_create(domain)
17
+
18
+ # find or create host
19
+ host = Zerigo::DNS::Host.update_or_create(
20
+ :zone => zone.id,
21
+ :host => hostname,
22
+ :type => type,
23
+ :ttl => ttl,
24
+ :data => data
25
+ )
26
+ end
27
+
28
+ def user(arg=nil)
29
+ set_or_return(:user, arg, :kind_of => [String])
30
+ end
31
+
32
+ def token(arg=nil)
33
+ set_or_return(:token, arg, :kind_of => [String])
34
+ end
35
+
36
+ def hostname(arg=nil)
37
+ set_or_return(:hostname, arg, :kind_of => [String])
38
+ end
39
+
40
+ def domain(arg=nil)
41
+ set_or_return(:domain, arg, :kind_of => [String])
42
+ end
43
+
44
+ def type(arg=nil)
45
+ set_or_return(:type, arg, :kind_of => [String])
46
+ end
47
+
48
+ def ttl(arg=nil)
49
+ set_or_return(:ttl, arg, :kind_of => [Integer])
50
+ end
51
+
52
+ def data(arg=nil)
53
+ set_or_return(:data, arg, :kind_of => [String])
54
+ end
55
+
56
+
57
+ end
data/lib/hugo/mongo.rb ADDED
@@ -0,0 +1,8 @@
1
+ module Hugo; end
2
+
3
+ # Lauch Database Servers
4
+ class Hugo::Mongo
5
+ include Singleton
6
+ include Hugo::Mixin::ParamsValidate
7
+
8
+ end
@@ -122,10 +122,14 @@ describe Hugo::Database do
122
122
  db.user "admin"
123
123
  db.password "test"
124
124
  db.deploy
125
- db.info.inspect.should == '{:user=>"user", :uri=>"test.cwrzj6lxowfj.us-east-1.rds.amazonaws.com", :password=>"test", :name=>"mydb"}'
125
+ db.info[:user].should == "user"
126
+ db.info[:password].should == "test"
127
+ db.info[:uri].should == "test.cwrzj6lxowfj.us-east-1.rds.amazonaws.com"
128
+ db.info[:name].should == "mydb"
129
+
126
130
  end
127
131
 
128
132
 
129
133
 
130
134
  end
131
-
135
+
@@ -0,0 +1,29 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe "Hugo DNS" do
4
+ it "should be valid" do
5
+ zone = mock('Zerigo::DNS::Zone')
6
+ zone.stub!(:id).and_return(1)
7
+ Zerigo::DNS::Base.stub!(:user=)
8
+ Zerigo::DNS::Base.stub!(:password=)
9
+ Zerigo::DNS::Zone.stub!(:find_or_create).and_return(zone)
10
+ Zerigo::DNS::Host.stub!(:update_or_create).and_return(mock('Zerigo::DNS::Host'))
11
+
12
+ block = lambda do
13
+ cloud "my_cloud" do
14
+ dns "www" do
15
+ domain "example.com"
16
+ user "name@email.com"
17
+ token "1e23fjsda"
18
+ type "A"
19
+ ttl 86400
20
+ data "123.123.123.123"
21
+ end
22
+ end
23
+ end
24
+
25
+ lambda do
26
+ Hugo &block
27
+ end.should_not raise_error
28
+ end
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hugo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Wilson
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-02-04 00:00:00 -05:00
13
+ date: 2010-02-06 00:00:00 -05:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -73,6 +73,56 @@ dependencies:
73
73
  - !ruby/object:Gem::Version
74
74
  version: 2.0.16
75
75
  version:
76
+ - !ruby/object:Gem::Dependency
77
+ name: builder
78
+ type: :runtime
79
+ version_requirement:
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: "0"
85
+ version:
86
+ - !ruby/object:Gem::Dependency
87
+ name: i18n
88
+ type: :runtime
89
+ version_requirement:
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: "0"
95
+ version:
96
+ - !ruby/object:Gem::Dependency
97
+ name: activesupport
98
+ type: :runtime
99
+ version_requirement:
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 2.3.5
105
+ version:
106
+ - !ruby/object:Gem::Dependency
107
+ name: activeresource
108
+ type: :runtime
109
+ version_requirement:
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: 2.3.5
115
+ version:
116
+ - !ruby/object:Gem::Dependency
117
+ name: zerigo_dns
118
+ type: :runtime
119
+ version_requirement:
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 1.0.0
125
+ version:
76
126
  description: A easy to understand DSL that makes it dirt simple to deploy to the cloud.
77
127
  email: tom@jackhq.com
78
128
  executables: []
@@ -91,7 +141,9 @@ files:
91
141
  - lib/hugo/balancer.rb
92
142
  - lib/hugo/cloud.rb
93
143
  - lib/hugo/database.rb
144
+ - lib/hugo/dns.rb
94
145
  - lib/hugo/mixin/params_validate.rb
146
+ - lib/hugo/mongo.rb
95
147
  - spec/spec_helper.rb
96
148
  has_rdoc: true
97
149
  homepage: http://github.com/twilson63/hugo
@@ -128,5 +180,6 @@ test_files:
128
180
  - spec/lib/hugo/aws/rds_spec.rb
129
181
  - spec/lib/hugo/balancer_spec.rb
130
182
  - spec/lib/hugo/database_spec.rb
183
+ - spec/lib/hugo/dns_spec.rb
131
184
  - spec/lib/hugo_spec.rb
132
185
  - spec/spec_helper.rb