3 require_once 'plc_login.php'; // Require login
4 require_once 'plc_session.php'; // Get session and API handles
5 global $plc, $api, $adm;
8 require_once 'plc_drupal.php';
10 include 'plc_header.php';
13 require_once 'plc_functions.php';
14 require_once 'plc_sorts.php';
15 include 'plc_objects.php';
18 class Conffile extends Controller {
23 $all_conf_files= $api->GetConfFiles();
26 $data['all_conf_files'] = $all_conf_files;
30 $this->load->view('header', $data);
31 $this->load->view('debug', $data);
32 $this->load->view('ListConfFile', $data);
33 $this->load->view('footer', $data);
36 function get_stage_data(&$data)
39 $data['nodegroups'] = $api->GetNodeGroups();
40 $data['nodes'] = $api->GetNodes(NULL, array('hostname', 'node_id'));
43 function convert_checked($val)
45 if ( $val == "on" || $val == True )
47 print "CALLED CHECKED '$val' .<BR>";
53 function update($conf_file_id=-1)
56 $conf_file_id = intval($conf_file_id);
58 $this->load->helper(array('form', 'url'));
59 $this->load->library('validation');
60 $this->validation->set_error_delimiters('<span class="error">', '</span>');
63 $data['submit_caption'] = "Update";
64 $data['title'] = "Update existing node configuration file";
65 $data['conf_file_id'] = $conf_file_id;
67 $fields['enabled'] = "Enabled";
68 $fields['source'] = "Source";
69 $fields['dest'] = "Destination";
70 $fields['file_permissions'] = "File Permissions";
71 $fields['file_owner'] = "File Owner";
72 $fields['file_group'] = "File Group";
73 $fields['preinstall_cmd'] = "Preinstall Command";
74 $fields['postinstall_cmd'] = "Postinstall Command";
75 $fields['error_cmd'] = "Error Command";
76 $fields['ignore_cmd_errors'] = "Ignore Command Errors";
77 $fields['always_update'] = "Always Update";
78 $fields['scope'] = "ConfFile Scope";
79 $fields['node_ids'] = "";
80 $fields['nodegroup_ids'] = "";
81 $this->validation->set_fields($fields);
83 if( isset($_REQUEST['submitted']) )
85 print "SUBMITTED REQUEST";
86 $rules['enabled'] = "trim";
87 $rules['source'] = "trim|required";
88 $rules['dest'] = "trim|required";
89 $rules['file_permissions'] = "trim";
90 $rules['file_owner'] = "trim";
91 $rules['file_group'] = "trim";
92 $rules['preinstall_cmd'] = "trim";
93 $rules['postinstall_cmd'] = "trim";
94 $rules['error_cmd'] = "trim";
95 $rules['ignore_cmd_errors'] = "trim";
96 $rules['always_update'] = "trim";
97 $rules['scope'] = "trim";
98 $rules['node_ids'] = "trim";
99 $rules['nodegroup_ids'] = "trim";
100 $this->validation->set_rules($rules);
103 if ($this->validation->run() == TRUE)
105 $data['enabled'] = $this->validation->enabled;
106 $data['source'] = $this->validation->source;
107 $data['dest'] = $this->validation->dest;
108 $data['file_permissions'] = $this->validation->file_permissions;
109 $data['file_owner'] = $this->validation->file_owner;
110 $data['file_group'] = $this->validation->file_group;
111 $data['preinstall_cmd'] = $this->validation->preinstall_cmd;
112 $data['postinstall_cmd'] = $this->validation->postinstall_cmd;
113 $data['error_cmd'] = $this->validation->error_cmd;
114 $data['ignore_cmd_errors'] = $this->validation->ignore_cmd_errors;
115 $data['always_update'] = $this->validation->always_update;
116 $data['scope'] = $this->validation->scope;
117 $data['node_ids'] = array($this->validation->node_ids);
118 $data['nodegroup_ids'] = array($this->validation->nodegroup_ids);
121 print "ena: " . $data['enabled'] . "<br>";
122 print "ice: " . $data['ignore_cmd_errors'] . "<br>";
123 print "alu: " . $data['always_update'] . "<br>";
124 $conf_fields = array();
126 $data['enabled'] = $this->convert_checked($data['enabled']);
127 $data['ignore_cmd_errors'] = $this->convert_checked($data['ignore_cmd_errors']);
128 $data['always_update'] = $this->convert_checked($data['always_update']);
130 # TODO: UpdateConfFile does not honor the values of 'node_ids'
131 # and 'nodegroup_ids'. These are read-only values. Instead
132 # there needs to be a check to GetConfFile() followed by:
133 # AddConfFileToNode(or Group) or,
134 # DeleteConfFileFromNode(or Group) as appropriate.
135 # This would be easier to update in the API, but it's not
136 # clear if there are other semantics that are being honored by
137 # doing it the way that it currently is.
139 $return = $api->UpdateConfFile($conf_file_id, $data);
144 $return = $api->GetConfFiles(array($conf_file_id));
150 print "VALIDATION FAILED<br>";
151 print $this->validation->error_string ;
152 print "VALIDATION FAILED<br>";
156 if( !$error_occurred )
159 $finalized_message= "Successfully updated.";
163 $conf_file = $api->GetConfFiles(array(intval($conf_file_id)));
164 if (empty($conf_file)) {
167 $conf_file = $conf_file[0];
169 $data['enabled'] = $conf_file['enabled'];
170 $data['source'] = $conf_file['source'];
171 $data['dest'] = $conf_file['dest'];
172 $data['file_permissions'] = $conf_file['file_permissions'];
173 $data['file_owner'] = $conf_file['file_owner'];
174 $data['file_group'] = $conf_file['file_group'];
175 $data['preinstall_cmd'] = $conf_file['preinstall_cmd'];
176 $data['postinstall_cmd'] = $conf_file['postinstall_cmd'];
177 $data['error_cmd'] = $conf_file['error_cmd'];
178 $data['ignore_cmd_errors'] = $conf_file['ignore_cmd_errors'];
179 $data['always_update'] = $conf_file['always_update'];
180 $data['node_ids'] = $conf_file['node_ids'];
181 $data['nodegroup_ids'] = $conf_file['nodegroup_ids'];
183 if( count($data['nodegroup_ids']) == 0 && count($data['node_ids']) == 0 )
185 $data['scope'] = "global";
187 if( count($data['nodegroup_ids']) == 0 && is_numeric($data['node_ids'][0]) )
189 $data['scope'] = "node";
190 } elseif( count($data['node_ids']) == 0 && is_numeric($data['nodegroup_ids'][0]) )
192 $data['scope'] = "group";
197 $data = $this->get_stage_data($data);
199 $this->load->view('header', $data);
200 $this->load->view('debug', $data);
201 $this->load->view('UpdateConfFile', $data);
202 $this->load->view('footer', $data);
208 $this->load->helper(array('form', 'url'));
209 $this->load->library('validation');
210 $this->validation->set_error_delimiters('<span class="error">', '</span>');
213 $fields['enabled'] = "Enabled";
214 $fields['source'] = "Source";
215 $fields['dest'] = "Destination";
216 $fields['file_permissions'] = "File Permissions";
217 $fields['file_owner'] = "File Owner";
218 $fields['file_group'] = "File Group";
219 $fields['preinstall_cmd'] = "Preinstall Command";
220 $fields['postinstall_cmd'] = "Postinstall Command";
221 $fields['error_cmd'] = "Error Command";
222 $fields['ignore_cmd_errors'] = "Ignore Command Errors";
223 $fields['always_update'] = "Always Update";
224 $fields['scope'] = "ConfFile Scope";
225 $fields['node_ids'] = "";
226 $fields['nodegroup_ids'] = "";
227 $this->validation->set_fields($fields);
229 if ( isset($_REQUEST['submitted']) )
231 $action= $_REQUEST["action"];
232 $submitted= $_REQUEST["submitted"];
238 $data['submit_caption']= "Create";
239 $data['title'] = "Create new node configuration file";
243 $rules['enabled'] = "trim|required|integer|intval";
244 $rules['source'] = "trim|required";
245 $rules['dest'] = "trim|required";
246 $rules['file_permissions'] = "trim";
247 $rules['file_owner'] = "trim";
248 $rules['file_group'] = "trim";
249 $rules['preinstall_cmd'] = "trim";
250 $rules['postinstall_cmd'] = "trim";
251 $rules['error_cmd'] = "trim";
252 $rules['ignore_cmd_errors'] = "trim|integer|intval";
253 $rules['always_update'] = "trim|integer|intval";
254 $rules['scope'] = "trim";
255 $rules['node_ids'] = "trim";
256 $rules['nodegroup_ids'] = "trim";
257 $this->validation->set_rules($rules);
259 $data['enabled'] = $this->validation->enabled;
260 $data['source'] = $this->validation->source;
261 $data['dest'] = $this->validation->dest;
262 $data['file_permissions'] = $this->validation->file_permissions;
263 $data['file_owner'] = $this->validation->file_owner;
264 $data['file_group'] = $this->validation->file_group;
265 $data['preinstall_cmd'] = $this->validation->preinstall_cmd;
266 $data['postinstall_cmd'] = $this->validation->postinstall_cmd;
267 $data['error_cmd'] = $this->validation->error_cmd;
268 $data['ignore_cmd_errors'] = $this->validation->ignore_cmd_errors;
269 $data['always_update'] = $this->validation->always_update;
270 $data['scope'] = $this->validation->scope;
271 $data['node_ids'] = array($this->validation->node_ids);
272 $data['nodegroup_ids'] = array($this->validation->nodegroup_ids);
274 if ($this->validation->run() == TRUE)
276 $conf_file_id = $api->AddConfFile($data);
277 if ($conf_file_id == -1 ) {
282 if( !$error_occurred )
285 $finalized_message= "Successfully created.";
288 // set up default values for a new one
289 $data['enabled'] = 0;
290 $data['source'] = "";
292 $data['file_permissions'] = "644";
293 $data['file_owner'] = "root";
294 $data['file_group'] = "root";
295 $data['preinstall_cmd'] = "";
296 $data['postinstall_cmd'] = "";
297 $data['error_cmd'] = "";
298 $data['ignore_cmd_errors'] = 0;
299 $data['always_update'] = 0;
300 $data['scope'] = "global";
303 $data = $this->get_stage_data($data);
305 $this->load->view('header', $data);
306 $this->load->view('debug', $data);
307 $this->load->view('AddConfFile', $data);
308 $this->load->view('footer', $data);