author | Drew Fisher <drew.fisher@oracle.com> |
Wed, 22 Jan 2014 15:55:22 -0700 | |
changeset 1655 | 2490bf4f53ea |
parent 1474 | 97927b6c1ece |
permissions | -rw-r--r-- |
1409
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1 |
Enhance the zone provider to configure zones using a zonecfg export file format. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2 |
Enhance the output of puppet resource zone, and fix zone clone functionality. |
1655
2490bf4f53ea
PSARC 2013/426 Puppet 3.4.1
Drew Fisher <drew.fisher@oracle.com>
parents:
1474
diff
changeset
|
3 |
--- puppet-3.4.1/lib/puppet/provider/zone/solaris.rb.orig 2013-07-29 15:48:58.118553584 -0600 |
2490bf4f53ea
PSARC 2013/426 Puppet 3.4.1
Drew Fisher <drew.fisher@oracle.com>
parents:
1474
diff
changeset
|
4 |
+++ puppet-3.4.1/lib/puppet/provider/zone/solaris.rb 2013-07-29 15:49:21.053204412 -0600 |
1409
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
5 |
@@ -1,5 +1,5 @@ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
6 |
Puppet::Type.type(:zone).provide(:solaris) do |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
7 |
- desc "Provider for Solaris Zones." |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
8 |
+ desc "Provider for Solaris zones." |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
9 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
10 |
commands :adm => "/usr/sbin/zoneadm", :cfg => "/usr/sbin/zonecfg" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
11 |
defaultfor :osfamily => :solaris |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
12 |
@@ -8,20 +8,20 @@ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
13 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
14 |
# Convert the output of a list into a hash |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
15 |
def self.line2hash(line) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
16 |
- fields = [:id, :name, :ensure, :path, :uuid, :brand, :iptype] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
17 |
+ fields = [:id, :name, :ensure, :zonepath, :uuid, :brand, :iptype ] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
18 |
properties = Hash[fields.zip(line.split(':'))] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
19 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
20 |
- del_id = [:brand, :uuid] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
21 |
+ del_id = [:id, :uuid] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
22 |
+ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
23 |
# Configured but not installed zones do not have IDs |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
24 |
del_id << :id if properties[:id] == "-" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
25 |
del_id.each { |p| properties.delete(p) } |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
26 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
27 |
properties[:ensure] = properties[:ensure].intern |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
28 |
- properties[:iptype] = 'exclusive' if properties[:iptype] == 'excl' |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
29 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
30 |
properties |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
31 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
32 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
33 |
+ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
34 |
def self.instances |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
35 |
# LAK:NOTE See http://snurl.com/21zf8 [groups_google_com] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
36 |
x = adm(:list, "-cp").split("\n").collect do |line| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
37 |
@@ -29,109 +29,64 @@ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
38 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
39 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
40 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
41 |
- def multi_conf(name, should, &action) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
42 |
- has = properties[name] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
43 |
- has = [] if has == :absent |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
44 |
- rms = has - should |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
45 |
- adds = should - has |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
46 |
- (rms.map{|o| action.call(:rm,o)} + adds.map{|o| action.call(:add,o)}).join("\n") |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
47 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
48 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
49 |
- def self.def_prop(var, str) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
50 |
- define_method('%s_conf' % var.to_s) do |v| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
51 |
- str % v |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
52 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
53 |
- define_method('%s=' % var.to_s) do |v| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
54 |
- setconfig self.send( ('%s_conf'% var).intern, v) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
55 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
56 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
57 |
+ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
58 |
+ # Read in the zone configuration parameters and properties and |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
59 |
+ # perform the zone configuration. Options are cloning the zone, |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
60 |
+ # which needs a zonecfg_export file, configuring an archive, which |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
61 |
+ # takes optional zonecfg_export and archived_zonename parameters, |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
62 |
+ # or performing a zone configuration, which requires a zonecfg_export |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
63 |
+ # file or string. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
64 |
+ def configure |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
65 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
66 |
- def self.def_multiprop(var, &conf) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
67 |
- define_method(var.to_s) do |v| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
68 |
- o = properties[var] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
69 |
- return '' if o.nil? or o == :absent |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
70 |
- o.join(' ') |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
71 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
72 |
- define_method('%s=' % var.to_s) do |v| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
73 |
- setconfig self.send( ('%s_conf'% var).intern, v) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
74 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
75 |
- define_method('%s_conf' % var.to_s) do |v| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
76 |
- multi_conf(var, v, &conf) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
77 |
+ if @resource[:archive].nil? && @resource[:zonecfg_export].nil? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
78 |
+ raise Puppet::Error, "No configuration resource is defined." |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
79 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
80 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
81 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
82 |
- def_prop :iptype, "set ip-type=%s" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
83 |
- def_prop :autoboot, "set autoboot=%s" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
84 |
- def_prop :path, "set zonepath=%s" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
85 |
- def_prop :pool, "set pool=%s" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
86 |
- def_prop :shares, "add rctl\nset name=zone.cpu-shares\nadd value (priv=privileged,limit=%s,action=none)\nend" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
87 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
88 |
- def_multiprop :ip do |action, str| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
89 |
- interface, ip, defrouter = str.split(':') |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
90 |
- case action |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
91 |
- when :add |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
92 |
- cmd = ["add net"] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
93 |
- cmd << "set physical=#{interface}" if interface |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
94 |
- cmd << "set address=#{ip}" if ip |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
95 |
- cmd << "set defrouter=#{defrouter}" if defrouter |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
96 |
- cmd << "end" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
97 |
- cmd.join("\n") |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
98 |
- when :rm |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
99 |
- if ip |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
100 |
- "remove net address=#{ip}" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
101 |
- elsif interface |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
102 |
- "remove net physical=#{interface}" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
103 |
- else |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
104 |
- raise ArgumentError, "can not remove network based on default router" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
105 |
+ command = String.new |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
106 |
+ if @resource[:clone] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
107 |
+ if !@resource[:zonecfg_export] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
108 |
+ raise Puppet::Error, "A zone configuration must be defined to |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
109 |
+ clone a zone." |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
110 |
+ end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
111 |
+ command = "#{command(:cfg)} -z #{@resource[:name]} -f #{@resource[:zonecfg_export]}" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
112 |
+ else |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
113 |
+ unless @resource[:zonecfg_export].nil? || @resource[:zonecfg_export].empty? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
114 |
+ begin |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
115 |
+ file = File.open(@resource[:zonecfg_export], "rb") |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
116 |
+ str = file.read.gsub(/[\n]\n*\s*/, "; ") |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
117 |
+ rescue |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
118 |
+ str = @resource[:zonecfg_export].gsub(/[\n]\n*\s*/, "; ") |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
119 |
+ ensure |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
120 |
+ file.close unless file.nil? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
121 |
+ end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
122 |
+ @property_hash.clear |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
123 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
124 |
- else self.fail action |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
125 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
126 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
127 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
128 |
- def_multiprop :dataset do |action, str| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
129 |
- case action |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
130 |
- when :add; ['add dataset',"set name=#{str}",'end'].join("\n") |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
131 |
- when :rm; "remove dataset name=#{str}" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
132 |
- else self.fail action |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
133 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
134 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
135 |
+ unless @resource[:archive].nil? || @resource[:archive].empty? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
136 |
+ if !str.nil? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
137 |
+ command = "#{command(:cfg)} -z #{@resource[:name]} \'create -a #{@resource[:archive]};#{str}\'" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
138 |
+ else |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
139 |
+ command = "#{command(:cfg)} -z #{@resource[:name]} create -a #{@resource[:archive]} " |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
140 |
+ end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
141 |
+ if @resource[:archived_zonename] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
142 |
+ command << " -z #{@resource[:archived_zonename]}" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
143 |
+ end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
144 |
+ end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
145 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
146 |
- def_multiprop :inherit do |action, str| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
147 |
- case action |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
148 |
- when :add; ['add inherit-pkg-dir', "set dir=#{str}",'end'].join("\n") |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
149 |
- when :rm; "remove inherit-pkg-dir dir=#{str}" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
150 |
- else self.fail action |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
151 |
+ if !@resource[:zonecfg_export].nil? && @resource[:archive].nil? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
152 |
+ command = "#{command(:cfg)} -z #{@resource[:name]} \'#{str}\'" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
153 |
+ end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
154 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
155 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
156 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
157 |
- def my_properties |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
158 |
- [:path, :iptype, :autoboot, :pool, :shares, :ip, :dataset, :inherit] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
159 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
160 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
161 |
- # Perform all of our configuration steps. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
162 |
- def configure |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
163 |
- self.fail "Path is required" unless @resource[:path] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
164 |
- arr = ["create -b #{@resource[:create_args]}"] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
165 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
166 |
- # Then perform all of our configuration steps. It's annoying |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
167 |
- # that we need this much internal info on the resource. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
168 |
- self.resource.properties.each do |property| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
169 |
- next unless my_properties.include? property.name |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
170 |
- method = (property.name.to_s + '_conf').intern |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
171 |
- arr << self.send(method ,@resource[property.name]) unless property.safe_insync?(properties[property.name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
172 |
+ if command |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
173 |
+ r = exec_cmd(:cmd => command) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
174 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
175 |
- setconfig(arr.join("\n")) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
176 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
177 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
178 |
def destroy |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
179 |
zonecfg :delete, "-F" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
180 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
181 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
182 |
- def add_cmd(cmd) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
183 |
- @cmds = [] if @cmds.nil? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
184 |
- @cmds << cmd |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
185 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
186 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
187 |
def exists? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
188 |
properties[:ensure] != :absent |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
189 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
190 |
@@ -139,31 +94,31 @@ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
191 |
# We cannot use the execpipe in util because the pipe is not opened in |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
192 |
# read/write mode. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
193 |
def exec_cmd(var) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
194 |
- # In bash, the exit value of the last command is the exit value of the |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
195 |
- # entire pipeline |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
196 |
- out = execute("echo \"#{var[:input]}\" | #{var[:cmd]}", :failonfail => false, :combine => true) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
197 |
- st = $?.exitstatus |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
198 |
- {:out => out, :exit => st} |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
199 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
200 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
201 |
- # Clear out the cached values. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
202 |
- def flush |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
203 |
- return if @cmds.nil? || @cmds.empty? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
204 |
- str = (@cmds << "commit" << "exit").join("\n") |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
205 |
- @cmds = [] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
206 |
- @property_hash.clear |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
207 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
208 |
- command = "#{command(:cfg)} -z #{@resource[:name]} -f -" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
209 |
- r = exec_cmd(:cmd => command, :input => str) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
210 |
- if r[:exit] != 0 or r[:out] =~ /not allowed/ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
211 |
- raise ArgumentError, "Failed to apply configuration" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
212 |
+ if var[:input] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
213 |
+ execute("echo \"#{var[:input]}\" | #{var[:cmd]}", :failonfail => true, :combine => true) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
214 |
+ else |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
215 |
+ execute("#{var[:cmd]}", :failonfail => true, :combine => true) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
216 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
217 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
218 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
219 |
+ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
220 |
def install(dummy_argument=:work_arround_for_ruby_GC_bug) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
221 |
+ if ['5.11', '5.12'].include? Facter.value(:kernelrelease) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
222 |
+ if !@resource[:install_args] and @resource[:config_profile] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
223 |
+ @resource[:install_args] = " -c " + @resource[:config_profile] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
224 |
+ elsif !@resource[:install_args] and @resource[:archive] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
225 |
+ @resource[:install_args] = " -a " + @resource[:archive] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
226 |
+ if @resource[:archived_zonename] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
227 |
+ @resource[:install_args] << " -z " + @resource[:archived_zonename] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
228 |
+ end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
229 |
+ elsif @resource[:config_profile] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
230 |
+ @resource[:install_args] << " -c " + @resource[:config_profile] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
231 |
+ end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
232 |
+ end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
233 |
+ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
234 |
if @resource[:clone] # TODO: add support for "-s snapshot" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
235 |
- zoneadm :clone, @resource[:clone] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
236 |
- elsif @resource[:install_args] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
237 |
+ zoneadm :clone, @resource[:clone] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
238 |
+ elsif @resource[:install_args] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
239 |
zoneadm :install, @resource[:install_args].split(" ") |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
240 |
else |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
241 |
zoneadm :install |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
242 |
@@ -183,11 +138,12 @@ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
243 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
244 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
245 |
@property_hash.dup |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
246 |
+ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
247 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
248 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
249 |
# We need a way to test whether a zone is in process. Our 'ensure' |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
250 |
# property models the static states, but we need to handle the temporary ones. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
251 |
- def processing? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
252 |
+ def processing? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
253 |
hash = status |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
254 |
return false unless hash |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
255 |
["incomplete", "ready", "shutting_down"].include? hash[:ensure] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
256 |
@@ -215,7 +171,6 @@ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
257 |
# |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
258 |
def getconfig |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
259 |
output = zonecfg :info |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
260 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
261 |
name = nil |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
262 |
current = nil |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
263 |
hash = {} |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
264 |
@@ -245,14 +200,9 @@ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
265 |
hash |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
266 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
267 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
268 |
- # Execute a configuration string. Can't be private because it's called |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
269 |
- # by the properties. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
270 |
- def setconfig(str) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
271 |
- add_cmd str |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
272 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
273 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
274 |
def start |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
275 |
# Check the sysidcfg stuff |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
276 |
+ if ['5.10'].include? Facter.value(:kernelrelease) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
277 |
if cfg = @resource[:sysidcfg] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
278 |
self.fail "Path is required" unless @resource[:path] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
279 |
zoneetc = File.join(@resource[:path], "root", "etc") |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
280 |
@@ -273,7 +223,9 @@ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
281 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
282 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
283 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
284 |
+ end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
285 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
286 |
+ # Boots the zone |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
287 |
zoneadm :boot |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
288 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
289 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
290 |
@@ -286,64 +238,35 @@ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
291 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
292 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
293 |
main = self.class.line2hash(output.chomp) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
294 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
295 |
- # Now add in the configuration information |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
296 |
- config_status.each do |name, value| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
297 |
- main[name] = value |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
298 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
299 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
300 |
main |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
301 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
302 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
303 |
def ready |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
304 |
+ # Prepare the zone |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
305 |
zoneadm :ready |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
306 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
307 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
308 |
def stop |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
309 |
- zoneadm :halt |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
310 |
+ # Shutdown the zone |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
311 |
+ zoneadm :halt |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
312 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
313 |
+ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
314 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
315 |
def unconfigure |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
316 |
+ # Unconfigure and delete the zone |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
317 |
zonecfg :delete, "-F" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
318 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
319 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
320 |
def uninstall |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
321 |
+ # Uninstall the zone |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
322 |
zoneadm :uninstall, "-F" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
323 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
324 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
325 |
private |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
326 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
327 |
- # Turn the results of getconfig into status information. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
328 |
- def config_status |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
329 |
- config = getconfig |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
330 |
- result = {} |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
331 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
332 |
- result[:autoboot] = config[:autoboot] ? config[:autoboot].intern : :true |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
333 |
- result[:pool] = config[:pool] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
334 |
- result[:shares] = config[:shares] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
335 |
- if dir = config["inherit-pkg-dir"] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
336 |
- result[:inherit] = dir.collect { |dirs| dirs[:dir] } |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
337 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
338 |
- if datasets = config["dataset"] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
339 |
- result[:dataset] = datasets.collect { |dataset| dataset[:name] } |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
340 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
341 |
- result[:iptype] = config[:'ip-type'] if config[:'ip-type'] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
342 |
- if net = config["net"] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
343 |
- result[:ip] = net.collect do |params| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
344 |
- if params[:defrouter] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
345 |
- "#{params[:physical]}:#{params[:address]}:#{params[:defrouter]}" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
346 |
- elsif params[:address] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
347 |
- "#{params[:physical]}:#{params[:address]}" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
348 |
- else |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
349 |
- params[:physical] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
350 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
351 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
352 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
353 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
354 |
- result |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
355 |
- end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
356 |
- |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
357 |
def zoneadm(*cmd) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
358 |
+ # Execute the zoneadm command with the arguments |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
359 |
+ # provided |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
360 |
adm("-z", @resource[:name], *cmd) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
361 |
rescue Puppet::ExecutionFailure => detail |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
362 |
self.fail "Could not #{cmd[0]} zone: #{detail}" |