r4090 tableHandler(): add implementation of DELETE
authorDenis Ovsienko <infrastation@yandex.ru>
Mon, 10 Jan 2011 12:59:25 +0000 (12:59 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Mon, 10 Jan 2011 12:59:25 +0000 (12:59 +0000)
genericAssertion(): add "enum/vlan_type" case
renderPortsForObject(): don't put port_name and remote_port_id parameters to URL
delPortInterfaceCompatPack(): make DB access direct

Dismiss another pack of functions, which become obsolete after that:

- delObjectPort()
- delPortFromObject()
- deleteObjectLog()
- deleteRealServer()
- commitDeleteRS()
- deleteLoadBalancer()
- commitDestroyTag()
- destroyTag()
- commitReducePIC()
- delPortInterfaceCompat()
- deleteRow()
- commitDeleteRow()
- unlinkPort()
- commitReducePOIFC()
- delPortOIFCompat()
- commitSupplementPOIFC()
- addPortOIFCompat()
- commitReduceDictionary()
- reduceDictionary()
- commitDeleteAttribute()
- deleteAttribute()
- commitReduceAttrMap()
- reduceAttrMap()

inc/database.php
inc/functions.php
inc/interface.php
inc/navigation.php
inc/ophandlers.php

index d37ea2c..e6ccfd3 100644 (file)
@@ -225,11 +225,6 @@ function commitUpdateRow ($rackrow_id, $rackrow_name)
        return usePreparedExecuteBlade ('UPDATE RackRow SET name = ? WHERE id = ?', array ($rackrow_name, $rackrow_id));
 }
 
-function commitDeleteRow($rackrow_id)
-{
-       return usePreparedDeleteBlade ('RackRow', array ('id' => $rackrow_id));
-}
-
 // Return a simple object list w/o related information, so that the returned value
 // can be directly used by printSelect(). An optional argument is the name of config
 // option with constraint in RackCode.
@@ -988,13 +983,6 @@ function commitUpdatePort ($object_id, $port_id, $port_name, $port_type_id, $por
        return $errorInfo[2];
 }
 
-function delObjectPort ($port_id)
-{
-       if (usePreparedDeleteBlade ('Port', array ('id' => $port_id)) != TRUE)
-               return __FUNCTION__ . ': usePreparedDeleteBlade() failed';
-       return '';
-}
-
 function getAllIPv4Allocations ()
 {
        $result = usePreparedSelectBlade
@@ -1044,12 +1032,6 @@ function linkPorts ($porta, $portb, $cable = NULL)
        return $ret ? '' : 'query failed';
 }
 
-function unlinkPort ($port_id)
-{
-       usePreparedDeleteBlade ('Link', array ('porta' => $port_id, 'portb' => $port_id), 'OR');
-       return '';
-}
-
 // Return all IPv4 addresses allocated to the objects. Attach detailed
 // info about address to each alocation records. Index result by dotted-quad
 // address.
@@ -2006,26 +1988,6 @@ function getPortOIFCompat ()
        return $result->fetchAll (PDO::FETCH_ASSOC);
 }
 
-// Add a pair to the PortCompat table.
-function commitSupplementPOIFC ($type1, $type2)
-{
-       if ($type1 <= 0)
-               throw new InvalidArgException ('type1', $type1);
-       if ($type2 <= 0)
-               throw new InvalidArgException ('type2', $type2);
-       return usePreparedInsertBlade
-       (
-               'PortCompat',
-               array ('type1' => $type1, 'type2' => $type2)
-       );
-}
-
-// Remove a pair from the PortCompat table.
-function commitReducePOIFC ($type1, $type2)
-{
-       return usePreparedDeleteBlade ('PortCompat', array ('type1' => $type1, 'type2' => $type2));
-}
-
 function getDictStats ()
 {
        $stock_chapters = array (1, 2, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28);
@@ -2160,14 +2122,6 @@ function commitUpdateDictionary ($chapter_no = 0, $dict_key = 0, $dict_value = '
        );
 }
 
-// Technically dict_key is enough to delete, but including chapter_id into
-// WHERE clause makes sure, that the action actually happends for the same
-// chapter, which authorization was granted for.
-function commitReduceDictionary ($chapter_no = 0, $dict_key = 0)
-{
-       return usePreparedDeleteBlade ('Dictionary', array ('chapter_id' => $chapter_no, 'dict_key' => $dict_key));
-}
-
 function commitUpdateChapter ($chapter_no = 0, $chapter_name = '')
 {
        if (!strlen ($chapter_name))
@@ -2283,11 +2237,6 @@ function commitUpdateAttribute ($attr_id = 0, $attr_name = '')
        return usePreparedExecuteBlade ('UPDATE Attribute SET name=? WHERE id=?', array ($attr_name, $attr_id));
 }
 
