rig 0.6.0 → 0.6.1

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.
@@ -0,0 +1,110 @@
1
+ # Changelog
2
+
3
+ ## v0.6.0:
4
+ * add changelog task
5
+ * fix smarter_templates merge conflict
6
+ * smarter templates:
7
+ * use a ruby dsl instead of yaml
8
+ * clean up environment handling of templates
9
+ * changes required for supporting new template framework
10
+ * remove old yaml template examples
11
+ * add a duo template as a basis for new multi-instance templates
12
+
13
+ ## v0.5.2:
14
+ * fix bug with 'rig init', do not fail if config file does not exist
15
+
16
+ ## v0.5.1:
17
+ * copy paste bug was causing commands not to load
18
+
19
+ ## v0.5.0:
20
+ * refactor commands down to single class each
21
+ * refactor commands
22
+ * remove database command in favor of plugin
23
+ * clean up plugin framework and add support for commands
24
+ * clean up account and configuration handling
25
+ * clean up log configuration handling
26
+ * clean up chef and scout plugins
27
+ * tweaks for chef userdata package
28
+ * change name hooks -> plugins. cleaned up code. chef and scout plugins working. changed configuration to be part of the plugins configuration block, rather than a separate block.
29
+ * hook framework working. supports event hooks and adding commands to the CLI
30
+ * getting hooks set up
31
+
32
+ ## v0.4.5:
33
+ * userdata refactor.
34
+ * userdata packages allow customization of userdata scripts
35
+ * default userdata shouldn't call apt-get upgrade
36
+ * availability zones should be shown in ouput. make sure balancers only add zones that have instances
37
+ * missed updating the accounts default file with example database info
38
+
39
+ ## v0.4.4:
40
+ * rvm integration. add mongo support to CLI.
41
+
42
+ ## v0.4.3:
43
+ * fix bug in Instance#find_by_nick
44
+
45
+ ## v0.4.2:
46
+ * additional info in instance lists
47
+ * fixes for ruby 1.9.3
48
+ * balancer test command, should do something similar to the elb test script
49
+ * get 'instance create' command working
50
+ * support user switch for 'rig ssh'
51
+ * set balancer DNS ttl to 30, to deal with timeout issues
52
+ * clean up Instance#find_by_nick: was more complicated than it needed to be
53
+
54
+ ## v0.4.1:
55
+ * bump version again. remove 1.9.3 dependency
56
+
57
+ ## v0.4.0:
58
+ * merge feature/config_refactor
59
+ * refactor configuration
60
+ * config.yml
61
+ * this file should only contain rig configuration, nothing related to accounts
62
+ * don't use redundant rig node at top level of this file
63
+ * accounts
64
+ * change the solo template to use a more standardized role name (appserver)
65
+ * clean up rig capistrano integration, don't need to pull environments and servers before we know what environment we're working with
66
+ * clean up configuration usage, use a standard Hash rather than Oconfig object
67
+ * this should make everything more standardized
68
+ * and solve the ruby 1.9.3 issues
69
+ * remove commented ribbon dependency
70
+ * get rid of unused command options
71
+ * bug fixes
72
+ * capistrano integration fix for handling environments
73
+ * clean up fog dependencies for balancer
74
+
75
+ ## v0.3.8:
76
+ * config cleanup
77
+ * need to refactor config a bit, should remove global values from config, should be in account or template. config should be just for rig, nothing else
78
+ * removed some debug statements
79
+ * Listener Management from the CLI
80
+ * added listener subcommand for balancer
81
+ * added add subcommand for listener
82
+ * added rm subcommand for listener
83
+ * clean up configuration files
84
+
85
+ ## v0.3.7:
86
+
87
+ ## v0.3.6:
88
+
89
+ ## v0.3.5:
90
+ * environment protection: now prevents environment#destroy if environment#protected?
91
+ * some bug fixes. capistrano / chef / rig conflicts worked out (makes it easier to run cap with rig). instance#find was using wrong fog call (should be #get, not #find). configuration clean up. account handling working better now. some minor console ui stuff. environment protection implemented, need to add the check before destroy
92
+
93
+ ## v0.3.4:
94
+ * refactor complete. environments build successfully. still so much to do
95
+ * major refactor should be done. Moved 'cloud' classes to 'model'. worked out configuration overrides / precedence
96
+ * major refactor
97
+ * massive refactor
98
+ * some config and init changes, cleanup
99
+
100
+ ## v0.3.3:
101
+ * fixes for stupid bugs. ami vs. image, should use generic term. bad configuration overrides, need a cleaner way to handle this
102
+
103
+ ## v0.3.2:
104
+ * don't load chef until after configuration is loaded (was causing config to load much earlier than intended). clean up way we get account
105
+ * add account support, refactor configuration.
106
+ * refactor SSH support
107
+ * instance list shows private ip. Gemfile development dependencies
108
+
109
+ ## v0.3.1:
110
+
data/Gemfile CHANGED
@@ -3,6 +3,7 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in rig.gemspec
4
4
  gemspec
