Package: pyray
===============================pyray===============================.. image:: https://badge.fury.io/py/pyray.png:target: http://badge.fury.io/py/pyray.. image:: https://travis-ci.org/intr1nsic/pyray.png?branch=master:target: https://travis-ci.org/intr1nsic/pyrayA python client to interact with the Riverbed Stingray REST API.* Initial Release* Requires Stingray API version 2.0Documentation-------------http://pyray.readthedocs.org/en/latest/Features--------* Add Nodes Module* Add test coverageUsage========Quick sample of pyray::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password')Connectivity============The HTTPClient method has a few optional and helpful parameters that willhelp troubleshoot issues or connectivity.Debug-----The client has an optional debug flag that will log the request as well asa curl command you can run against. For security reasons, username and passwordare not displayed in any logging.::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password', debug=True)To allow insecure SSL connectivity for invalid certs::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password', insecure=True)You can also change the port if that is configured::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password', port='1234')Generic Pool Queries====================All pools---------To list all the pools configured::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password')pools = cl.pools.get()for pool in pools:print poolGet a specific pool-------------------To get a specific pool::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password')pool = cl.pools.get(name='pool1')Delete a specific pool----------------------To delete a specific pool::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password')cl.pools.delete(name='pool1')Get all nodes draining in the pool----------------------------------To get draining nodes::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password')pool = cl.pools.get(name='pool1')draining_nodes = pool.draining_nodesfor node in draining_nodes:print nodeGet all configured nodes in a pool----------------------------------To get all the configured nodes::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password')pool = cl.pools.get(name='pool1')for node in pool.nodes:print nodeMaking changes to a pool========================Drain-----Lets say you want to drain a group of nodes in a pool::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password')pool = cl.pools.get(name='pool1')pool.drain_nodes(nodes=['1.2.3.4:80'])or quickly drain all nodes::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password')pool = cl.pools.get(name='pool1')pool.drain_nodes(nodes=pool.nodes)Undrain-------To undrain nodes in a pool::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password')pool = cl.pools.get(name='pool1')pool.undrain_nodes(nodes=['1.2.3.4:80'])or quickly undrain all draining nodes::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password')pool = cl.pools.get(name='pool1')pool.undrain_nodes(nodes=pool.draining_nodes)Query node details in a pool============================To get node details for all the nodes in a pool accross all traffic managers::from pyray import clientcl = client.HTTPClient('https://1.1.1.1', 'admin', 'password')pool = cl.pools.get(name='pool1')nodes = pool.get_details()for node, details in nodes.iteritems():print nodeprint node['statistics']['current_conn']For the full node details::{u'statistics':{u'bytes_from_node': 23776,u'bytes_to_node': 3659117,u'current_conn': 0,u'current_requests': 0,u'errors': 4,u'failures': 1,u'idle_conns': 0,u'new_conn': 38,u'node_port': 80,u'pooled_conn': 0,u'response_max': 0,u'response_mean': 0,u'response_min': 0,u'state': u'draining',u'total_conn': 38}}History-------0.1.0 (2014-01-02)++++++++++++++++++* First release on PyPI.