-function commitDeleteAttribute ($attr_id = 0)
-{
-       return usePreparedDeleteBlade ('Attribute', array ('id' => $attr_id));
-}
-
 // FIXME: don't store garbage in chapter_no for non-dictionary types.
 function commitSupplementAttrMap ($attr_id = 0, $objtype_id = 0, $chapter_no = 0)
 {
@@ -2308,11 +2257,6 @@ function commitSupplementAttrMap ($attr_id = 0, $objtype_id = 0, $chapter_no = 0
        );
 }
 
-function commitReduceAttrMap ($attr_id = 0, $objtype_id)
-{
-       return usePreparedDeleteBlade ('AttributeMap', array ('attr_id' => $attr_id, 'objtype_id' => $objtype_id));
-}
-
 function cacheAllObjectsAttributes()
 {
        global $object_attribute_cache;
@@ -2720,22 +2664,12 @@ function addLBtoRSPool ($pool_id = 0, $object_id = 0, $vs_id = 0, $vsconfig = ''
        );
 }
 
-function commitDeleteRS ($id = 0)
-{
-       return usePreparedDeleteBlade ('IPv4RS', array ('id' => $id));
-}
-
 function commitDeleteVS ($id = 0)
 {
        releaseFiles ('ipv4vs', $id);
        return FALSE !== usePreparedDeleteBlade ('IPv4VS', array ('id' => $id)) && FALSE !== destroyTagsForEntity ('ipv4vs', $id);
 }
 
-function commitDeleteLB ($object_id = 0, $pool_id = 0, $vs_id = 0)
-{
-       return usePreparedDeleteBlade ('IPv4LB', array ('object_id' => $object_id, 'rspool_id' => $pool_id, 'vs_id' => $vs_id));
-}
-
 function commitUpdateRS ($rsid = 0, $rsip = '', $rsport = 0, $rsconfig = '')
 {
        if (long2ip (ip2long ($rsip)) !== $rsip)
@@ -3039,13 +2973,6 @@ function getTagList ()
        return $ret;
 }
 
-function commitDestroyTag ($tagid = 0)
-{
-       if (usePreparedDeleteBlade ('TagTree', array ('id' => $tagid)))
-               return '';
-       return 'usePreparedDeleteBlade() failed in ' . __FUNCTION__;
-}
-
 function commitUpdateTag ($tag_id, $tag_name, $parent_id)
 {
        return usePreparedExecuteBlade
@@ -3817,11 +3744,6 @@ function commitSupplementPIC ($iif_id, $oif_id)
        );
 }
 
-function commitReducePIC ($iif_id, $oif_id)
-{
-       return usePreparedDeleteBlade ('PortInterfaceCompat', array ('iif_id' => $iif_id, 'oif_id' => $oif_id));
-}
-
 function getPortIIFStats ($args)
 {
        $result = usePreparedSelectBlade
index d666674..867bc52 100644 (file)
@@ -246,6 +246,12 @@ function genericAssertion ($argname, $argtype)
                if (!in_array ($sic[$argname], array ('uint', 'float', 'string', 'dict')))
                        throw new InvalidRequestArgException ($argname, $sic[$argname], 'Unknown value');
                break;
+       case 'enum/vlan_type':
+               assertStringArg ($argname);
+               // "Alien" type is not valid until the logic is fixed to implement it in full.
+               if (!in_array ($sic[$argname], array ('ondemand', 'compulsory')))
+                       throw new InvalidRequestArgException ($argname, $sic[$argname], 'Unknown value');
+               break;
        default:
                throw new InvalidArgException ('argtype', $argtype); // comes not from user's input
        }