5
5
 
6
+ gem 'rake'
6
7
  gem 'fog'
7
8
  gem 'chef', '~> 0.10.8'
8
9
  gem 'net-ssh', '~> 2.1.4'
data/Rakefile CHANGED
@@ -1,11 +1,10 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
3
 
4
- task :changelog do
4
+ def changelog(last=nil, single=false)
5
5
  command="git --no-pager log --format='%an::::%h::::%s'"
6
6
 
7
7
  list = `git tag`
8
- last = nil
9
8
 
10
9
  puts "# Changelog"
11
10
  puts
@@ -20,8 +19,11 @@ task :changelog do
20
19
  log.lines.each do |line|
21
20
  (who, hash, msg) = line.split('::::')
22
21
  unless check[msg]
23
- unless msg =~ /^Merge branch/ || msg =~ /^(v|version|changes for|preparing|ready for release|ready to release|bump version)*\s*(v|version)*\d+\.\d+\.\d+/
24
- out << "#{msg.gsub(" *", "\n*")}"
22
+ unless msg =~ /^Merge branch/ || msg =~ /CHANGELOG/ || msg =~ /^(v|version|changes for|preparing|ready for release|ready to release|bump version)*\s*(v|version)*\d+\.\d+\.\d+/
23
+ msg.gsub(" *", "\n*").gsub(/^\*\*/, " *").lines.each do |l|
24
+ line = l =~ /^(\s+)*\*/ ? l : "* #{l}"
25
+ out << line
26
+ end
25
27
  check[msg] = hash
26
28
  end
27
29
  end
@@ -33,5 +35,16 @@ task :changelog do
33
35
  end
34
36
 
35
37
  last = tag
38
+ exit if single
36
39
  end
37
40
  end
41
+
42
+ desc "generate changelog output"
43
+ task :changelog do
44
+ changelog
45
+ end
46
+
47
+ desc "show current changes (changelog output from HEAD to most recent tag)"
48
+ task :current do
49
+ changelog("HEAD",true)
50
+ end
data/bin/rig CHANGED
@@ -3,13 +3,3 @@ require 'rig'
3
3
  require 'rig/command'
4
4
 
5
5
  Rig::Command::Main.run
6
-
7
- #begin
8
- # Rig::Command::Main.run
9
- #rescue Exception => e
10
- # puts e.message
11
- # if $DEBUG
12
- # puts $!
13
- # puts $@
14
- # end
15
- #end
@@ -23,10 +23,10 @@ module Rig
23
23
  self.environment_destroy(name)
24
24
  end
25
25
 
26
- on "instance:create" do |args|
27
- # do nothing
28
- # the instance will add itself through the chef-client call in userdata package
29
- end
26
+ #on "instance:create" do |args|
27
+ # # do nothing
28
+ # # the instance will add itself through the chef-client call in userdata package
29
+ #end
30
30
 
