r2090 + fixed find_object_ip_helper and some underlying code
authorDenis Ovsienko <infrastation@yandex.ru>
Wed, 30 Jul 2008 08:38:30 +0000 (08:38 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Wed, 30 Jul 2008 08:38:30 +0000 (08:38 +0000)
ChangeLog
find_object_ip_helper.php
inc/database.php
inc/interface.php

index 1a0f18f..a2011dc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,5 @@
+0.16.2
+       bugfix: IP address picker was broken
 0.16.1 2008-07-30
        new feature: pre-assigned tags for new VS and RS pools records
        new feature: cache RackCode parse tree for better performance
index 96dcfcb..a94f07a 100644 (file)
@@ -3,7 +3,7 @@
        // This is our context.
        $pageno = 'objects';
        $tabno = 'default';
-       fixContext()
+       fixContext();
        if (!permitted())
        {
                renderAccessDenied();
@@ -26,7 +26,7 @@ echo "<link rel=icon href='" . getFaviconURL() . "' type='image/x-icon' />";
 <h2>Choose a port:</h2><br><br>
 <input type=hidden id='ip'>
 <select size="30" id="addresses">
-<?php renderObjectAddressesAndNames (); ?>
+<?php renderAllIPv4Allocations(); ?>
 </select><br><br>
 <input type='submit' value='Proceed' onclick='if (getElementById("ip")!="") { opener.document.getElementById("remoteip").value=getElementById("ip").value; window.close();}'>
 </div>
index ff03b9f..82c93ce 100644 (file)
@@ -805,7 +805,7 @@ function delObjectPort ($port_id)
        return '';
 }
 
-function getObjectAddressesAndNames ()
+function getAllIPv4Allocations ()
 {
        $query =
                "select object_id as object_id, ".
@@ -892,8 +892,8 @@ function unlinkPort ($port)
        return '';
 }
 
-// FIXME: after falling back to using existing getObjectInfo we don't
-// need that large query. Shrink it some later.
+// Return a list of IPv4 allocations for the object. Each address will list
+// all other objects, to which it is allocated (except the current object).
 function getObjectAddresses ($object_id = 0)
 {
        if ($object_id == 0)
@@ -910,23 +910,20 @@ function getObjectAddresses ($object_id = 0)
                "IPBonds.type as IPBonds_type, ".
                "RemoteBonds.name as RemoteBonds_name, ".
                "RemoteBonds.type as RemoteBonds_type, ".
-               "RemoteBonds.object_id as RemoteBonds_object_id, ".
-               "RemoteObject.name as RemoteObject_name from IPBonds " .
+               "RemoteBonds.object_id as RemoteBonds_object_id ".
+               "from IPBonds " .
                "left join IPBonds as RemoteBonds on IPBonds.ip=RemoteBonds.ip " .
                        "and IPBonds.object_id!=RemoteBonds.object_id " .
                "left join IPAddress on IPBonds.ip=IPAddress.ip " .
-               "left join RackObject as RemoteObject on RemoteBonds.object_id=RemoteObject.id ".
                "where ".
                "IPBonds.object_id = ${object_id} ".
-               "order by IPBonds.ip, RemoteObject.name";
+               "order by IPBonds.ip, RemoteBonds.object_id";
        $result = useSelectBlade ($query, __FUNCTION__);
        $ret=array();
        $count=0;
        $refcount=0;
        $prev_ip = 0;
-       // We are going to call getObjectInfo() for some rows,
-       // hence the connector must be unloaded from the
-       // current data.
+       // Free the DB connection to enable subqueries.
        $rows = $result->fetchAll (PDO::FETCH_ASSOC);
        $result->closeCursor();
        foreach ($rows as $row)
@@ -950,7 +947,7 @@ function getObjectAddresses ($object_id = 0)
                        $ret[$count]['references'][$refcount]['name'] = $row['RemoteBonds_name'];
                        $ret[$count]['references'][$refcount]['object_id'] = $row['RemoteBonds_object_id'];
                        if (empty ($row['RemoteBonds_object_id']))
-                               $ret[$count]['references'][$refcount]['object_name'] = $row['RemoteObject_name'];
+                               $ret[$count]['references'][$refcount]['object_name'] = '';
                        else
                        {
                                $oi = getObjectInfo ($row['RemoteBonds_object_id']);
index 8313f63..eb9f334 100644 (file)
@@ -1848,9 +1848,9 @@ function renderEmptyPortsSelect ($port_id, $type_id)
        }
 }
 
-function renderObjectAddressesAndNames ()
+function renderAllIPv4Allocations ()
 {
-       $addresses = getObjectAddressesAndNames();
+       $addresses = getAllIPv4Allocations();
        usort($addresses, 'sortObjectAddressesAndNames');
        foreach ($addresses as $address)
        {