index 5f29fea..e8275ec 100644 (file)
@@ -1337,7 +1337,7 @@ function renderPortsForObject ($object_id)
        {
                $tr_class = isset ($hl_port_id) && $hl_port_id == $port['id'] ? 'class="port_highlight"' : '';
                printOpFormIntro ('editPort', array ('port_id' => $port['id']));
-               echo "<tr $tr_class><td><a name='port-${port['id']}' href='".makeHrefProcess(array('op'=>'delPort', 'port_id'=>$port['id'], 'object_id'=>$object_id, 'port_name'=>$port['name']))."'>";
+               echo "<tr $tr_class><td><a name='port-${port['id']}' href='".makeHrefProcess(array('op'=>'delPort', 'port_id'=>$port['id'], 'object_id'=>$object_id))."'>";
                printImageHREF ('delete', 'Unlink and Delete this port');
                echo "</a></td>\n";
                $a_class = isEthernetPort ($port) ? 'port-menu' : '';
@@ -1370,7 +1370,6 @@ function renderPortsForObject ($object_id)
                                makeHrefProcess(array(
                                        'op'=>'unlinkPort', 
                                        'port_id'=>$port['id'],
-                                       'remote_port_id' => $port['remote_id'],
                                        'object_id'=>$object_id)).
                        "'>";
                        printImageHREF ('cut', 'Unlink this port');
index 955197d..2b5aca6 100644 (file)
@@ -31,7 +31,6 @@ $tabhandler['rackspace']['default'] = 'renderRackspace';
 $tabhandler['rackspace']['edit'] = 'renderRackspaceRowEditor';
 $tabhandler['rackspace']['history'] = 'renderRackspaceHistory';
 $ophandler['rackspace']['edit']['updateRow'] = 'updateRow';
-$ophandler['rackspace']['edit']['delete'] = 'deleteRow';
 $ophandler['rackspace']['edit']['addRow'] = array
 (
        'table' => 'RackRow',
@@ -41,6 +40,15 @@ $ophandler['rackspace']['edit']['addRow'] = array
                array ('url_argname' => 'name', 'assertion' => 'string')
        ),
 );
+$ophandler['rackspace']['edit']['delete'] = array
+(
+       'table' => 'RackRow',
+       'action' => 'DELETE',
+       'arglist' => array
+       (
+               array ('url_argname' => 'row_id', 'table_colname' => 'id', 'assertion' => 'uint')
+       ),
+);
 
 $page['depot']['parent'] = 'index';
 $page['depot']['title'] = 'Objects';
@@ -156,10 +164,8 @@ $trigger['object']['8021qports'] = 'trigger_object_8021qports';
 $trigger['object']['8021qsync'] = 'trigger_object_8021qsync';
 $ophandler['object']['rackspace']['updateObjectAllocation'] = 'updateObjectAllocation';
 $ophandler['object']['ports']['addPort'] = 'addPortForObject';
-$ophandler['object']['ports']['delPort'] = 'delPortFromObject';
 $ophandler['object']['ports']['editPort'] = 'editPortForObject';
 $ophandler['object']['ports']['linkPort'] = 'linkPortForObject';
-$ophandler['object']['ports']['unlinkPort'] = 'unlinkPortForObject';
 $ophandler['object']['ports']['addMultiPorts'] = 'addMultiPorts';
 $ophandler['object']['ports']['addBulkPorts'] = 'addBulkPorts';
 $ophandler['object']['ports']['useup'] = 'useupPort';
@@ -173,7 +179,6 @@ $ophandler['object']['edit']['clearSticker'] = 'clearSticker';
 $ophandler['object']['edit']['update'] = 'updateObject';
 $ophandler['object']['edit']['resetObject'] = 'resetObject';
 $ophandler['object']['log']['add'] = 'addObjectlog';
-$ophandler['object']['log']['del'] = 'deleteObjectLog';
 $ophandler['object']['nat4']['addNATv4Rule'] = 'addPortForwarding';
 $ophandler['object']['nat4']['delNATv4Rule'] = 'delPortForwarding';
 $ophandler['object']['nat4']['updNATv4Rule'] = 'updPortForwarding';
@@ -186,7 +191,6 @@ $ophandler['object']['files']['addFile'] = 'addFileToEntity';
 $ophandler['object']['files']['linkFile'] = 'linkFileToEntity';
 $ophandler['object']['files']['unlinkFile'] = 'unlinkFile';
 $ophandler['object']['editrspvs']['addLB'] = 'addLoadBalancer';
-$ophandler['object']['editrspvs']['delLB'] = 'deleteLoadBalancer';
 $ophandler['object']['editrspvs']['updLB'] = 'updateLoadBalancer';
 $ophandler['object']['lvsconfig']['submitSLBConfig'] = 'submitSLBConfig';
 $ophandler['object']['snmpportfinder']['querySNMPData'] = 'querySNMPData';
@@ -199,6 +203,48 @@ $ophandler['object']['8021qsync']['exec8021QPush'] = 'process8021QSyncRequest';
 $ophandler['object']['8021qsync']['resolve8021QConflicts'] = 'resolve8021QConflicts';
 $delayauth['object']['8021qports']['save8021QConfig'] = TRUE;
 $delayauth['object']['livevlans']['setPortVLAN'] = TRUE;
