r2143 - discard slbconfig gateway and make SLB code use sendfile
authorDenis Ovsienko <infrastation@yandex.ru>
Tue, 19 Aug 2008 12:01:25 +0000 (12:01 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 19 Aug 2008 12:01:25 +0000 (12:01 +0000)
ChangeLog
gateways/slbconfig/main [deleted file]
inc/functions.php
inc/gateways.php
inc/ophandlers.php

index 97cd4d8f83d5811c5bdf1eb9ca6fcecb9031b4f3..0ffa44b9c41c34e7b7329e2f2daf79d91bac2ef8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,7 @@
        new feature: LDAP username to UID mapping by Walery Wysotsky
        update: 3 more switches in SNMP code by Walery Wysotsky
        update: added a missing DB index
+       update: "slbconfig" gateway has been replaced by "sendfile"
 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
diff --git a/gateways/slbconfig/main b/gateways/slbconfig/main
deleted file mode 100755 (executable)
index 91ad8f6..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/sh
-
-# This is a RackTables gateway for installing SLB configuration onto
-# a live load balancer. The only supported command is:
-#
-# * connect <endpoint> <hardware> <software> <username>: authorize transaction
-# * activate <filename>: call user-supplied configuration installer
-#
-
-endpoint=
-hw=
-sw=
-user=
-cfgfile=
-CONNECTED=0
-MYDIR=`dirname $0`
-
-do_connect()
-{
-       endpoint=`echo $args | cut -s -d' ' -f1`
-       hw=`echo $args | cut -s -d' ' -f2`
-       sw=`echo $args | cut -s -d' ' -f3`
-       user=`echo $args | cut -s -d' ' -f4`
-       # sanity checks
-       if [ -z "$endpoint" -o -z "$hw" -o -z "$sw" -o -z "$user" ]; then
-               echo 'ERR!too few arguments to connect'
-               return
-       fi
-
-       CONNECTED=1
-       echo "OK!connected to $endpoint"
-}
-
-do_activate()
-{
-       cfgfile=$1
-       if [ ! -s "$cfgfile" ]; then
-               echo "ERR!Configuration file $cfgfile is either missing or empty."
-               return
-       fi
-       if [ ! -x "$MYDIR/install" ]; then
-               echo "ERR!Missing or not executable user-supplied installer script $MYDIR/install"
-               return
-       fi
-       "$MYDIR/install" $endpoint $hw $sw $user $cfgfile
-       ret=$?
-       if [ $ret = 0 ]; then
-               echo "OK!Configuration has been submitted for activation successfully"
-       else
-               echo "ERR!Configuration installer returned code $ret"
-       fi
-}
-
-# main loop
-while read cmd args; do
-       case $cmd in
-               connect)
-                       if [ $CONNECTED = 1 ]; then
-                               echo 'ERR!Already connected'
-                       else
-                               do_connect $args
-                       fi
-                       ;;
-               activate)
-                       if [ $CONNECTED = 1 ]; then
-                               do_activate $args
-                       else
-                               echo 'ERR!Not connected'
-                       fi
-                       ;;
-               *)
-                       echo "ERR!unknown command $cmd"
-       esac
-done
-
-exit 0
index c7d0356c935887278fcb41069c9a56ebe2650cbd..b6a38fd71e988d88db055c8a7a5889f2abe2240b 100644 (file)
@@ -1518,7 +1518,8 @@ function buildLVSConfig ($object_id = 0)
                }
                $newconfig .=  "}\n\n\n";
        }
-       return $newconfig;
+       // FIXME: deal somehow with Mac-styled text, the below replacement will screw it up
+       return str_replace ("\r", '', $newconfig);
 }
 
 // Indicate occupation state of each IP address: none, ordinary or problematic.
index 901e32a1c0e03b20141a84305a4a81f6f5f48e81..4ba145e92d8188aff35631925ca030eca62251f1 100644 (file)
@@ -206,46 +206,6 @@ function setSwitchVLANs ($object_id = 0, $setcmd)
        return $log_m;
 }
 
-// FIXME: shouldn't the common code be made into some helper?
-function activateSLBConfig ($object_id = 0, $configtext = '')
-{
-       global $remote_username;
-       if ($object_id <= 0 or empty ($configtext))
-               return oneLiner (160); // invalid arguments
-       $objectInfo = getObjectInfo ($object_id);
-       $endpoints = findAllEndpoints ($object_id, $objectInfo['name']);
-       if (count ($endpoints) == 0)
-               return oneLiner (161); // endpoint not found
-       if (count ($endpoints) > 1)
-               return oneLiner (162); // can't pick an address
-       $hwtype = $swtype = 'unknown';
-       $endpoint = str_replace (' ', '+', $endpoints[0]);
-       $tmpfilename = tempnam ('', 'RackTables-slbconfig-');
-       $tmpfile = fopen ($tmpfilename, 'wb');
-       fwrite ($tmpfile, str_replace ("\r", '', $configtext));
-       fclose ($tmpfile);
-       $data = queryGateway
-       (
-               'slbconfig',
-               array ("connect ${endpoint} ${hwtype} ${swtype} ${remote_username}", "activate ${tmpfilename}")
-       );
-       unlink ($tmpfilename);
-       if ($data == NULL)
-               return oneLiner (163); // unknown gateway failure
-       if (strpos ($data[0], 'OK!') !== 0)
-               return oneLiner (164, array ($data[0])); // gateway failure
-       if (count ($data) != 2)
-               return oneLiner (165); // protocol violation
-       // Finally we can parse the response into message array.
-       $log = array ('v' => 2);
-       $codemap['ERR'] = 166; // generic gateway error
-       $codemap['OK'] = 62; // generic gateway success
-       list ($code, $text) = split ('!', $data[1]);
-       $log['m'][] = array ('c' => $codemap[$code], 'a' => array ($text));
-       return $log;
-}
-
-// FIXME: copied and pasted too
 // Drop a file off RackTables platform. The gateway will catch the file and pass it to the given
 // installer script.
 function gwSendFile ($object_id = 0, $handlername, $filetext = '')
index eee26ab23653859dd6f7d68bdd545ca92e49024c..faef64837efd58d2ec009e7965a59a9d4f045a84 100644 (file)
@@ -1345,7 +1345,7 @@ function submitSLBConfig ()
 {
        assertUIntArg ('object_id', __FUNCTION__);
        $newconfig = buildLVSConfig ($_REQUEST['object_id']);
-       $msglog = activateSLBConfig ($_REQUEST['object_id'], html_entity_decode ($newconfig, ENT_QUOTES, 'UTF-8'));
+       $msglog = gwSendFile ($_REQUEST['object_id'], 'slbconfig', html_entity_decode ($newconfig, ENT_QUOTES, 'UTF-8'));
        return buildWideRedirectURL ($msglog);
 }