Imported Upstream version 1.7.0
[platform/upstream/augeas.git] / lenses / rabbitmq.aug
1 (*
2 Module: Rabbitmq
3   Parses Rabbitmq configuration files
4
5 Author: Raphael Pinson <raphael.pinson@camptocamp.com>
6
7 About: Reference
8   This lens tries to keep as close as possible to `http://www.rabbitmq.com/configure.html` where possible.
9
10 About: License
11    This file is licenced under the LGPL v2+, like the rest of Augeas.
12
13 About: Lens Usage
14    To be documented
15
16 About: Configuration files
17    This lens applies to Rabbitmq configuration files. See <filter>.
18
19 About: Examples
20    The <Test_Rabbitmq> file contains various examples and tests.
21 *)
22 module Rabbitmq =
23
24 autoload xfm
25
26 (* View: listeners
27      A tcp/ssl listener *)
28 let listeners =
29      let value = Erlang.make_value Erlang.integer
30                | Erlang.tuple Erlang.quoted Erlang.integer
31   in Erlang.list /(tcp|ssl)_listeners/ value
32
33
34 (* View: ssl_options
35     (Incomplete) list of SSL options *)
36 let ssl_options =
37      let versions_list = Erlang.opt_list (Erlang.make_value Erlang.quoted)
38   in let option = Erlang.value /((ca)?cert|key)file/ Erlang.path
39                 | Erlang.value "verify" Erlang.bare
40                 | Erlang.value "verify_fun" Erlang.boolean
41                 | Erlang.value /fail_if_no_peer_cert|reuse_sessions/ Erlang.boolean
42                 | Erlang.value "depth" Erlang.integer
43                 | Erlang.value "password" Erlang.quoted
44                 | Erlang.value "versions" versions_list
45   in Erlang.list "ssl_options" option
46
47 (* View: disk_free_limit *)
48 let disk_free_limit =
49      let value = Erlang.integer | Erlang.tuple Erlang.bare Erlang.decimal
50   in Erlang.value "disk_free_limit" value
51
52 (* View: log_levels *)
53 let log_levels =
54      let category = Erlang.tuple Erlang.bare Erlang.bare
55   in Erlang.list "log_levels" category
56
57 (* View: cluster_nodes
58      Can be a tuple `(nodes, node_type)` or simple `nodes` *)
59 let cluster_nodes =
60      let nodes = Erlang.opt_list (Erlang.make_value Erlang.quoted)
61   in let value = Erlang.tuple nodes Erlang.bare
62                | nodes
63   in Erlang.value "cluster_nodes" value
64
65 (* View: cluster_partition_handling
66      Can be single value or
67      `{pause_if_all_down, [nodes], ignore | autoheal}` *)
68 let cluster_partition_handling =
69      let nodes = Erlang.opt_list (Erlang.make_value Erlang.quoted)
70   in let value = Erlang.tuple3 Erlang.bare nodes Erlang.bare
71                | Erlang.bare
72   in Erlang.value "cluster_partition_handling" value
73
74 (* View: tcp_listen_options *)
75 let tcp_listen_options =
76      let value = Erlang.make_value Erlang.bare
77                | Erlang.tuple Erlang.bare Erlang.bare
78   in Erlang.list "tcp_listen_options" value
79
80 (* View: parameters
81      Top-level parameters for the lens *)
82 let parameters = listeners
83                | ssl_options
84                | disk_free_limit
85                | log_levels
86                | Erlang.value /vm_memory_high_watermark(_paging_ratio)?/ Erlang.decimal
87                | Erlang.value "frame_max" Erlang.integer
88                | Erlang.value "heartbeat" Erlang.integer
89                | Erlang.value /default_(vhost|user|pass)/ Erlang.glob
90                | Erlang.value_list "default_user_tags" Erlang.bare
91                | Erlang.value_list "default_permissions" Erlang.glob
92                | cluster_nodes
93                | Erlang.value_list "server_properties" Erlang.bare
94                | Erlang.value "collect_statistics" Erlang.bare
95                | Erlang.value "collect_statistics_interval" Erlang.integer
96                | Erlang.value_list "auth_mechanisms" Erlang.quoted
97                | Erlang.value_list "auth_backends" Erlang.bare
98                | Erlang.value "delegate_count" Erlang.integer
99                | Erlang.value_list "trace_vhosts" Erlang.bare
100                | tcp_listen_options
101                | Erlang.value "hipe_compile" Erlang.boolean
102                | Erlang.value "msg_store_index_module" Erlang.bare
103                | Erlang.value "backing_queue_module" Erlang.bare
104                | Erlang.value "msg_store_file_size_limit" Erlang.integer
105                | Erlang.value /queue_index_(max_journal_entries|embed_msgs_below)/ Erlang.integer
106                | cluster_partition_handling
107                | Erlang.value /(ssl_)?handshake_timeout/ Erlang.integer
108                | Erlang.value "channel_max" Erlang.integer
109                | Erlang.value_list "loopback_users" Erlang.glob
110                | Erlang.value "reverse_dns_lookups" Erlang.boolean
111                | Erlang.value "cluster_keepalive_interval" Erlang.integer
112                | Erlang.value "mnesia_table_loading_timeout" Erlang.integer
113
114 (* View: rabbit
115     The rabbit <Erlang.application> config *)
116 let rabbit = Erlang.application "rabbit" parameters
117
118 (* View: lns
119     A top-level <Erlang.config> *)
120 let lns = Erlang.config rabbit
121
122 (* Variable: filter *)
123 let filter = incl "/etc/rabbitmq/rabbitmq.config"
124
125 let xfm = transform lns filter