+$ophandler['object']['ports']['delPort'] = array
+(
+       'table' => 'Port',
+       'action' => 'DELETE',
+       'arglist' => array
+       (
+               array ('url_argname' => 'port_id', 'table_colname' => 'id', 'assertion' => 'uint'),
+               array ('url_argname' => 'object_id', 'assertion' => 'uint'),
+       ),
+);
+$ophandler['object']['ports']['unlinkPort'] = array
+(
+       'table' => 'Link',
+       'action' => 'DELETE',
+       'arglist' => array
+       (
+               array ('url_argname' => 'port_id', 'table_colname' => 'porta', 'assertion' => 'uint'),
+               array ('url_argname' => 'port_id', 'table_colname' => 'portb', 'assertion' => 'uint'),
+       ),
+       'conjunction' => 'OR',
+);
+$ophandler['object']['log']['del'] = array
+(
+       'table' => 'ObjectLog',
+       'action' => 'DELETE',
+       'arglist' => array
+       (
+               array ('url_argname' => 'logid', 'table_colname' => 'id', 'assertion' => 'uint'),
+               array ('url_argname' => 'object_id', 'assertion' => 'uint'),
+       ),
+);
+$ophandler['object']['editrspvs']['delLB'] = array
+(
+       'table' => 'IPv4LB',
+       'action' => 'DELETE',
+       'arglist' => array
+       (
+               array ('url_argname' => 'object_id', 'assertion' => 'uint'),
+               array ('url_argname' => 'pool_id', 'table_colname' => 'rspool_id', 'assertion' => 'uint'),
+               array ('url_argname' => 'vs_id', 'assertion' => 'uint'),
+       ),
+);
 
 $page['ipv4space']['parent'] = 'index';
 $tab['ipv4space']['default'] = 'Browse';
@@ -326,7 +372,7 @@ $tabhandler['ipv4vs']['files'] = 'renderFilesForEntity';
 $trigger['ipv4vs']['tags'] = 'trigger_tags';
 $ophandler['ipv4vs']['edit']['updIPv4VS'] = 'updateVService';
 $ophandler['ipv4vs']['editlblist']['addLB'] = 'addLoadBalancer';
-$ophandler['ipv4vs']['editlblist']['delLB'] = 'deleteLoadBalancer';
+$ophandler['ipv4vs']['editlblist']['delLB'] = $ophandler['object']['editrspvs']['delLB'];
 $ophandler['ipv4vs']['editlblist']['updLB'] = 'updateLoadBalancer';
 $ophandler['ipv4vs']['tags']['saveTags'] = 'saveEntityTags';
 $ophandler['ipv4vs']['files']['addFile'] = 'addFileToEntity';
@@ -363,17 +409,25 @@ $tabhandler['ipv4rspool']['tags'] = 'renderEntityTags';
 $tabhandler['ipv4rspool']['files'] = 'renderFilesForEntity';
 $ophandler['ipv4rspool']['edit']['updIPv4RSP'] = 'updateRSPool';
 $ophandler['ipv4rspool']['editrslist']['addRS'] = 'addRealServer';
-$ophandler['ipv4rspool']['editrslist']['delRS'] = 'deleteRealServer';
 $ophandler['ipv4rspool']['editrslist']['updRS'] = 'updateRealServer';
 $ophandler['ipv4rspool']['editrslist']['addMany'] = 'addRealServers';
 $ophandler['ipv4rspool']['editlblist']['addLB'] = 'addLoadBalancer';
-$ophandler['ipv4rspool']['editlblist']['delLB'] = 'deleteLoadBalancer';
+$ophandler['ipv4rspool']['editlblist']['delLB'] = $ophandler['object']['editrspvs']['delLB'];
 $ophandler['ipv4rspool']['editlblist']['updLB'] = 'updateLoadBalancer';
 $ophandler['ipv4rspool']['rsinservice']['upd'] = 'updateRSInService';
 $ophandler['ipv4rspool']['tags']['saveTags'] = 'saveEntityTags';
 $ophandler['ipv4rspool']['files']['addFile'] = 'addFileToEntity';
 $ophandler['ipv4rspool']['files']['linkFile'] = 'linkFileToEntity';
 $ophandler['ipv4rspool']['files']['unlinkFile'] = 'unlinkFile';
+$ophandler['ipv4rspool']['editrslist']['delRS'] = array
+(
+       'table' => 'IPv4RS',
+       'action' => 'DELETE',
+       'arglist' => array
+       (
+               array ('url_argname' => 'id', 'assertion' => 'uint'),
+       ),
+);
 
 $page['rservers']['title'] = 'Real servers';
 $page['rservers']['parent'] = 'ipv4slb';
@@ -428,8 +482,26 @@ $tab['portmap']['default'] = 'View';
 $tab['portmap']['edit'] = 'Edit';
 $tabhandler['portmap']['default'] = 'renderPortOIFCompatViewer';
 $tabhandler['portmap']['edit'] = 'renderPortOIFCompatEditor';
