26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
# File 'manifests/config/server/valve.pp', line 26
define tomcat::config::server::valve (
$catalina_base = undef,
$class_name = undef,
$parent_host = undef,
$parent_service = 'Catalina',
$parent_context = undef,
Enum['present','absent'] $valve_ensure = 'present',
Hash $additional_attributes = {},
Array $attributes_to_remove = [],
Array $uniqueness_attributes = [],
$server_config = undef,
Boolean $show_diff = true,
) {
include ::tomcat
$_catalina_base = pick($catalina_base, $::tomcat::catalina_home)
tag(sha1($_catalina_base))
if versioncmp($::augeasversion, '1.0.0') < 0 {
fail('Valve configurations require Augeas >= 1.0.0')
}
if member($additional_attributes.keys, 'className') {
fail('\'additional_attributes\' contains \'className\'. Please use parameter \'class_name\'')
}
if $class_name {
$_class_name = $class_name
} else {
$_class_name = $name
}
if !member($uniqueness_attributes, 'className') {
$_uniqueness_attributes = ['className'] + $uniqueness_attributes
} else {
$_uniqueness_attributes = $uniqueness_attributes
}
$attributes = {'className' => $_class_name} + $additional_attributes
$augeas_filter = $_uniqueness_attributes.map |$attr| {
"[#attribute/${attr}='${attributes[$attr]}']"
}
# lint:ignore:140chars
if $parent_host {
if $parent_context {
$base_path = "Server/Service[#attribute/name='${parent_service}']/Engine/Host[#attribute/name='${parent_host}']/Context[#attribute/docBase='${parent_context}']/Valve${join($augeas_filter)}"
} else {
$base_path = "Server/Service[#attribute/name='${parent_service}']/Engine/Host[#attribute/name='${parent_host}']/Valve${join($augeas_filter)}"
}
} else {
$base_path = "Server/Service[#attribute/name='${parent_service}']/Engine/Valve${join($augeas_filter)}"
}
# lint:endignore
if $server_config {
$_server_config = $server_config
} else {
$_server_config = "${_catalina_base}/conf/server.xml"
}
if $valve_ensure == 'absent' {
$changes = "rm ${base_path}"
} else {
$defnode_valve = "defnode valve ${base_path} ''"
$set_attributes = join_keys_to_values($attributes, " '").map |$attr| {
"set \$valve/#attribute/${attr}'"
}
if ! empty(any2array($attributes_to_remove)) {
$rm_attributes = any2array($attributes_to_remove).map |$attr| {
"rm \$valve/#attribute/${attr}"
}
} else {
$rm_attributes = undef
}
$changes = delete_undef_values(flatten([
$defnode_valve,
$set_attributes,
$rm_attributes,
]))
}
augeas { "${_catalina_base}-${parent_service}-${parent_host}-valve-${name}":
lens => 'Xml.lns',
incl => $_server_config,
changes => $changes,
show_diff => $show_diff,
}
}
|