author | Kristina Tripp <Kristina.Tripp@oracle.com> |
Fri, 07 Nov 2014 12:43:50 -0800 | |
branch | s11u2-sru |
changeset 3460 | 5c5af6e58474 |
child 3770 | ca450a806cc1 |
permissions | -rw-r--r-- |
3460
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
1 |
#! /usr/bin/python |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
2 |
# |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
3 |
# CDDL HEADER START |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
4 |
# |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
5 |
# The contents of this file are subject to the terms of the |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
6 |
# Common Development and Distribution License (the "License"). |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
7 |
# You may not use this file except in compliance with the License. |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
8 |
# |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
9 |
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
10 |
# or http://www.opensolaris.org/os/licensing. |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
11 |
# See the License for the specific language governing permissions |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
12 |
# and limitations under the License. |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
13 |
# |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
14 |
# When distributing Covered Code, include this CDDL HEADER in each |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
15 |
# file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
16 |
# If applicable, add the following below this CDDL HEADER, with the |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
17 |
# fields enclosed by brackets "[]" replaced with your own identifying |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
18 |
# information: Portions Copyright [yyyy] [name of copyright owner] |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
19 |
# |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
20 |
# CDDL HEADER END |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
21 |
# |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
22 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
23 |
# |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
24 |
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
25 |
# |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
26 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
27 |
''' |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
28 |
Utility program for helping with the upgrade of puppet to a newer |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
29 |
version. This program will take a puppet configuration file that |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
30 |
has been generated via the command sequence |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
31 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
32 |
puppet agent --genconfig > puppet.conf |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
33 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
34 |
and use the data in that configuration file to replace the |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
35 |
associated Puppet SMF user configuratable properties with the |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
36 |
properties that are allowed in the new version of puppet |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
37 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
38 |
NOTE: This file should not be included with the puppet release |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
39 |
''' |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
40 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
41 |
import os |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
42 |
import re |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
43 |
import sys |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
44 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
45 |
from lxml import etree |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
46 |
from optparse import OptionParser |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
47 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
48 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
49 |
COMMENT_PATTERN = re.compile(".*# ?(.*)") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
50 |
CONFIG_VALUE_PATTERN = re.compile("([\S]+)\s*=\s*(\S*)") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
51 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
52 |
DEFAULT_VALUE_STR = "The default value is " |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
53 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
54 |
# SMF defined property types. For a list of |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
55 |
# all available types see |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
56 |
# /usr/share/lib/xml/dtd/service_bundle.dtd.1 |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
57 |
TYPE_ASTRING = "astring" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
58 |
TYPE_BOOLEAN = "boolean" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
59 |
TYPE_INTEGER = "integer" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
60 |
TYPE_HOST = "host" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
61 |
TYPE_HOSTNAME = "hostname" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
62 |
TYPE_NETADDRESS = "net_address" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
63 |
TYPE_URI = "uri" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
64 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
65 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
66 |
# Dictionary of currently defined property types to associate |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
67 |
# with a specified property. Any property not defined here |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
68 |
# is assumed to have a property type of astring, integer, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
69 |
# or boolean |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
70 |
PROP_TYPE = { |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
71 |
'server': TYPE_HOST, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
72 |
'archive_file_server': TYPE_HOST, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
73 |
'bindaddress': TYPE_NETADDRESS, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
74 |
'ca_server': TYPE_HOST, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
75 |
'certname': TYPE_HOSTNAME, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
76 |
'couchdb_url': TYPE_URI, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
77 |
'dbserver': TYPE_HOST, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
78 |
'dns_alt_names': TYPE_HOST, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
79 |
'http_proxy_host': TYPE_HOST, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
80 |
'inventory_server': TYPE_HOST, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
81 |
'ldapserver': TYPE_HOST, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
82 |
'ldapuser': TYPE_HOSTNAME, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
83 |
'module_repository': TYPE_URI, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
84 |
'queue_source': TYPE_URI, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
85 |
'report_server': TYPE_HOST, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
86 |
'reporturl': TYPE_URI, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
87 |
'smtpserver': TYPE_HOST, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
88 |
'srv_domain': TYPE_HOST, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
89 |
} |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
90 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
91 |
# Dictionary used to hold properites and the resulting xml code |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
92 |
PUPPET_CONFIG_DICT = dict() |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
93 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
94 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
95 |
def err(msg): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
96 |
'''Output standard error message''' |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
97 |
# Duplicate the syntax of the parser.error |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
98 |
sys.stderr.write("%(prog)s: error: %(msg)s\n" % |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
99 |
{"prog": os.path.basename(sys.argv[0]), "msg": msg}) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
100 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
101 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
102 |
def create_config_element(key, key_type, desc_text): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
103 |
'''Create a basic xml entry following the basic pattern of |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
104 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
105 |
<prop_pattern name='${key}' type='${key_type}' |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
106 |
required='false'> |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
107 |
<description> <loctext xml:lang='C'> |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
108 |
${desc_text} |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
109 |
</loctext> </description> |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
110 |
</prop_pattern> |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
111 |
''' |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
112 |
prop_pattern = etree.Element( |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
113 |
"prop_pattern", |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
114 |
name=key, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
115 |
type=key_type, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
116 |
required="false") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
117 |
desc = etree.SubElement(prop_pattern, "description") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
118 |
loctext = etree.SubElement(desc, "loctext") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
119 |
loctext.text = "\n%s\n\t " % desc_text |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
120 |
loctext.set('{http://www.w3.org/XML/1998/namespace}lang', 'C') |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
121 |
return prop_pattern |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
122 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
123 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
124 |
def determine_type(key, value): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
125 |
'''Determine the xml property type to associate with the |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
126 |
specified key |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
127 |
''' |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
128 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
129 |
# Does the key have a specified xml property type |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
130 |
# already defined? |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
131 |
try: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
132 |
return PROP_TYPE[key] |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
133 |
except KeyError: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
134 |
pass |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
135 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
136 |
# Use the value to determine the xml property type |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
137 |
if value.isdigit(): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
138 |
return TYPE_INTEGER |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
139 |
if value.lower() in ['false', 'true']: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
140 |
return TYPE_BOOLEAN |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
141 |
return TYPE_ASTRING |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
142 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
143 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
144 |
def process_grouping(lines): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
145 |
'''Process the lines in the list. The last entry should be |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
146 |
a 'key=value' entry |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
147 |
''' |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
148 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
149 |
# The last field should be a key = value pair |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
150 |
# If it's not then the format of the file is not matching |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
151 |
# the expected format of |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
152 |
# |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
153 |
# Description |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
154 |
# The default value is "xxxx" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
155 |
# key = value |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
156 |
# |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
157 |
key_value = lines.pop() |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
158 |
match = CONFIG_VALUE_PATTERN.match(key_value) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
159 |
if not match: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
160 |
raise TypeError("Last line in grouping is not in expected " |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
161 |
"format of 'key = value'\n%s" % |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
162 |
"\n".join(lines)) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
163 |
key = match.group(1) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
164 |
value = match.group(2) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
165 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
166 |
default_value_line = lines.pop() |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
167 |
if not default_value_line.startswith(DEFAULT_VALUE_STR): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
168 |
# Not a match. Last line was still part of the description |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
169 |
lines.append(default_value_line) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
170 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
171 |
key_type = determine_type(key, value) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
172 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
173 |
# remaining lines are the descriptor field |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
174 |
desc = '\n'.join(lines) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
175 |
PUPPET_CONFIG_DICT[key] = (key, key_type, desc) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
176 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
177 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
178 |
def parse_puppet_config(filename): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
179 |
'''Parse the puppet configuration file that is generated by |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
180 |
puppet agent --genconfig |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
181 |
''' |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
182 |
parameter_list = [] |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
183 |
agent_check = True |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
184 |
with open(filename, 'r') as f_handle: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
185 |
for line in f_handle: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
186 |
if agent_check: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
187 |
if line.startswith("[agent]"): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
188 |
# Throw away the initial starting block code in the |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
189 |
del parameter_list[:] |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
190 |
agent_check = False |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
191 |
continue |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
192 |
line = line.strip().replace("\n", "") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
193 |
if not line: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
194 |
# If parameter_list is not empty, process the data and |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
195 |
# generate an xml structure |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
196 |
process_grouping(parameter_list) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
197 |
# Done processing, delete all the saved entries |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
198 |
del parameter_list[:] |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
199 |
continue |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
200 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
201 |
match = COMMENT_PATTERN.match(line) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
202 |
if match: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
203 |
line = match.group(1) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
204 |
parameter_list.append(line) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
205 |
f_handle.close() |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
206 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
207 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
208 |
def update_smf_file(smf_xml_file, output_file, version): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
209 |
'''Replace the puppet property definitions in the specified SMF |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
210 |
file with those that are stored in PUPPET_CONFIG_DICT |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
211 |
''' |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
212 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
213 |
try: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
214 |
parser = etree.XMLParser(remove_blank_text=True) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
215 |
tree = etree.parse(smf_xml_file, parser) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
216 |
root = tree.getroot() |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
217 |
template = root.find("service/template") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
218 |
puppet_desc = template.find("common_name/loctext") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
219 |
puppet_desc.text = "Puppet version %s" % version |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
220 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
221 |
pg_pattern = template.find("pg_pattern") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
222 |
except IOError as msg: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
223 |
err(msg) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
224 |
return -1 |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
225 |
except etree.XMLSyntaxError as msg: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
226 |
err(msg) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
227 |
return -1 |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
228 |
except NameError as msg: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
229 |
err("XML file %s does not match expected formated" % smf_xml_file) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
230 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
231 |
# Delete the pg_pattern nodes and it's children |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
232 |
# This is the structure that will be rebuilt based |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
233 |
# on the genconfig information that was read in |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
234 |
if pg_pattern is not None: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
235 |
template.remove(pg_pattern) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
236 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
237 |
# <pg_pattern name='config' type='application' required='false'> |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
238 |
pg_pattern = etree.SubElement( |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
239 |
template, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
240 |
"pg_pattern", |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
241 |
name="config", |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
242 |
type="application", |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
243 |
required="false") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
244 |
for key in sorted(PUPPET_CONFIG_DICT.iterkeys()): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
245 |
values = PUPPET_CONFIG_DICT[key] |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
246 |
element = create_config_element(values[0], values[1], values[2]) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
247 |
pg_pattern.append(element) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
248 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
249 |
# Write out the contents of the updated puppet SMF config file |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
250 |
print "Writting out contents of new SMF configuration file to: %s" % \ |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
251 |
output_file |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
252 |
with open(output_file, "w") as f_handle: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
253 |
f_handle.write(etree.tostring(tree, pretty_print=True)) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
254 |
f_handle.close() |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
255 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
256 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
257 |
def option_list(): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
258 |
'''Build the option list for this utility''' |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
259 |
desc = "Utility for assisting in the upgrading of Solaris Puppet SMF file" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
260 |
usage = "usage: %prog -c <puppet_config_file> -s <smf_confilg_file> " \ |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
261 |
"-v <puppet_version> [-o <output_file>]\n" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
262 |
opt_list = OptionParser(description=desc, usage=usage) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
263 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
264 |
opt_list.add_option("-c", "--config", dest="config", default=None, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
265 |
action="store", type="string", nargs=1, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
266 |
metavar="<puppet_config_file>", |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
267 |
help="Puppet configuration file generated via" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
268 |
"genconfig option to puppet. i.e. " |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
269 |
"puppet agent --genconfig > puppet.conf") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
270 |
opt_list.add_option("-s", "--smf", dest="smf_xml", default=None, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
271 |
action="store", type="string", nargs=1, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
272 |
metavar="<smf_config_file>", |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
273 |
help="Current solaris Puppet SMF XML configuration" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
274 |
" file. This file is located in <userland_tree>" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
275 |
"/components/puppet/files/puppet.xml") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
276 |
opt_list.add_option("-o", "--output", dest="output", default=None, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
277 |
action="store", type="string", nargs=1, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
278 |
metavar="<output_file>", |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
279 |
help="The name of the new puppet.xml file ") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
280 |
opt_list.add_option("-v", "--version", dest="version", default="None", |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
281 |
action="store", type="string", nargs=1, |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
282 |
metavar="<puppet_version>", |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
283 |
help="Puppet Version of update") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
284 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
285 |
return opt_list |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
286 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
287 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
288 |
def main(): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
289 |
'''Execute this utility based on the options supplied by the user''' |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
290 |
parser = option_list() |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
291 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
292 |
(options, _args) = parser.parse_args() |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
293 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
294 |
if not options.output and options.version: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
295 |
options.output = "puppet.%s.xml" % options.version |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
296 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
297 |
if not options.config or not options.smf_xml or \ |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
298 |
not options.output or not options.version: |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
299 |
err("Required options not specified") |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
300 |
parser.print_help() |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
301 |
sys.exit(-1) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
302 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
303 |
if not os.path.isfile(options.config): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
304 |
err("%s does not exist or is not a regular file\n" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
305 |
% options.config) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
306 |
sys.exit(-1) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
307 |
if not os.path.isfile(options.smf_xml): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
308 |
err("%s does not exist or is not a regular file\n" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
309 |
% options.smf_xml) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
310 |
sys.exit(-1) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
311 |
if os.path.exists(options.output): |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
312 |
err("specified file %s already exist\n" |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
313 |
% options.output) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
314 |
sys.exit(-1) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
315 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
316 |
parse_puppet_config(options.config) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
317 |
update_smf_file(options.smf_xml, options.output, options.version) |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
318 |
|
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
319 |
if __name__ == '__main__': |
5c5af6e58474
18960221 problem in UTILITY/PUPPET
Kristina Tripp <Kristina.Tripp@oracle.com>
parents:
diff
changeset
|
320 |
main() |