-$ophandler['portmap']['edit']['add'] = 'addPortOIFCompat';
-$ophandler['portmap']['edit']['del'] = 'delPortOIFCompat';
+$ophandler['portmap']['edit']['add'] = array
+(
+       'table' => 'PortCompat',
+       'action' => 'INSERT',
+       'arglist' => array
+       (
+               array ('url_argname' => 'type1', 'assertion' => 'uint'),
+               array ('url_argname' => 'type2', 'assertion' => 'uint'),
+       ),
+);
+$ophandler['portmap']['edit']['del'] = array
+(
+       'table' => 'PortCompat',
+       'action' => 'DELETE',
+       'arglist' => array
+       (
+               array ('url_argname' => 'type1', 'assertion' => 'uint'),
+               array ('url_argname' => 'type2', 'assertion' => 'uint'),
+       ),
+);
 
 $page['portifcompat']['title'] = 'Enabled port types';
 $page['portifcompat']['parent'] = 'config';
@@ -438,9 +510,18 @@ $tab['portifcompat']['edit'] = 'Edit';
 $tabhandler['portifcompat']['default'] = 'renderPortIFCompat';
 $tabhandler['portifcompat']['edit'] = 'renderPortIFCompatEditor';
 $ophandler['portifcompat']['edit']['add'] = 'addPortInterfaceCompat';
-$ophandler['portifcompat']['edit']['del'] = 'delPortInterfaceCompat';
 $ophandler['portifcompat']['edit']['addPack'] = 'addPortInterfaceCompatPack';
 $ophandler['portifcompat']['edit']['delPack'] = 'delPortInterfaceCompatPack';
+$ophandler['portifcompat']['edit']['del'] = array
+(
+       'table' => 'PortInterfaceCompat',
+       'action' => 'DELETE',
+       'arglist' => array
+       (
+               array ('url_argname' => 'iif_id', 'assertion' => 'uint'),
+               array ('url_argname' => 'oif_id', 'assertion' => 'uint'),
+       ),
+);
 
 $page['attrs']['title'] = 'Attributes';
 $page['attrs']['parent'] = 'config';
@@ -451,9 +532,17 @@ $tabhandler['attrs']['default'] = 'renderAttributes';
 $tabhandler['attrs']['editattrs'] = 'renderEditAttributesForm';
 $tabhandler['attrs']['editmap'] = 'renderEditAttrMapForm';
 $ophandler['attrs']['editattrs']['upd'] = 'changeAttribute';
-$ophandler['attrs']['editattrs']['del'] = 'deleteAttribute';
 $ophandler['attrs']['editmap']['add'] = 'supplementAttrMap';
-$ophandler['attrs']['editmap']['del'] = 'reduceAttrMap';
+$ophandler['attrs']['editmap']['del'] = array
+(
+       'table' => 'AttributeMap',
+       'action' => 'DELETE',
+       'arglist' => array
+       (
+               array ('url_argname' => 'attr_id', 'assertion' => 'uint'),
+               array ('url_argname' => 'objtype_id', 'assertion' => 'uint'),
+       ),
+);
 $ophandler['attrs']['editattrs']['add'] = array
 (
        'table' => 'Attribute',
@@ -464,6 +553,15 @@ $ophandler['attrs']['editattrs']['add'] = array
                array ('url_argname' => 'attr_name', 'table_colname' => 'name', 'assertion' => 'string'),
        ),
 );
+$ophandler['attrs']['editattrs']['del'] = array
+(
+       'table' => 'Attribute',
+       'action' => 'DELETE',
+       'arglist' => array
+       (
+               array ('url_argname' => 'attr_id', 'table_colname' => 'id', 'assertion' => 'uint'),
+       ),
+);
 
 $page['dict']['title'] = 'Dictionary';
 $page['dict']['parent'] = 'config';
@@ -490,7 +588,6 @@ $tab['chapter']['default'] = 'View';
 $tab['chapter']['edit'] = 'Edit';
 $tabhandler['chapter']['default'] = 'renderChapter';
 $tabhandler['chapter']['edit'] = 'renderChapterEditor';
-$ophandler['chapter']['edit']['del'] = 'reduceDictionary';
 $ophandler['chapter']['edit']['upd'] = 'updateDictionary';
 $ophandler['chapter']['edit']['add'] = array
 (
@@ -502,6 +599,19 @@ $ophandler['chapter']['edit']['add'] = array
                array ('url_argname' => 'dict_value', 'assertion' => 'string'),
        ),
 );
