hugo 0.2.0 → 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.
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