Webservice prepare

From MyLVS
Jump to navigation Jump to search


Webservice prepare

One more change required to be done within the mySql tables, this is because every host must be preconfigured for myLvsmon.

INSERT INTO `tblMaintenance` (`mID`,`enabled`,`ip`,`hostname`,`groupID`,`requestUP`,`requestDOWN`,`WeightDownTime`,`WeightDownPending`,`TurnOffTime`,
`TurnOffPending`,`response`,`message`,`updatepending`,`requestDate`,`responseDate`,`receivedfrom`,`CurWeightDownTime`,`CurTurnOffTime`,`DSLMaintenance`,
`DSLRenewRequest`,`DSLDate`,`DSLEpoche`,`DSLIP`) VALUES 
(1,1,'192.168.2.221','hh',1,0,0,30,0,30,0,200,'Host has been turned on',0,'0','20150727143609','0','0','0',0,0,'0',0,'0'),
(2,1,'192.168.2.222','hh',1,0,0,30,0,30,0,200,'Host has been turned on',0,'0','20150727143230','0','0','0',0,0,'0',0,'0');

Installing Soap-Lite modules for Linux

apt-get install libsoap-lite-perl



Installing Soap-Lite modules for Windows

C:\Users\Administrator\Documents\lvs>ppm install Soap-Lite
Downloading SOAP-Lite-1.17...done
Downloading Class-Inspector-1.28...done
Downloading IO-SessionData-1.03...done
Unpacking SOAP-Lite-1.17...done
Unpacking Class-Inspector-1.28...done
Unpacking IO-SessionData-1.03...done
Generating HTML for SOAP-Lite-1.17...done
Generating HTML for Class-Inspector-1.28...done
Generating HTML for IO-SessionData-1.03...done
Updating files in site area...done
 63 files installed

Setup Host Header

  • Windows
C:\>notepad c:\Windows\System32\drivers\etc\hosts

Set:

192.168.2.200	ws.mylvs.foo

Refresh dns cache

ipconfig /flushdns
  • Linux
root@myLVS-LinuxClient:/# vi /etc/hosts

Set:

192.168.2.200	ws.mylvs.foo


root@mylvs01:/var/www/mylvs/ws/cgi-bin# chmod 777 lvs.cgi
root@mylvs01:/var/www/mylvs/ws/modules# chmod 777 lvs.pm


  • Note: The webservice requires mylvsmon to run


Samples

Sample request from a Linux client using perl

To install use:

apt-get install libsoap-lite-perl

Sample script (test.pl)

#!/usr/bin/perl -w
use SOAP::Lite; # + qw/ trace /;
my $soap = SOAP::Lite
  -> uri('urn:lvs')
  -> proxy('http://ws.mylvs.foo/cgi-bin/lvs.cgi');
my $result = $soap->WHATISMYIP ();
unless ($result->fault) {
 print $result->result();
} else {
  print join ', ',
    $result->faultcode,
    $result->faultstring;
}
root@myLVS-LinuxClient:/usr/local/dev/mylvs# perl test.pl
200 192.168.2.222


Sample request from a Windows client using perl

Same procedure then above

#!/usr/bin/perl -w
use SOAP::Lite; # + qw/ trace /;
my $soap = SOAP::Lite
 -> uri('urn:lvs')
 -> proxy('http://ws.mylvs.foo/cgi-bin/lvs.cgi');
my $result = $soap->WHATISMYIP ();
unless ($result->fault) {
 print $result->result();
} else {
  print join ', ',
  $result->faultcode,
  $result->faultstring;
}

Sample script (test.pl):

C:\Users\Administrator\Documents\lvs>perl test.pl
200 192.168.2.221



Sample request from a Windows client using cscript with MSXML

Set xmlReq = CreateObject("MSXML2.DOMDocument.6.0")
request="<SOAP-ENV:Envelope xmlns:xsi='http://www.w3.org/1999/XMLSchema-instance' " 
request = request & "xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/' "
request = request & "xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' "
request = request & "xmlns:xsd='http://www.w3.org/1999/XMLSchema' "
request = request & "SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>"
request = request & "<SOAP-ENV:Body><mylvs:WHATISMYIP xmlns:mylvs='urn:lvs'/>"
'request = request & "<c-gensym3 xsi:type='xsd:string'>192.168.xx.yy</c-gensym3>" 'alternative param
request = request & "</SOAP-ENV:Body></SOAP-ENV:Envelope>"
xmlReq.loadXML  request 'load our request
Set xmlRes = CreateObject("MSXML2.XMLHTTP.6.0")  
xmlRes.open "POST", "http://ws.mylvs.foo/cgi-bin/lvs.cgi"
xmlRes.send (xmlReq)
while xmlRes.readyState <> 4
wend
Set objDispatch =  xmlRes.responseXML
set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.Load objDispatch
WScript.Echo xmlDoc.selectSingleNode("//WHATISMYIPResponse").text

Sample script (test.vbs):

C:\Users\Administrator\Documents\lvs>cscript test.vbs //Nologo
200 192.168.2.221




Sample request from a Windows client using cscript with SoapLite

Soaplite is a smart way to handle our request. It still runs as 32bit application on Server2012
but it requires the 32bit part of cscript.

Soaplite must be registered with the 32bit part of regsvr:

C:\Users\Administrator\Documents\lvs>c:\Windows\SysWOW64\regsvr32.exe Lite.dll

Sample script (test-lite.vbs):

strSoapProxy="http://ws.mylvs.foo/cgi-bin/lvs.cgi"
strSoapURI = "urn:lvs"
set wso = CreateObject("SOAP.Lite").new("proxy", strSoapProxy, "uri",strSoapURI )
'wscript.echo  wso.WHATISMYIP(strBLA).result 'Sample for an alternative parameter
wscript.echo  wso.WHATISMYIP().result
C:\Users\Administrator\Documents\lvs>c:\Windows\SysWOW64\cscript.exe test-lite.vbs //nologo
200 192.168.2.221




Functions

  • The LVS-WFE Webservice offers the following functions:


Function Optional Paramter Description Return
REQUESTWEIGHTDOWN String (a ip address like 192.168.1.1) Request to set the host offline String (Code(d{3}) Description
REQUESTWEIGHTUP String (a ip address like 192.168.1.1) Request to set the host online String (Code(d{3}) Description
REQUESTWEIGHTSTATUS String (a ip address like 192.168.1.1) Request the current status String (Code(d{3}) Description
REQUESTGROUPINFORMATION String (a ip address like 192.168.1.1) Request the current group configuration String (Code(d{3}) Description
WHATISMYIP - - -


Return Codes

  • The LVS-WFE Webservice retruns the following codes:
  • Log Categories
    • 2nn = Success
    • 3nn = Logical Errors
    • 4nn = Functional Errors
    • 5nn = Access or Request Errors


Code Description Return
200 Request accepted (function defined message) True
300 WeigthDown in process False
301 TurnOff in process False
302 Another maintenance service is already running False
304 Host has already maintenance running, please come back later False
305 Host has already ip renew set, please come back later False
306 Host has already ip renewed a few minutes ago, please come back later False
307 Host not found in inventory False
407 IP renew is not set (debugging only) False
408 Function not supported (debugging only) False
500 Access denied or Request Refused False
501 Access denied - update failed, contact IT-Admin False