+$ophandler['chapter']['edit']['del'] = array
+(
+       'table' => 'Dictionary',
+       'action' => 'DELETE',
+       'arglist' => array
+       (
+               // Technically dict_key is enough to delete, but including chapter_id into
+               // WHERE clause makes sure, that the action actually happends for the same
+               // chapter, which authorization was granted for.
+               array ('url_argname' => 'chapter_no', 'table_colname' => 'chapter_id', 'assertion' => 'uint'),
+               array ('url_argname' => 'dict_key', 'assertion' => 'uint'),
+       ),
+);
 
 $page['ui']['title'] = 'User interface';
 $page['ui']['parent'] = 'config';
@@ -520,7 +630,6 @@ $tab['tagtree']['default'] = 'View';
 $tab['tagtree']['edit'] = 'Edit';
 $tabhandler['tagtree']['default'] = 'renderTagTree';
 $tabhandler['tagtree']['edit'] = 'renderTagTreeEditor';
-$ophandler['tagtree']['edit']['destroyTag'] = 'destroyTag';
 $ophandler['tagtree']['edit']['updateTag'] = 'updateTag';
 $ophandler['tagtree']['edit']['createTag'] = array
 (
@@ -532,6 +641,15 @@ $ophandler['tagtree']['edit']['createTag'] = array
                array ('url_argname' => 'parent_id', 'assertion' => 'uint0', 'if_empty' => 'NULL'),
        ),
 );
+$ophandler['tagtree']['edit']['destroyTag'] = array
+(
+       'table' => 'TagTree',
+       'action' => 'DELETE',
+       'arglist' => array
+       (
+               array ('url_argname' => 'tag_id', 'table_colname' => 'id', 'assertion' => 'tag'),
+       ),
+);
 
 $page['myaccount']['title'] = 'My account';
 $page['myaccount']['parent'] = 'config';
@@ -632,7 +750,7 @@ $ophandler['vlandomain']['vlanlist']['add'] = array
        (
                array ('url_argname' => 'vdom_id', 'table_colname' => 'domain_id', 'assertion' => 'uint'),
                array ('url_argname' => 'vlan_id', 'assertion' => 'uint'),
-               array ('url_argname' => 'vlan_type', 'assertion' => 'string'), // ENUM actually
+               array ('url_argname' => 'vlan_type', 'assertion' => 'enum/vlan_type'),
                array ('url_argname' => 'vlan_descr', 'assertion' => 'string0', 'if_empty' => 'NULL'),
        ),
 );
index d465a1d..bafec1a 100644 (file)
@@ -169,19 +169,6 @@ function editPortForObject ()
                return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['name']));
 }
 
-$msgcode['delPortFromObject']['OK'] = 7;
-$msgcode['delPortFromObject']['ERR'] = 100;
-function delPortFromObject ()
-{
-       assertUIntArg ('port_id');
-       $error = delObjectPort ($_REQUEST['port_id']);
-
-       if ($error != '')
-               return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
-       else
-               return buildRedirectURL (__FUNCTION__, 'OK', array ($_REQUEST['port_name']));
-}
-
 $msgcode['linkPortForObject']['OK'] = 8;
 $msgcode['linkPortForObject']['ERR'] = 100;
 function linkPortForObject ()
@@ -211,33 +198,6 @@ function linkPortForObject ()
        );
 }
 
-$msgcode['unlinkPortForObject']['OK'] = 9;
-$msgcode['unlinkPortForObject']['ERR'] = 100;
-function unlinkPortForObject ()
-{
-       assertUIntArg ('port_id');
-       assertUIntArg ('remote_port_id');
-
-       global $sic;
-       $local_port_info = getPortInfo ($sic['port_id']);
-       $remote_port_info = getPortInfo ($sic['remote_port_id']);
-       $remote_object = spotEntity ('object', $remote_port_info['object_id']);
-       $error = unlinkPort ($_REQUEST['port_id']);
-       if ($error != '')
-               return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
-       return buildRedirectURL
-       (
-               __FUNCTION__,
-               'OK',
-               array
-               (
-                       $local_port_info['name'],
-                       $remote_port_info['name'],
-                       $remote_object['dname'],
-               )
-       );
-}
-
 $msgcode['addMultiPorts']['OK'] = 10;
 $msgcode['addMultiPorts']['ERR'] = 123;
 function addMultiPorts ()
@@ -664,17 +624,6 @@ function updateDictionary ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
-$msgcode['reduceDictionary']['OK'] = 50;
-$msgcode['reduceDictionary']['ERR'] = 111;
-function reduceDictionary ()
-{
-       assertUIntArg ('dict_key');
-       if (commitReduceDictionary ($_REQUEST['chapter_no'], $_REQUEST['dict_key']) === TRUE)
-               return buildRedirectURL (__FUNCTION__, 'OK');
-       else
-               return buildRedirectURL (__FUNCTION__, 'ERR');
-}
-
 $msgcode['updateChapter']['OK'] = 54;
 $msgcode['updateChapter']['ERR'] = 113;
 function updateChapter ()
