Webservice prepare: Difference between revisions

From MyLVS
Jump to navigation Jump to search
No edit summary
(Replaced content with "Moved to Webservice setup and overview")
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Samples=
Moved to
==Sample request from a Linux client using perl==
Webservice setup and overview
{| 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;
}
Sample script (test.pl)
root@myLVS-LinuxClient:/usr/local/dev/mylvs# '''perl test.pl'''
'''200 192.168.2.222'''
|style="width:45%; vertical-align: top;"|
<br><br><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;"|
To install the ActiveState Perl Module use:
C:\Users\Administrator\Documents\lvs> '''ppm install Soap-Lite'''
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;
}
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><br><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
Sample script (test-lite.vbs):
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>
 
<br>
=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');
 
=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'''

Latest revision as of 15:41, 7 September 2015

Moved to Webservice setup and overview