knife-pkg 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d88d0b8ba9e1993d05d21d5babe891083f8678e0
4
- data.tar.gz: bd181ee1ab861133f88dc1dd7cd5dda4bdc7e869
3
+ metadata.gz: ef5dd85d6dfea7ed525de94598be3975ee647056
4
+ data.tar.gz: 4c8ed9c2fcabd22f44e1dd36d73168a024c60e20
5
5
  SHA512:
6
- metadata.gz: 48c53c9a47a99e4562cb638729d7232a676467a6980c94bfa14434736f3a29e676b91e596305b0e94e763f8ac825258f575afbd640cba40b209313a53e75c6bd
7
- data.tar.gz: 57c5c1edc477623d8e4c214b25b42eb37bba0d09b41e518a11e860adccf48967ddeeaefe21803ffa51602743fc468508b335297c3b0098ffa7134f987d0124e2
6
+ metadata.gz: 2cf31489b4112015c47590125510991e0b6352e1bfa53a42febe6453c07e965d2a8497c53b02d4451d3c48f58e1af3b8828b0eca6ce8c99b1253af0efe154f6e
7
+ data.tar.gz: 275a7d8f6f2e6522d39bbe10d39ae70ccddadd947ce1da1bd78d1a528980cc66b026beb2f7a2880191c25e8b69f0811b1b6c939f2f710ffd2de4ffa88f0846f7
data/README.md CHANGED
@@ -83,8 +83,10 @@ $ knife pkg install updates "roles:webserver" -U "libxml2,gpgv,gnupg"
83
83
 
84
84
  ## Requirements
85
85
 
86
- * Chef(-Server) or anything else which supports `search(:node, "*:*")`
87
86
  * SSH access
87
+ * Chef(-Server) or anything else which supports `search(:node, "*:*")` (*not required when you use `-m`*)
88
+ * when `-m` option is given, `ohai` has to be installed on the node
89
+
88
90
 
89
91
  ## Installation
90
92
 
data/Vagrantfile ADDED
@@ -0,0 +1,16 @@
1
+ boxes = {
2
+ :debian => { :image => "https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_debian-7.1.0_provisionerless.box" },
3
+ :ubuntu => { :image => "https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box" }
4
+ }
5
+
6
+ Vagrant::configure("2") do |config|
7
+ boxes.each do |name, options|
8
+ config.omnibus.chef_version = 'latest'
9
+ config.berkshelf.enabled = false
10
+
11
+ config.vm.define name do |box_config|
12
+ box_config.vm.box = name.to_s
13
+ box_config.vm.box_url = options[:image]
14
+ end
15
+ end
16
+ end
@@ -21,7 +21,6 @@ class Chef
21
21
  def run
22
22
  # necessary for Knife::Ssh
23
23
  @longest = 0
24
- config[:manual] = false
25
24
 
26
25
  configure_attribute
27
26
  configure_sudo
@@ -53,6 +52,7 @@ class Chef
53
52
  node = node_by_hostname(server.host)
54
53
  if node
55
54
  cur_session = server.session(true)
55
+ ui.info("===> " + hostname_by_attribute(node))
56
56
  process(node, cur_session)
57
57
  cur_session.close
58
58
  else
@@ -69,22 +69,31 @@ class Chef
69
69
 
70
70
  def node_by_hostname(hostname)
71
71
  node = nil
72
- @action_nodes.each do |n|
73
- if hostname_by_attribute(n) == hostname
74
- node = n
75
- break
72
+ if config[:manual]
73
+ obj = Struct.new(:fqdn)
74
+ node = obj.new(hostname)
75
+ else
76
+ @action_nodes.each do |n|
77
+ if hostname_by_attribute(n) == hostname
78
+ node = n
79
+ break
80
+ end
76
81
  end
77
82
  end
78
83
  node
79
84
  end
80
85
 
81
86
  def hostname_by_attribute(node)
82
- if !config[:override_attribute] && node[:cloud] and node[:cloud][:public_hostname]
83
- i = node[:cloud][:public_hostname]
84
- elsif config[:override_attribute]
85
- i = extract_nested_value(node, config[:override_attribute])
87
+ if config[:manual]
88
+ node[:fqdn]
86
89
  else
87
- i = extract_nested_value(node, config[:attribute])
90
+ if !config[:override_attribute] && node[:cloud] and node[:cloud][:public_hostname]
91
+ i = node[:cloud][:public_hostname]
92
+ elsif config[:override_attribute]
93
+ i = extract_nested_value(node, config[:override_attribute])
94
+ else
95
+ i = extract_nested_value(node, config[:attribute])
96
+ end
88
97
  end
89
98
  end
90
99
  end
@@ -93,13 +93,19 @@ class Chef
93
93
  :proc => Proc.new { |pkgs| pkgs.split(',') },
94
94
  :default => Array.new
95
95
 