@@ -710,17 +659,6 @@ function changeAttribute ()
                return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
-$msgcode['deleteAttribute']['OK'] = 47;
-$msgcode['deleteAttribute']['ERR'] = 117;
-function deleteAttribute ()
-{
-       assertUIntArg ('attr_id');
-       if (commitDeleteAttribute ($_REQUEST['attr_id']))
-               return buildRedirectURL (__FUNCTION__, 'OK');
-       else
-               return buildRedirectURL (__FUNCTION__, 'ERR');
-}
-
 $msgcode['supplementAttrMap']['OK'] = 48;
 $msgcode['supplementAttrMap']['ERR1'] = 154;
 $msgcode['supplementAttrMap']['ERR2'] = 118;
@@ -749,18 +687,6 @@ function supplementAttrMap ()
                return buildRedirectURL (__FUNCTION__, 'ERR2');
 }
 
-$msgcode['reduceAttrMap']['OK'] = 49;
-$msgcode['reduceAttrMap']['ERR'] = 119;
-function reduceAttrMap ()
-{
-       assertUIntArg ('attr_id');
-       assertUIntArg ('objtype_id');
-       if (commitReduceAttrMap ($_REQUEST['attr_id'], $_REQUEST['objtype_id']) !== FALSE)
-               return buildRedirectURL (__FUNCTION__, 'OK');
-       else
-               return buildRedirectURL (__FUNCTION__, 'ERR');
-}
-
 $msgcode['clearSticker']['OK'] = 15;
 $msgcode['clearSticker']['ERR'] = 120;
 function clearSticker ()
@@ -1260,34 +1186,6 @@ function addVService ()
                return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
-$msgcode['deleteRealServer']['OK'] = 35;
-$msgcode['deleteRealServer']['ERR'] = 128;
-function deleteRealServer ()
-{
-       assertUIntArg ('id');
-       if (!commitDeleteRS ($_REQUEST['id']))
-               return buildRedirectURL (__FUNCTION__, 'ERR');
-       else
-               return buildRedirectURL (__FUNCTION__, 'OK');
-}
-
-$msgcode['deleteLoadBalancer']['OK'] = 19;
-$msgcode['deleteLoadBalancer']['ERR'] = 129;
-function deleteLoadBalancer ()
-{
-       assertUIntArg ('object_id');
-       assertUIntArg ('pool_id');
-       assertUIntArg ('vs_id');
-       if (!commitDeleteLB (
-               $_REQUEST['object_id'],
-               $_REQUEST['pool_id'],
-               $_REQUEST['vs_id']
-       ))
-               return buildRedirectURL (__FUNCTION__, 'ERR');
-       else
-               return buildRedirectURL (__FUNCTION__, 'OK');
-}
-
 $msgcode['deleteVService']['OK'] = 29;
 $msgcode['deleteVService']['ERR'] = 130;
 function deleteVService ()
@@ -1561,21 +1459,6 @@ function saveEntityTags ()
                return buildRedirectURL (__FUNCTION__, 'OK', array ($n_succeeds));
 }
 
-$msgcode['destroyTag']['OK'] = 58;
-$msgcode['destroyTag']['ERR1'] = 183;
-$msgcode['destroyTag']['ERR2'] = 144;
-function destroyTag ()
-{
-       assertUIntArg ('tag_id');
-       global $taglist;
-       if (!isset ($taglist[$_REQUEST['tag_id']]))
-               return buildRedirectURL (__FUNCTION__, 'ERR1', array ($_REQUEST['tag_id']));
-       if (($ret = commitDestroyTag ($_REQUEST['tag_id'])) == '')
-               return buildRedirectURL (__FUNCTION__, 'OK', array ($taglist[$_REQUEST['tag_id']]['tag']));
-       else
-               return buildRedirectURL (__FUNCTION__, 'ERR2');
-}
-
 $msgcode['updateTag']['OK'] = 60;
 $msgcode['updateTag']['ERR1'] = 145;
 $msgcode['updateTag']['ERR2'] = 109;
@@ -1755,15 +1638,6 @@ function updateRow ()
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($_REQUEST['name']));
 }
 
-$msgcode['deleteRow']['OK'] = 77;
-$msgcode['deleteRow']['ERR'] = 146;
-function deleteRow ()
-{
-       assertUIntArg ('row_id');
-       $rowinfo = getRackRowInfo ($_REQUEST['row_id']);
-       return buildRedirectURL (__FUNCTION__, FALSE === commitDeleteRow ($_REQUEST['row_id']) ? 'ERR' : 'OK', array ($rowinfo['name']));
-}
-
 $msgcode['addRack']['OK'] = 65;
 $msgcode['addRack']['ERR1'] = 171;
 $msgcode['addRack']['ERR2'] = 172;
