|
|
(25 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
| <br>
| | Moved to |
| =Webservice prepare=
| | Webservice setup and overview |
| | |
| 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
| |
| <br><br>
| |
| | |
| =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==
| |
| {| style="width: 80%;"
| |
| |style="width:40%; vertical-align: top;"|
| |
| To install use:
| |
| root@myLVS-LinuxClient:~# 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'''
| |
| | |
| |style="width:45%; vertical-align: top;"|
| |
| <br><br><br>
| |
| [[image:myLVS-WS-02.png|380px|center]]
| |
| |}
| |
| | |
| ==Sample request from a Windows client using perl==
| |
| {| style="width: 80%;"
| |
| |style="width:40%; vertical-align: top;"|
| |
| 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'''
| |
| |style="width:45%; vertical-align: top;"|
| |
| <br><br>
| |
| [[image:myLVS-WS-01.png|380px|center]]
| |
| |}
| |
| | |
| ==Sample request from a Windows client using cscript with MSXML ==
| |
| {| style="width: 80%;"
| |
| |style="width:40%; vertical-align: top;"|
| |
| 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'''
| |
| |style="width:45%; vertical-align: top;"|
| |
| <br><br><br>
| |
| [[image:myLVS-WS-01.png|380px|center]]
| |
| |}
| |
| | |
| ==Sample request from a Windows client using cscript with SoapLite==
| |
| {| style="width: 80%;"
| |
| |style="width:40%; vertical-align: top;"|
| |
| | |
| Soaplite is a smart way to handle our request. It still runs as 32bit application on Server2012<br>
| |
| but it requires the 32bit part of cscript.
| |
| | |
| *Description: http://conf.soaplite.com/p2p/40.html
| |
| *Binary: http://soaplite.com/download/SOAP-Lite-COM-standalone-latest.zip
| |
| | |
| 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'''
| |
| | |
| |style="width:45%; vertical-align: top;"|
| |
| <br><br><br>
| |
| [[image:myLVS-WS-01.png|380px|center]]
| |
| |}
| |
| | |
| =Functions=
| |
| *The LVS-WFE Webservice offers the following functions:
| |
| <br>
| |
| {| style="text-align:left; background:#eeeeee;" border="1"
| |
| |-style="background:#aaaaaa"
| |
| ! Function !! Optional Paramter !! Description !! Return
| |
| |- style="color:black;"
| |
| |-
| |
| | 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 || -|| - || -
| |
| |}
| |
| <br>
| |
| | |
| =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
| |
| <br>
| |
| {| style="text-align:left; background:#eeeeee;" border="1"
| |
| |-style="background:#aaaaaa"
| |
| ! Code !! Description !! Return
| |
| |- style="color:black;"
| |
| |-
| |
| | '''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
| |
| |-
| |
| | |
| |}
| |
| <br>
| |