Difference between revisions of "+ Developer Guide Overview"

From OSNEXUS Online Documentation Site
Jump to: navigation, search
m (PHP Integration)
m
Line 1: Line 1:
QuantaStor was designed from the ground up so that you can develop your own applications to remotely manage your storage systems.  That said, if all you need is a simple script to do some provisioning then you should be able to do everything you need just with the QuantaStor Remote Management CLI.  The CLI is completely scriptable and has an xml output mode (--xml) so the output is easy to parse with any scripting language. 
+
QuantaStor was designed from the ground up so that you can develop your own applications to remotely manage your storage systems.   
For more advanced integrations we recommend using the QuantaStor WebServices interface directly.  This interface allows you to communicate with the storage system using .NET on Windows and via various SOAP implementations on all platforms.
+
  
The QuantaStor Manager web interface and QuantaStor Remote Management CLI both manage the QuantaStor storage system via the QuantaStor WebServices / SOAP interface.  A copy of the WebServices interface for QuantaStor is included with the SDK and is also included with every QuantaStor system and can be accessed via your web browser by simply entering this URL:
+
== Supported Languages ==
<pre>
+
You can use just about any programming language you like to communicate with QuantaStor via our RESTful API. Recommended tools:
https://<QuantaStor-system-IP-address>:5151/osn.wsdl
+
</pre>
+
For example, if your QuantaStor storage system has an IP address of 192.168.0.88, then you can access the WSDL [[http://www.w3.org/TR/wsdl|(Web Services Definition Language)]] file using this URL:
+
<pre>
+
https://192.168.0.88:5151/osn.wsdl
+
</pre>
+
  
In case you don't have a system handy, you can browse this [[osn_wsdl|copy]] but note you'll want to use the most recent version included with the [[http://www.osnexus.com/downloads SDK]] which is available from the downloads page. 
+
* C/C++ - libcurl [http://curl.haxx.se/libcurl/]
 
+
* Python - PyCurl [http://pypi.python.org/pypi/pycurl]
== What's in the SDK ==
+
* Unix/Linux/VMware/XenServer - curl utility
 
+
* PHP - [[http://php.net/manual/en/book.curl.php]]
The SDK includes a sample C# application that allows you to list and provision volumes in a storage system, some getting started documentation, the QuantaStor API/WSDL file, and a storage system simulator. 
+
 
+
The QuantaStor Storage System Simulator runs on any Windows box and is installed automatically when you install the SDK package.  You can run it from the Start menu in windows or you can run it on the command line with these arguments ''qs_service.exe --debug'' and it's up and running.  From there you can manage the simulated storage system using the ''qs'' CLI or via your custom WebServices client application.
+
 
+
== Supported Language / WebServices Compiler ==
+
 
+
* C++ (all platforms) / gSOAP 2.7.x
+
* PHP
+
* Python
+
* Java (all platforms) / Apache Axis 1.4
+
* Microsoft C# (Windows) / Microsoft VS WSDL Compiler
+
* Microsoft VB (Windows) / Microsoft VS WSDL Compiler
+
 
+
There are other languages such as Python, Perl, PHP, and others that all have WebServices/SOAP implementations and should work fine with QuantaStor but we have as of yet not tested these out.
+
(Note: QuantaStor storage systems utilize gSOAP and Axis internally)
+
 
+
== Python Integration ==
+
 
+
We've found [https://fedorahosted.org/suds/ SUDS] to be the easiest Python based API to use to integrate with QuantaStor via SOAP.  Here's a quick script which you can implement from within your QuantaStor system to communicate with the locally running core QuantaStor SOAP service:
+
 
+
<pre>
+
#!/usr/bin/python
+
from suds.client import Client
+
 
+
wsdlUrl = 'file:///opt/osnexus/quantastor/lib/osn.wsdl'
+
client = Client(wsdlUrl)
+
client.set_options(soapheaders=("admin","password"), location='http://localhost:5152')
+
print client
+
 
+
result = client.service.echo("hello ray")
+
print result
+
</pre>
+
 
+
Before the above noted script will work you'll first need to install SUDS like so:
+
 
+
<pre>
+
sudo -i
+
wget https://fedorahosted.org/releases/s/u/suds/python-suds-0.4.tar.gz
+
tar xvfz python-suds-0.4.tar.gz
+
cd python-suds-0.4/
+
chmod 755 setup.py
+
./setup.py build
+
./setup.py install
+
</pre>
+
 
+
 
+
For a secure connection to QuantaStor over SSL use the following:
+
<pre>
+
#!/usr/bin/python
+
from suds.client import Client
+
 
+
 
+
import urllib2 as u2
+
from suds.client import Client
+
from suds.transport.http import HttpTransport, Reply, TransportError
+
import httplib
+
 
+
class HTTPSClientAuthHandler(u2.HTTPSHandler):
+
    def __init__(self, key, cert):
+
        u2.HTTPSHandler.__init__(self)
+
        self.key = key
+
        self.cert = cert
+
 
+
    def https_open(self, req):
+
        #Rather than pass in a reference to a connection class, we pass in
+
        # a reference to a function which, for all intents and purposes,
+
        # will behave as a constructor
+
        return self.do_open(self.getConnection, req)
+
 
+
    def getConnection(self, host, timeout=300):
+
        return httplib.HTTPSConnection(host, key_file=self.key, cert_file=self.cert)
+
 
+
class HTTPSClientCertTransport(HttpTransport):
+
    def __init__(self, key, cert, *args, **kwargs):
+
        HttpTransport.__init__(self, *args, **kwargs)
+
        self.key = key
+
        self.cert = cert
+
 
+
    def u2open(self, u2request):
+
        """
+
        Open a connection.
+
        @param u2request: A urllib2 request.
+
        @type u2request: urllib2.Requet.
+
        @return: The opened file-like urllib2 object.
+
        @rtype: fp
+
        """
+
        tm = self.options.timeout
+
        url = u2.build_opener(HTTPSClientAuthHandler(self.key, self.cert))
+
        if self.u2ver() < 2.6:
+
            socket.setdefaulttimeout(tm)
+
            return url.open(u2request)
+
        else:
+
            return url.open(u2request, timeout=tm)
+
 
+
 
+
transport = HTTPSClientCertTransport("/opt/osnexus/common/lib/qsclient.pem", "/opt/osnexus/common/lib/qscacert.pem")
+
url = 'https://192.168.0.142:5151/osn.wsdl'
+
client = Client(url, transport=transport)
+
userid="admin"
+
passwd="password"
+
client.set_options(soapheaders=(userid,passwd), location='http://localhost:5152')
+
result = client.service.echo("hello ray")
+
print result
+
 
+
</pre>
+
 
+
== PHP Integration ==
+
 
+
You can integrate QuantaStor with your web services via PHP using our SOAP/WebServices interface as well.  First you'll want to download and install the PHP wsdl compiler [http://sourceforge.net/projects/wsdl2php/ wsdl2php].  Here's the series of commands to run to install this on an Ubuntu machine, this will vary a bit depending on your linux distro and you'll want to check the wsdl2php web site on sourceforge for the latest version of the compiler.
+
 
+
<pre>
+
sudo -i
+
apt-get update
+
apt-get install php5-cli php-pear
+
wget http://superb-sea2.dl.sourceforge.net/project/wsdl2php/wsdl2php/wsdl2php-0.2.1-pear/wsdl2php-0.2.1-pear.tgz
+
pear install wsdl2php-0.2.1-pear.tgz
+
wget http://www.osnexus.com/storage/sdk/osn.wsdl
+
wsdl2php osn.wsdl
+
</pre>
+
 
+
Now that you have wsdl2php installed you can compile the osn.wsdl file that is distributed with QuantaStor. Then end result will be a file called Service.php which you can find an example of here: [http://www.osnexus.com/storage/sdk/Service.php Service.php] This links to a PHP service file built using the QuantaStor v1.5 WSDL which can be found here:
+
[http://www.osnexus.com/storage/sdk/osn.wsdl osn.wsdl]
+
For the most recent version of the wsdl interface please see the /opt/osnexus/quantastor/lib/osn.wsdl file on your QuantaStor server.
+
 
+
Here's a sample script that gets the storage system object information for the QuantaStor system you're connecting to:
+
 
+
[NOTE: This sample is a work in progress.. not yet ready.]
+
 
+
<pre>
+
#!/usr/bin/php
+
<?php
+
require_once 'Service.php';
+
echo '<title>My First QuantaStor PHP Script</title>';
+
$qs_service = new Service();
+
$parameters = new storageSystemGet();
+
print $qs_service->storageSystemGet($parameters);
+
?>
+
</pre>
+
 
+
== C++ SDK System Requirements ==
+
 
+
You need a Windows system to install the SDK but once you have the included WSDL file you can copy that to any system to do your development from.  The simulator only uses about 20M of RAM so you can run it on pretty much anything so the SDK system requirements are very minimal.
+
 
+
== Compiling the sample .NET application ==
+
  
 
== Async vs. Sync API calls ==
 
== Async vs. Sync API calls ==
  
 
== Task Monitoring ==
 
== Task Monitoring ==
 
== Event Polling & Registration ==
 
 
== Custom Roles ==
 
  
 
== Supported SOAP / WebServices Implementations ==
 
== Supported SOAP / WebServices Implementations ==

Revision as of 12:12, 23 August 2012

QuantaStor was designed from the ground up so that you can develop your own applications to remotely manage your storage systems.

Supported Languages

You can use just about any programming language you like to communicate with QuantaStor via our RESTful API. Recommended tools:

  • C/C++ - libcurl [1]
  • Python - PyCurl [2]
  • Unix/Linux/VMware/XenServer - curl utility
  • PHP - [[3]]

Async vs. Sync API calls

Task Monitoring

Supported SOAP / WebServices Implementations

  • gSOAP (C++, all platforms)
  • Apache Axis (Java, all platforms)
  • .NET (C# & Visual Basic, Windows)