31
31
  on "instance:destroy" do |args|
32
32
  instance = args.shift
@@ -65,7 +65,7 @@ module Rig
65
65
  env.save
66
66
  true
67
67
  rescue => e
68
- puts "*** chef exception: #{e.message}"
68
+ Rig::Log.error "*** chef exception: #{e.message}"
69
69
  false
70
70
  end
71
71
 
@@ -75,7 +75,7 @@ module Rig
75
75
  env.destroy if env
76
76
  true
77
77
  rescue => e
78
- puts "*** chef exception: #{e.message}"
78
+ Rig::Log.error "*** chef exception: #{e.message}"
79
79
  false
80
80
  end
81
81
 
@@ -81,7 +81,7 @@ module Rig
81
81
  raise unless auth_admin
82
82
  connect.database_info
83
83
  rescue => e
84
- puts "exception: <#{e.class}> #{e.message} at #{e.backtrace.first}"
84
+ Rig::Log.error "exception: <#{e.class}> #{e.message} at #{e.backtrace.first}"
85
85
  end
86
86
  end
87
87
 
@@ -30,10 +30,10 @@ module Rig
30
30
  yaml = @config.to_yaml
31
31
  file = "#@dir/config.yml"
32
32
  back = "#{file}.#{Time.now.to_i}"
33
- puts "backing up configuration -> #{back}"
33
+ Rig::Log.info "backing up configuration -> #{back}"
34
34
  FileUtils.cp(file, back)
35
35
  File.open(file, "w") { |f| f.write(yaml+"\n") }
36
- puts "new configuration saved."
36
+ Rig::Log.info "new configuration saved."
37
37
  end
38
38
  end
39
39
  end
@@ -15,6 +15,15 @@ module Rig
15
15
  def load(logging)
16
16
  logging ||= {}
17
17
  begin
18
+ console = Logger.new(STDOUT)
19
+ console_level = nil
20
+ console_config = logging.delete(:console)
21
+ if console_config && console_config[:level]
22
+ console_level = LEVELS[console_config[:level].to_sym]
23
+ end
24
+ console.level = console_level || Logger::INFO
25
+ add(console, proc {|s, _, _, m| "#{m}\n"})
26
+
18
27
  logging.each do |name, data|
19
28
  level = data[:level]
20
29
  opts = [*data[:opts]].flatten
@@ -42,8 +51,8 @@ module Rig
42
51
  end
43
52
  end
44
53
 
45
- def add(logger)
46
- logger.formatter = proc { |severity, datetime, progname, msg| "#{$$}:#{datetime.strftime("%s")} #{severity[0]} #{msg}\n" }
54
+ def add(logger, formatter=nil)
55
+ logger.formatter = formatter || proc { |severity, datetime, progname, msg| "#{$$}:#{datetime.strftime("%s")} #{severity[0]} #{msg}\n" }
47
56
  @loggers << logger
48
57
  end
49
58
 
@@ -19,10 +19,10 @@ module Rig
19
19
  yaml = data.to_yaml
20
20
  file = "#{dir}/#{name}.yml"
21
21
  back = "#{file}.#{Time.now.to_i}"
22
- puts "backing up configuration -> #{back}"
22
+ Rig::Log.info "backing up configuration -> #{back}"
23
23
  FileUtils.cp(file, back)
24
24
  File.open(file, "w") {|f| f.write(yaml+"\n")}
25
- puts "new configuration saved."
25
+ Rig::Log.info "new configuration saved."
26
26
  end
27
27
 
28
28
  private
@@ -1,4 +1,3 @@
1
- require 'awesome_print'
2
1
 
3
2
  module Rig
4
3
  module Model
@@ -22,7 +21,7 @@ module Rig
22
21
  def create(name, listeners=[], zones=[])
23
22
  b = self.new(name, listeners, zones)
24
23
  b.save if b
