author | Drew Fisher <drew.fisher@oracle.com> |
Mon, 29 Jul 2013 16:02:38 -0600 | |
changeset 1409 | 9db4ba32e740 |
child 1921 | 489d0d0f656f |
permissions | -rw-r--r-- |
1409
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
1 |
# |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
2 |
# CDDL HEADER START |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
3 |
# |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
4 |
# The contents of this file are subject to the terms of the |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
5 |
# Common Development and Distribution License (the "License"). |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
6 |
# You may not use this file except in compliance with the License. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
7 |
# |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
8 |
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
9 |
# or http://www.opensolaris.org/os/licensing. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
10 |
# See the License for the specific language governing permissions |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
11 |
# and limitations under the License. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
12 |
# |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
13 |
# When distributing Covered Code, include this CDDL HEADER in each |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
14 |
# file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
15 |
# If applicable, add the following below this CDDL HEADER, with the |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
16 |
# fields enclosed by brackets "[]" replaced with your own identifying |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
17 |
# information: Portions Copyright [yyyy] [name of copyright owner] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
18 |
# |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
19 |
# CDDL HEADER END |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
20 |
# |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
21 |
|
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 |
# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
24 |
# |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
25 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
26 |
Puppet::Type.type(:link_aggregation).provide(:link_aggregation) do |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
27 |
desc "Provider for creating Oracle Solaris link aggregations" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
28 |
confine :operatingsystem => [:solaris] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
29 |
defaultfor :osfamily => :solaris, :kernelrelease => ['5.11', '5.12'] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
30 |
commands :dladm => '/usr/sbin/dladm' |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
31 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
32 |
def self.instances |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
33 |
dladm("show-aggr", "-p", "-o", |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
34 |
"link,mode,policy,addrpolicy,lacpactivity,lacptimer").split( |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
35 |
"\n").collect do |line| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
36 |
link, mode, policy, addrpolicy, lacpactivity, lacptimer = \ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
37 |
line.split(":") |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
38 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
39 |
links = [] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
40 |
dladm("show-aggr", "-x", "-p", "-o", "port").split( |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
41 |
"\n").each do |portline| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
42 |
next if portline.strip() == "" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
43 |
links << portline.strip() |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
44 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
45 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
46 |
new(:name => link, |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
47 |
:ensure => :present, |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
48 |
:lower_links => links.join(" "), |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
49 |
:mode => mode, |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
50 |
:policy => policy, |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
51 |
:address => addrpolicy, |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
52 |
:lacpmode => lacpactivity, |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
53 |
:lacptimer => lacptimer) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
54 |
end |
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 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
57 |
def self.prefetch(resources) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
58 |
# pull the instances on the system |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
59 |
aggrs = instances |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
60 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
61 |
# set the provider for the resource to set the property_hash |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
62 |
resources.keys.each do |name| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
63 |
if provider = aggrs.find{ |aggr| aggr.name == name} |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
64 |
resources[name].provider = provider |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
65 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
66 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
67 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
68 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
69 |
# property getters |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
70 |
[:lower_links, :mode, :policy, :lacpmode, :lacptimer, |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
71 |
:address].each do |field| |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
72 |
define_method(field) do |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
73 |
@property_hash[field] |
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 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
76 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
77 |
# property setters |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
78 |
def lower_links=(value) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
79 |
is_temporary?(@resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
80 |
current = self.lower_links.split() |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
81 |
remove_list = [] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
82 |
for entry in current - value |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
83 |
remove_list << "-l" << entry |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
84 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
85 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
86 |
add_list = [] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
87 |
for entry in value - current |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
88 |
add_list << "-l" << entry |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
89 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
90 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
91 |
if not add_list.empty? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
92 |
dladm("add-aggr", add_list, @resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
93 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
94 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
95 |
if not remove_list.empty? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
96 |
dladm("remove-aggr", remove_list, @resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
97 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
98 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
99 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
100 |
def mode=(value) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
101 |
is_temporary?(@resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
102 |
dladm("modify-aggr", "-m", value, @resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
103 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
104 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
105 |
def policy=(value) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
106 |
is_temporary?(@resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
107 |
dladm("modify-aggr", "-P", value, @resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
108 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
109 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
110 |
def lacpmode=(value) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
111 |
is_temporary?(@resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
112 |
dladm("modify-aggr", "-L", value, @resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
113 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
114 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
115 |
def lacptimer=(value) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
116 |
is_temporary?(@resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
117 |
dladm("modify-aggr", "-T", value, @resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
118 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
119 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
120 |
def address=(value) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
121 |
is_temporary?(@resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
122 |
dladm("modify-aggr", "-u", value, @resource[:name]) |
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 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
125 |
def add_options |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
126 |
options = [] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
127 |
if @resource[:temporary] == :true |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
128 |
options << "-t" |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
129 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
130 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
131 |
if lowerlinks = @resource[:lower_links] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
132 |
if lowerlinks.is_a? Array |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
133 |
for link in lowerlinks |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
134 |
options << "-l" << link |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
135 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
136 |
else |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
137 |
options << "-l" << lowerlinks |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
138 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
139 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
140 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
141 |
if mode = @resource[:mode] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
142 |
options << "-m" << mode |
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 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
145 |
if policy = @resource[:policy] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
146 |
options << "-P" << policy |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
147 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
148 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
149 |
if lacpmode = @resource[:lacpmode] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
150 |
options << "-L" << lacpmode |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
151 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
152 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
153 |
if lacptimer = @resource[:lacptimer] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
154 |
options << "-T" << lacptimer |
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 |
if address = @resource[:address] |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
158 |
options << "-u" << address |
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 |
options |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
161 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
162 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
163 |
def exists? |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
164 |
@property_hash[:ensure] == :present |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
165 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
166 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
167 |
def create |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
168 |
dladm("create-aggr", add_options, @resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
169 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
170 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
171 |
def destroy |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
172 |
dladm("delete-aggr", add_options, @resource[:name]) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
173 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
174 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
175 |
def is_temporary?(name) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
176 |
p = exec_cmd(command(:dladm), "show-aggr", "-P", name) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
177 |
raise Puppet::Error, "Unable to change attributes of temporary " \ |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
178 |
"aggregation #{@resource[:name]}" if p[:exit] == 1 |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
179 |
end |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
180 |
|
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
181 |
def exec_cmd(*cmd) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
182 |
output = Puppet::Util::Execution.execute(cmd, :failonfail => false) |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
183 |
{:out => output, :exit => $CHILD_STATUS.exitstatus} |
9db4ba32e740
PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff
changeset
|
184 |
end |
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 |