96
+ option :manual,
97
+ :short => "-m",
98
+ :long => "--manual-list",
99
+ :boolean => true,
100
+ :description => "QUERY is a space separated list of servers",
101
+ :default => false
102
+
103
+
96
104
  def run
97
105
  super
98
106
  end
99
107
 
100
108
  def process(node, session)
101
- ui.info("===> " + extract_nested_value(node, config[:attribute]))
102
-
103
109
  ::Knife::Pkg::PackageController.update!(node, session, config[:updates], pkg_options)
104
110
  end
105
111
  end
@@ -86,13 +86,19 @@ class Chef
86
86
  :boolean => true,
87
87
  :default => false
88
88
 
89
+ option :manual,
90
+ :short => "-m",
91
+ :long => "--manual-list",
92
+ :boolean => true,
93
+ :description => "QUERY is a space separated list of servers",
94
+ :default => false
95
+
89
96
 
90
97
  def run
91
98
  super
92
99
  end
93
100
 
94
101
  def process(node, session)
95
- ui.info("===> " + extract_nested_value(node, config[:attribute]))
96
102
  ::Knife::Pkg::PackageController.available_updates(node, session, pkg_options)
97
103
  end
98
104
  end
@@ -29,6 +29,8 @@ module Knife
29
29
  end
30
30
 
31
31
  def last_pkg_cache_update
32
+ raise_update_notifier_missing! unless update_notifier_installed?
33
+
32
34
  result = ShellCommand.exec("stat -c %y /var/lib/apt/periodic/update-success-stamp", @session)
33
35
  Time.parse(result.stdout.chomp)
34
36
  end
@@ -39,15 +41,12 @@ module Knife
39
41
 
40
42
  def available_updates
41
43
  packages = Array.new
42
- if !update_notifier_installed?
43
- raise RuntimeError, "Gna!! No update-notifier(-common) installed!? Go ahead, install it and come back!"
44
- else
45
- result = ShellCommand.exec("#{sudo}/usr/lib/update-notifier/apt_check.py -p", @session)
46
- result.stderr.split("\n").each do |item|
47
- package = Package.new(item)
48
- package.version = installed_version(package)
49
- packages << package
50
- end
44
+ raise_update_notifier_missing! unless update_notifier_installed?
45
+ result = ShellCommand.exec("#{sudo}/usr/lib/update-notifier/apt_check.py -p", @session)
46
+ result.stderr.split("\n").each do |item|
47
+ package = Package.new(item)
48
+ package.version = installed_version(package)
49
+ packages << package
51
50
  end
52
51
  packages
53
52
  end
@@ -59,7 +58,11 @@ module Knife
59
58
  end
60
59
 
61
60
  def update_notifier_installed?
62
- ShellCommand.exec("dpkg-query -W update-notifier-common 2>/dev/null || echo 'false'", @session).stdout.chomp != 'false'
61
+ ShellCommand.exec("dpkg-query -W update-notifier-common 2>/dev/null || echo 'false'", @session).stdout.chomp != 'false'
62
+ end
63
+
64
+ def raise_update_notifier_missing!
65
+ raise RuntimeError, "No update-notifier(-common) installed!? Install it and try again!"
63
66
  end
64
67
  end
65
68
  end
@@ -148,7 +148,12 @@ module Knife
148
148
 
149
149
  def self.init_controller(node, session, opts)
150
150
  begin
151
- ctrl_name = self.controller_name(node.platform)
151
+ ctrl_name = ''
152
+ if node.respond_to?(:platform)
153
+ ctrl_name = self.controller_name(node.platform)
154
+ else
155
+ ctrl_name = self.platform_by_local_ohai(session, opts)
156
+ end
152
157
  require File.join(File.dirname(__FILE__), ctrl_name)
153
158
  rescue LoadError
154
159
  raise NotImplementedError, "I'm sorry, but #{node.platform} is not supported!"
@@ -158,6 +163,10 @@ module Knife
158
163
  ctrl
159
164
  end
160
165
 
166
+ def self.platform_by_local_ohai(session, opts)
167
+ ShellCommand.exec("ohai platform| grep \\\"", session).stdout.strip.gsub(/\"/,'')
168
+ end
169
+
161
170
  def self.controller_name(platform)
162
171
  case platform
163
172
  when 'debian', 'ubuntu'
@@ -1,5 +1,5 @@
1
1
  module Knife
2
2
  module Pkg
3
- VERSION = '0.0.1'
3
+ VERSION = '0.0.2'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-pkg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Holger Amann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-14 00:00:00.000000000 Z
11
+ date: 2013-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef
@@ -79,6 +79,7 @@ files:
79
79
  - LICENSE.txt
80
80
  - README.md
81
81
  - Rakefile
82
+ - Vagrantfile
82
83
  - knife-pkg.gemspec
83
84
  - lib/chef/knife/pkg_base.rb
84
85
  - lib/chef/knife/pkg_install_updates.rb