add basic integrity checks for config variables
authorDenis Ovsienko <denis@ovsienko.info>
Fri, 30 Nov 2018 23:43:25 +0000 (23:43 +0000)
committerDenis Ovsienko <denis@ovsienko.info>
Fri, 30 Nov 2018 23:50:36 +0000 (23:50 +0000)
Use the configuration defaults data in two new checks in
renderDataIntegrityReport(). One of the checks immediately fails because
the data in getConfigDefaults() did not include ENABLE_BULKPORT_FORM, so
fix that right away.

wwwroot/inc/dictionary.php
wwwroot/inc/interface-reports.php
wwwroot/inc/navigation.php

index 2b63a19..dcfc6b8 100644 (file)
@@ -168,6 +168,7 @@ function getConfigDefaults()
                '8021Q_DEPLOY_RETRY' => '10800',
                '8021Q_WRI_AFTER_CONFT_LISTSRC' => 'false',
                '8021Q_INSTANT_DEPLOY' => 'no',
+               'ENABLE_BULKPORT_FORM' => 'yes',
                'CDP_RUNNERS_LISTSRC' => '',
                'LLDP_RUNNERS_LISTSRC' => '',
                'SHRINK_TAG_TREE_ON_CLICK' => 'yes',
index 5d68b05..d8c5c2e 100644 (file)
@@ -947,6 +947,45 @@ function renderDataIntegrityReport ()
                finishPortlet();
        }
 
+       // check 13: configuration variables
+       $config_nodefaults = array
+       (
+               'enterprise' => 'MyCompanyName',
+               'DB_VERSION' => CODE_VERSION,
+       );
+       $config_recognized = array_merge (getConfigDefaults(), $config_nodefaults);
+       $config_present = loadConfigCache();
+       // 13.1: anything that is present but not recognized
+       if (count ($martians = array_diff_key ($config_present, $config_recognized)))
+       {
+               $violations = TRUE;
+               startPortlet ('Unknown configuration options');
+               $columns = array
+               (
+                       array ('th_text' => 'Option', 'row_key' => 'varname', 'td_class' => 'varname tdright'),
+                       array ('th_text' => 'Current value', 'row_key' => 'varvalue'),
+               );
+               renderTableViewer ($columns, $martians);
+               finishPortlet();
+       }
+       // 13.2: anything that would be recognized if it was present (but is not)
+       if (count ($missing = array_diff_key ($config_recognized, $config_present)))
+       {
+               $violations = TRUE;
+               startPortlet ('Missing configuration options');
+               $columns = array
+               (
+                       array ('th_text' => 'Option', 'row_key' => 'varname', 'td_class' => 'varname tdright'),
+                       array ('th_text' => 'Default value', 'row_key' => 'varvalue'),
+               );
+               // $config_recognized has a different structure
+               $rows = array();
+               foreach ($missing as $varname => $default_value)
+                       $rows[] = array ('varname' => $varname, 'varvalue' => $default_value);
+               renderTableViewer ($columns, $rows);
+               finishPortlet();
+       }
+
        if (! $violations)
                echo '<h2 class=centered>No integrity violations found</h2>';
 }
index 33aef7b..d64c407 100644 (file)
@@ -714,6 +714,7 @@ $tabhandler['reports']['integrity'] = 'renderDataIntegrityReport';
 $tabhandler['reports']['serverconf'] = 'renderServerConfigurationReport';
 $interface_requires['reports-default'] = 'code.php';
 $interface_requires['reports-serverconf'] = 'dictionary.php';
+$interface_requires['reports-integrity'] = 'dictionary.php';
 $interface_requires['reports-*'] = 'interface-reports.php';
 
 $page['files']['title'] = 'Files';