author | Sungmin Lee <sungmin.lee@oracle.com> |
Tue, 18 Aug 2015 15:07:30 -0700 | |
changeset 4794 | be62c55aa235 |
permissions | -rw-r--r-- |
4794
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
1 |
# |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
2 |
# CDDL HEADER START |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
3 |
# |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
4 |
# The contents of this file are subject to the terms of the |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
5 |
# Common Development and Distribution License (the "License"). |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
6 |
# You may not use this file except in compliance with the License. |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
7 |
# |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
8 |
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
9 |
# or http://www.opensolaris.org/os/licensing. |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
10 |
# See the License for the specific language governing permissions |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
11 |
# and limitations under the License. |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
12 |
# |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
13 |
# When distributing Covered Code, include this CDDL HEADER in each |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
14 |
# file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
15 |
# If applicable, add the following below this CDDL HEADER, with the |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
16 |
# fields enclosed by brackets "[]" replaced with your own identifying |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
17 |
# information: Portions Copyright [yyyy] [name of copyright owner] |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
18 |
# |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
19 |
# CDDL HEADER END |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
20 |
# |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
21 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
22 |
# |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
23 |
# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
24 |
# |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
25 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
26 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
27 |
Puppet::Type.type(:evs_ipnet).provide(:evs_ipnet) do |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
28 |
desc "Provider for managing EVS IPnet setup in the Solaris OS" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
29 |
confine :operatingsystem => [:solaris] |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
30 |
defaultfor :osfamily => :solaris, :kernelrelease => ["5.11", "5.12"] |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
31 |
commands :evsadm => "/usr/sbin/evsadm" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
32 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
33 |
mk_resource_methods |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
34 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
35 |
def initialize(value={}) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
36 |
super(value) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
37 |
@property_flush = {} |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
38 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
39 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
40 |
def self.get_ipnet_prop_list |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
41 |
begin |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
42 |
ipnet_list = evsadm("show-ipnet", "-c", "-o", |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
43 |
"name,tenant").split("\n") |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
44 |
rescue Puppet::ExecutionFailure => e |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
45 |
raise Puppet::Error, "Unable to populate IPnet: \n"\ |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
46 |
"#{e.inspect}" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
47 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
48 |
ipnet_list |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
49 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
50 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
51 |
def self.get_ipnet_properties(ipnet_name, tenant, ensure_val) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
52 |
ipnet_properties = {} |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
53 |
ipnet_fullname = tenant + "/" + ipnet_name |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
54 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
55 |
ipnet_properties[:name] = ipnet_fullname |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
56 |
ipnet_properties[:ensure] = ensure_val |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
57 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
58 |
evsadm("show-ipnetprop", "-f", "tenant=#{tenant}", "-c", "-o", |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
59 |
"property,value", ipnet_name).split("\n").collect do |each_ipnet| |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
60 |
property, value = each_ipnet.split(":") |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
61 |
value = "" if value.nil? |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
62 |
case property |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
63 |
# read-only properties (settable upon creation) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
64 |
when "subnet" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
65 |
ipnet_properties[:subnet] = value |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
66 |
when "defrouter" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
67 |
ipnet_properties[:defrouter] = value |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
68 |
when "uuid" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
69 |
ipnet_properties[:uuid] = value |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
70 |
# read/write property (always updatable) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
71 |
when "pool" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
72 |
ipnet_properties[:pool] = value |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
73 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
74 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
75 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
76 |
Puppet.debug "IPnet Properties: #{ipnet_properties.inspect}" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
77 |
ipnet_properties |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
78 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
79 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
80 |
def self.instances |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
81 |
get_ipnet_prop_list.collect do |each_ipnet| |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
82 |
ipnet, tenant, subnet = each_ipnet.strip.split(":") |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
83 |
ipnet_properties = get_ipnet_properties( |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
84 |
ipnet, tenant, :present) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
85 |
new(ipnet_properties) # Create a provider instance |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
86 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
87 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
88 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
89 |
def self.prefetch(resources) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
90 |
instances.each do |inst| |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
91 |
if resource = resources[inst.name] |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
92 |
resource.provider = inst |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
93 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
94 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
95 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
96 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
97 |
def exists? |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
98 |
@property_hash[:ensure] == :present |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
99 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
100 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
101 |
def create |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
102 |
# Subnet value is required to create an IPnet instance |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
103 |
if @resource[:subnet].nil? |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
104 |
raise Puppet::Error, "Subnet value is missing" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
105 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
106 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
107 |
tenant, ipnet_name = get_tenant_and_ipnet_name |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
108 |
begin |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
109 |
create_ipnet(tenant, ipnet_name, add_properties(@resource)) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
110 |
rescue Puppet::ExecutionFailure => e |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
111 |
raise Puppet::Error, "Cannot add the IPnet: \n #{e.inspect}" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
112 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
113 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
114 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
115 |
def destroy |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
116 |
tenant, ipnet_name = get_tenant_and_ipnet_name |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
117 |
begin |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
118 |
delete_ipnet(tenant, ipnet_name) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
119 |
rescue Puppet::ExecutionFailure => e |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
120 |
raise Puppet::Error, "Cannot remove the IPnet: \n #{e.inspect}" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
121 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
122 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
123 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
124 |
## read-only properties (settable upon creation) ## |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
125 |
def defrouter=(value) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
126 |
raise Puppet::Error, "defrouter property is settable only upon creation" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
127 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
128 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
129 |
def subnet=(value) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
130 |
raise Puppet::Error, "subnet property is settable only upon creation" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
131 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
132 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
133 |
def uuid=(value) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
134 |
raise Puppet::Error, "uuid property is settable only upon creation" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
135 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
136 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
137 |
## read/write property (always updatable) ## |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
138 |
def pool=(value) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
139 |
@property_flush[:pool] = value |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
140 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
141 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
142 |
## Create IPnet instance ## |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
143 |
def create_ipnet(tenant, ipnet_name, properties) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
144 |
begin |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
145 |
evsadm("add-ipnet", "-T", tenant, properties, ipnet_name) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
146 |
rescue Puppet::ExecutionFailure => e |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
147 |
# Pass up the exception to upper level |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
148 |
raise |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
149 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
150 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
151 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
152 |
## Remove IPnet instance ## |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
153 |
def delete_ipnet(tenant, ipnet_name) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
154 |
begin |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
155 |
evsadm("remove-ipnet", "-T", tenant, ipnet_name) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
156 |
rescue Puppet::ExecutionFailure => e |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
157 |
# Pass up the exception to upper level |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
158 |
raise |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
159 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
160 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
161 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
162 |
## Set IPnet prop (pool property only) ## |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
163 |
def set_ipnet(tenant, ipnet_name, property) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
164 |
begin |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
165 |
evsadm("set-ipnetprop", "-T", tenant, property, ipnet_name) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
166 |
rescue Puppet::ExecutionFailure => e |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
167 |
# Pass up the exception to upper level |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
168 |
raise |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
169 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
170 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
171 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
172 |
## Parse the "name" value from user and yield tenant and IPnet name ## |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
173 |
def get_tenant_and_ipnet_name |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
174 |
fullname = @resource[:name] |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
175 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
176 |
parsed_val = fullname.strip.split("/") |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
177 |
if (parsed_val.length != 3) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
178 |
raise Puppet::Error, "Invalid IPnet name" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
179 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
180 |
tenant, evs, ipnet = parsed_val |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
181 |
return tenant, evs + "/" + ipnet |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
182 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
183 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
184 |
## property setter for IPnet creation ## |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
185 |
def add_properties(source) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
186 |
p = [] |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
187 |
prop_list = { |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
188 |
"defrouter" => source[:defrouter], |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
189 |
"pool" => source[:pool], |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
190 |
"subnet" => source[:subnet], |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
191 |
"uuid" => source[:uuid] |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
192 |
} |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
193 |
prop_list.each do |key, value| |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
194 |
next if (value == nil) || (value == "") |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
195 |
p << "#{key}=#{value}" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
196 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
197 |
return [] if p.empty? |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
198 |
properties = Array["-p", p.join(",")] |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
199 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
200 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
201 |
## Flush when existing property value is updatable ## |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
202 |
def flush |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
203 |
tenant, ipnet_name = get_tenant_and_ipnet_name |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
204 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
205 |
unless @property_flush.empty? |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
206 |
# Update read/write property (pool) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
207 |
pool_prop = ["-p", "pool=#{@property_flush[:pool]}"] |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
208 |
begin |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
209 |
set_ipnet(tenant, ipnet_name, pool_prop) |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
210 |
rescue Puppet::ExecutionFailure => e |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
211 |
raise Puppet::Error, "Cannot update the pool property. \n" \ |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
212 |
"#{e.inspect}" |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
213 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
214 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
215 |
|
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
216 |
# Synchronize all the SHOULD values to IS values |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
217 |
@property_hash = resource.to_hash |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
218 |
end |
be62c55aa235
PSARC/2015/218 Add EVS support to Puppet
Sungmin Lee <sungmin.lee@oracle.com>
parents:
diff
changeset
|
219 |
end |