25
- puts ".. created: #{name}"
24
+ Rig::Log.info ".. created: #{name}"
26
25
  b
27
26
  end
28
27
 
@@ -38,7 +37,7 @@ module Rig
38
37
  list = [*list]
39
38
  lbs = list.map { |e| e.kind_of?(String) ? self.find(e) : e }
40
39
  lbs.each do |lb|
41
- puts ".. destroying: #{lb.id}"
40
+ Rig::Log.info ".. destroying: #{lb.id}"
42
41
  lb.destroy if lb
43
42
  end
44
43
  end
@@ -69,8 +68,9 @@ module Rig
69
68
  elb = find(name)
70
69
  (from_proto, from_port) = from.split(':')
71
70
  match = elb.listeners.select {|l| l.protocol == from_proto && l.lb_port == from_port.to_i }
71
+ #TODO: handle output in command, not here
72
72
  if match.count > 1
73
- puts "more than one listener matched"
73
+ Rig::Log.info "more than one listener matched"
74
74
  match.each do |l|
75
75
  ap l.attributes
76
76
  end
@@ -43,10 +43,10 @@ module Rig
43
43
  list = zone.records.all.select {|e| e.attributes[:name] == "#{name}."}
44
44
  record = list.first
45
45
  if record
46
- puts ".. destroying zone: #{name}"
46
+ Rig::Log.info ".. destroying zone: #{name}"
47
47
  record.destroy
48
48
  else
49
- puts "record not found: #{name}"
49
+ Rig::Log.info "record not found: #{name}"
50
50
  end
51
51
  end
52
52
  end
@@ -33,7 +33,7 @@ module Rig
33
33
  def destroy(name, template=nil, opts={ })
34
34
  env = self.find(name, template, opts)
35
35
  raise "environment has protected instances" if env.protected?
36
- puts "destroying: #{name}"
36
+ Rig::Log.info "destroying: #{name}"
37
37
  env.destroy
38
38
  true
39
39
  rescue => e
@@ -57,7 +57,7 @@ module Rig
57
57
  end
58
58
 
59
59
  def save
60
- puts "creating instances"
60
+ Rig::Log.info "creating instances"
61
61
  load_config
62
62
  set = { }
63
63
 
@@ -76,7 +76,7 @@ module Rig
76
76
  # but you won't be able to easily connect to it
77
77
  raise "No key_name (keypair) set." unless o[:key_name]
78
78
 
79
- Rig::Log.debug "creating instance: name:#{n} environment:#@name roles:#{s.roles.inspect}"
79
+ Rig::Log.info "creating instance: name:#{n} environment:#@name roles:#{s.roles.inspect}"
80
80
  instance = Rig::Model::Instance.create(o, 'Name' => n, 'Environment' => name, 'Roles' => s.roles.join(","))
81
81
  set[s.balancer] ||= []
82
82
  set[s.balancer] << instance if s.balancer
@@ -104,7 +104,6 @@ module Rig
104
104
  sleep 3
105
105
  reload
106
106
 
107
-
108
107
  Rig::Log.info "associating servers' DNS"
109
108
  @servers.each do |server|
110
109
  record = "#{server.tags['Name']}.#{Rig.get_config(:dns_zone)}"
@@ -115,7 +114,7 @@ module Rig
115
114
  if dns
116
115
  Rig::Model::Dns.create(record, dns)
117
116
  else
118
- Rig::Log.info "server #{server.id} doesn't have public_ip_address"
117
+ Rig::Log.warn "server #{server.id} doesn't have public_ip_address"
119
118
  end
120
119
  end
121
120
 
@@ -123,35 +122,29 @@ module Rig
123
122
  rescue => e
124
123
  Rig::Log.error "error creating environment:\n#{e.message} at #{e.backtrace.join("\n")}"
125
124
  destroy
126
- Rig::Log.error "error creating environment: #{e.message} at #{e.backtrace.first}"
127
125
  end
128
126
 
129
127
  def destroy
