3 Parses /etc/cgconfig.conf
6 Ivana Hutarova Varekova <varekova@redhat.com>
7 Raphael Pinson <raphink@gmail.com>
10 This file is licensed under the LGPL v2+, like the rest of Augeas.
13 Sample usage of this lens in augtool
14 * print all mounted cgroups
15 print /files/etc/cgconfig.conf/mount
17 About: Configuration files
18 This lens applies to /etc/cgconfig.conf. See <filter>.
24 let indent = Util.indent
26 let comment = Util.comment
27 let empty = Util.empty
29 let id = /[a-zA-Z0-9_\/.-]+/
30 let name = /[^#= \n\t{}\/]+/
31 let cont_name = /(cpuacct|cpu|devices|ns|cpuset|memory|freezer|net_cls|blkio|hugetlb|perf_event)/
32 let role_name = /(admin|task)/
33 let id_name = /(uid|gid)/
34 let address = /[^#; \n\t{}]+/
35 let qaddress = address|/"[^#;"\n\t{}]+"/
37 let lbracket = del /[ \t\n]*\{/ " {"
38 let rbracket = del /[ \t]*\}/ "}"
39 let eq = indent . Util.del_str "=" . indent
41 (******************************************
42 * Function to deal with abc=def; entries
43 ******************************************)
45 let key_value (key_rx:regexp) (val_rx:regexp) =
46 [ indent . key key_rx . eq . store val_rx
47 . indent . Util.del_str ";" ]
49 (* Function to deal with bracketted entries *)
50 let brack_entry_base (lnsa:lens) (lnsb:lens) =
51 [ indent . lnsa . lbracket . lnsb . rbracket ]
53 let brack_entry_key (kw:regexp) (lns:lens) =
55 brack_entry_base lnsa lns
57 let brack_entry (kw:regexp) (lns:lens) =
58 let full_lns = (lns | comment | empty)* in
59 brack_entry_key kw full_lns
61 (******************************************
63 ******************************************)
65 let permission_setting = key_value id_name address
68 let t_info = brack_entry "task" permission_setting
71 let a_info = brack_entry "admin" permission_setting
73 (* permissions setting *)
75 let ce = (comment|empty)* in
76 let perm_info_lns = ce .
77 ((t_info . ce . (a_info . ce)?)
78 |(a_info . ce . (t_info . ce)?))? in
79 brack_entry_key "perm" perm_info_lns
81 let variable_setting = key_value name qaddress
83 (* controllers setting *)
85 let lnsa = label "controller" . store cont_name in
86 let lnsb = ( variable_setting | comment | empty ) * in
87 brack_entry_base lnsa lnsb
91 let lnsa = key "group" . Util.del_ws_spc . store id in
92 let lnsb = ( perm_info | controller_info | comment | empty )* in
93 brack_entry_base lnsa lnsb
96 (*************************************************
98 *************************************************)
100 (* controller = mount_point; *)
101 let mount_point = key_value name address
104 let mount_data = brack_entry "mount" mount_point
107 (****************************************************
109 ****************************************************)
111 (* controller = cgroup; *)
112 let namespace_instance = key_value name address
115 (* namespace { .... } *)
116 let namespace = brack_entry "namespace" namespace_instance
118 let lns = ( comment | empty | mount_data | group_data | namespace )*
120 let xfm = transform lns (incl "/etc/cgconfig.conf")