r1692 + introduce AUTOPORTS_CONFIG and try using it
authorDenis Ovsienko <infrastation@yandex.ru>
Tue, 19 Feb 2008 07:28:16 +0000 (07:28 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 19 Feb 2008 07:28:16 +0000 (07:28 +0000)
inc/database.php
inc/ophandlers.php
install/init-dictbase.sql
upgrade.php

index a61da6e15580ebb5765e07d0546bd779aed98a98..b529df665a55aeaf643e74f7cd8f3493379b3b57 100644 (file)
@@ -376,6 +376,8 @@ function commitAddObject ($new_name, $new_label, $new_barcode, $new_type_id, $ne
        $row = $result2->fetch (PDO::FETCH_NUM);
        $last_insert_id = $row[0];
        $result2->closeCursor();
+       // Do AutoPorts magic
+       executeAutoPorts ($last_insert_id, $new_type_id);
        return recordHistory ('RackObject', "id = ${last_insert_id}");
 }
 
@@ -2643,4 +2645,37 @@ function commitSetInService ($rs_id = 0, $inservice = '')
                return TRUE;
 }
 
+function executeAutoPorts ($object_id = 0, $type_id = 0)
+{
+       if ($object_id == 0 or $type_id == 0)
+       {
+               showError ('Invalid arguments', __FUNCTION__);
+               die;
+       }
+       $autoname
+       $typemap = explode (';', str_replace (' ', '', getConfigVar ('AUTOPORTS_CONFIG')));
+       foreach ($typemap as $equation)
+       {
+               $tmp = explode ('=', $equation);
+               if (count ($tmp) != 2)
+                       continue;
+               $objtype_id = $tmp[0];
+               if ($objtype_id != $type_id)
+                       continue;
+               $portlist = $tmp[1];
+               foreach (explode ('+', $portlist) as $product)
+               {
+                       $tmp = explode ('*', $product);
+                       if (count ($tmp) != 3)
+                               continue;
+                       $nports = $tmp[0];
+                       $port_type = $tmp[1];
+                       $format = $tmp[3];
+                       for ($i = 0; $i < $nports; $i++)
+                               // format string might ignore the index
+                               commitAddPort ($object_id, @sprintf ($format, $i), $port_type, '', '');
+               }
+       }
+}
+
 ?>
index 80c71678cdd712f9beaf4dd4c8969c9179192ab8..001d46bf16f0eb69466673ac03e9165e1a8bc31c 100644 (file)
@@ -926,6 +926,7 @@ function resetUIConfig()
        setConfigVar ('DETECT_URLS','no');
        setConfigVar ('RACK_PRESELECT_THRESHOLD','1');
        setConfigVar ('DEFAULT_IPV4_RS_INSERVICE','no');
+       setConfigVar ('AUTOPORTS_CONFIG','4 = 1*33*kvm + 2*24*eth%u');
        return "${root}?page=${pageno}&tab=default&message=" . urlencode ("Reset complete");
 }
 
index 6ad175453cad205053e8ad5e0411af6423304cd7..3963d2c06e4ec1aef301b2626d4ebf23a0a0478f 100644 (file)
@@ -239,6 +239,7 @@ INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, descriptio
 INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('DETECT_URLS','no','string','yes','no','Detect URLs in text fields');
 INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('RACK_PRESELECT_THRESHOLD','1','uint','no','no','Rack pre-selection threshold');
 INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('DEFAULT_IPV4_RS_INSERVICE','no','string','no','no','Inservice status for new SLB real servers');
+INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('AUTOPORTS_CONFIG','4 = 1*33*kvm + 2*24*eth%u','string','no','no','AutoPorts configuration');
 INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('DB_VERSION','0.14.11','string','no','yes','Database version.');
 
 INSERT INTO `UserPermission` (`user_id`, `page`, `tab`, `access`) VALUES (1,'%','%','yes');
index 778ae516358dcbc1801792ea0fb5d9ebfb103277..a0216946c11fd12331b2f7496c451bd3e2b83750 100644 (file)
@@ -716,6 +716,7 @@ CREATE TABLE `IPVirtualService` (
                        break; // --------------------------------------------
                case '0.14.12':
                        $query[] = "INSERT INTO `Config` VALUES ('DEFAULT_IPV4_RS_INSERVICE','no','string','no','no','Inservice status for new SLB real servers')";
+                       $query[] = "INSERT INTO `Config` VALUES ('AUTOPORTS_CONFIG','4 = 1*33*kvm + 2*24*eth%u','string','no','no','AutoPorts configuration')";
                        $query[] = "update Config set varvalue = '0.14.12' where varname = 'DB_VERSION'";
                        $query[] = "update Dictionary set dict_value = '[[Cronyx FMUX-16-E3 | http://www.cronyx.ru/hardware/fmux16-e3.html]]' where dict_key = 484";
                        break; // --------------------------------------------