130
- puts "removing dns from servers"
128
+ Rig::Log.info "removing dns from servers"
131
129
  @servers.each do |server|
132
130
  Rig::Model::Dns.destroy("#{server.tags['Name']}.#{Rig.get_config(:dns_zone)}") if server.tags['Name']
133
131
  end
134
132
 
135
133
  roles = @servers.collect { |s| s.tags['Role'] }.compact
136
134
  roles.each do |r|
137
- puts "removing role balancer dns"
135
+ Rig::Log.info "removing role balancer dns"
138
136
  Rig::Model::Dns.destroy("#{r}.#{name}.env.#{Rig.get_config(:dns_zone)}")
139
137
  end
140
138
 
141
- puts "removing primary dns"
139
+ Rig::Log.info "removing primary dns"
142
140
  Rig::Model::Dns.destroy("#{name}.env.#{Rig.get_config(:dns_zone)}")
143
141
 
144
- puts "destroying servers"
142
+ Rig::Log.info "destroying servers"
145
143
  Rig::Model::Instance.destroy(@servers)
146
144
 
147
- puts "destroying balancers"
145
+ Rig::Log.info "destroying balancers"
148
146
  Rig::Model::Balancer.destroy(@balancers)
149
147
 
150
- #if Rig.config[:chef]
151
- # puts "destroying chef environment"
152
- # Rig::Chef.environment_destroy(name)
153
- #end
154
-
155
148
  Rig::Plugin.run "environment:destroy", self
156
149
  end
157
150
 
@@ -14,11 +14,11 @@ module Rig
14
14
 
15
15
  def find(id)
16
16
  if id =~ /^i-/
17
- puts "find #{id}"
17
+ Rig::Log.info "find #{id}"
18
18
  Rig::Connection.compute.servers.get(id)
19
19
  else
20
20
  # must be tag:Name
21
- puts "all tag:Name => #{id}"
21
+ Rig::Log.info "all tag:Name => #{id}"
22
22
  Rig::Connection.compute.servers.all({"tag:Name"=>id})
23
23
  end
24
24
  end
@@ -34,13 +34,15 @@ module Rig
34
34
  def find_by_nick(name)
35
35
  (role, env) = name.match(/(\w+)\.(\w+)/)[1..2]
36
36
  find_by_environment(env).select {|s| s.tags['Name'] =~ /^#{role}/ }
37
+ rescue => e
38
+ Rig::Log.error "error finding server by nickname #{name}. name should be of the form: role#.environment"
37
39
  end
38
40
 
39
41
  def create(opts, tags={})
40
42
  fog = Rig::Connection.compute
41
43
  server = fog.servers.create(opts)
42
44
  fog.create_tags(server.id, tags) if tags.count > 0
43
- puts ".. created: #{server.id}"
45
+ Rig::Log.info ".. created: #{server.id}"
44
46
  Rig::Plugin.run "instance:create", server
45
47
  server
46
48
  end
@@ -51,7 +53,7 @@ module Rig
51
53
  if list.count > 0
52
54
  compute = Rig::Connection.compute
53
55
  ids = list.map {|e| e.kind_of?(String) ? e : e.id}
54
- puts ".. destroying: #{ids.inspect}"
56
+ Rig::Log.info ".. destroying: #{ids.inspect}"
55
57
 
56
58
  # destroy the instances
57
59
  list.each do |e|
@@ -3,7 +3,7 @@ unless defined?(Rig::Version)
3
3
  module Version
4
4
  MAJOR = 0
5
5
  MINOR = 6
6
- TINY = 0
6
+ TINY = 1
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-20 00:00:00.000000000 Z
12
+ date: 2012-06-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: clamp
@@ -117,6 +117,7 @@ extra_rdoc_files: []
117
117
  files:
118
118
  - .gitignore
119
119
  - .rvmrc
120
+ - CHANGELOG.md
120
121
  - Gemfile
121
122
  - LICENSE
122
123
  - README.md