@@ -2049,17 +1923,6 @@ function addPortInterfaceCompat ()
        return buildRedirectURL (__FUNCTION__, 'ERR');
 }
 
-$msgcode['delPortInterfaceCompat']['OK'] = 49;
-$msgcode['delPortInterfaceCompat']['ERR'] = 111;
-function delPortInterfaceCompat ()
-{
-       assertUIntArg ('iif_id');
-       assertUIntArg ('oif_id');
-       if (commitReducePIC ($_REQUEST['iif_id'], $_REQUEST['oif_id']))
-               return buildRedirectURL (__FUNCTION__, 'OK');
-       return buildRedirectURL (__FUNCTION__, 'ERR');
-}
-
 $ifcompatpack = array
 (
        '1000cwdm80' => array (1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216),
@@ -2105,41 +1968,18 @@ function delPortInterfaceCompatPack ()
 {
        assertStringArg ('standard');
        assertUIntArg ('iif_id');
-       global $ifcompatpack;
-       if (!array_key_exists ($_REQUEST['standard'], $ifcompatpack) or !array_key_exists ($_REQUEST['iif_id'], getPortIIFOptions()))
+       global $ifcompatpack, $sic;
+       if (!array_key_exists ($sic['standard'], $ifcompatpack) or !array_key_exists ($sic['iif_id'], getPortIIFOptions()))
                return buildRedirectURL (__FUNCTION__, 'ERR');
        $ngood = $nbad = 0;
-       foreach ($ifcompatpack[$_REQUEST['standard']] as $oif_id)
-               if (commitReducePIC ($_REQUEST['iif_id'], $oif_id))
+       foreach ($ifcompatpack[$sic['standard']] as $oif_id)
+               if (usePreparedDeleteBlade ('PortInterfaceCompat', array ('iif_id' => $sic['iif_id'], 'oif_id' => $oif_id)))
                        $ngood++;
                else
                        $nbad++;
        return buildRedirectURL (__FUNCTION__, 'OK', array ($nbad, $ngood));
 }
 
-$msgcode['addPortOIFCompat']['OK'] = 48;
-$msgcode['addPortOIFCompat']['ERR'] = 110;
-function addPortOIFCompat()
-{
-       assertUIntArg('type1');
-       assertUIntArg('type2');
-       if (commitSupplementPOIFC($_REQUEST['type1'], $_REQUEST['type2']))
-               return buildRedirectURL(__FUNCTION__, 'OK');
-       return buildRedirectURL(__FUNCTION__, 'ERR');
-}
-
-$msgcode['delPortOIFCompat']['OK'] = 49;
-$msgcode['delPortOIFCompat']['ERR'] = 111;
-function delPortOIFCompat ()
-{
-       assertUIntArg('type1');
-       assertUIntArg('type2');
-       if (commitReducePOIFC ($_REQUEST['type1'], $_REQUEST['type2']) !== FALSE)
-               return buildRedirectURL (__FUNCTION__, 'OK');
-       return buildRedirectURL (__FUNCTION__, 'ERR');
-
-}
-
 $msgcode['add8021QOrder']['OK'] = 48;
 $msgcode['add8021QOrder']['ERR'] = 118;
 function add8021QOrder ()
@@ -2699,14 +2539,6 @@ function importDPData()
        return buildRedirectURL (__FUNCTION__, 'OK', array ($nignored, $ndone));
 }
 
-$msgcode['deleteObjectLog']['OK'] = 77;
-function deleteObjectLog ()
-{
-       assertUIntArg ('logid');
-       usePreparedDeleteBlade ('ObjectLog', array ('id' => $_REQUEST['logid']));
-       return buildRedirectURL (__FUNCTION__, 'OK', array ('log entry'));
-}
-
 $msgcode['addObjectlog']['OK'] = 0;
 function addObjectlog ()
 {
@@ -2758,6 +2590,10 @@ function tableHandler ($opspec)
        case 'INSERT':
                $retcode = TRUE === usePreparedInsertBlade ($opspec['table'], $columns) ? 48 : 110;
                break;
+       case 'DELETE':
+               $conjunction = array_key_exists ('conjunction', $opspec) ? $opspec['conjunction'] : 'AND';
+               $retcode = FALSE !== usePreparedDeleteBlade ($opspec['table'], $columns, $conjunction) ? 49 : 111;
+               break;
        default:
                throw new InvalidArgException ('opspec/action', '(malformed array structure)');
        }