Webservice prepare: Difference between revisions

From MyLVS
Jump to navigation Jump to search
(Replaced content with "Moved to Webservice setup and overview")
 
(6 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]]
|}
 
=Requirements and functions=
 
The above code requires to be prepared<br>
*[[SQL database setup#Webservice prepare|Webservice prepare]]
*[[SQL_database_setup#Setup_Host_Header|SQL database setup]]
 
 
*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