Fix client create funtion
Minor typo bugs in the create function Also add test cases for delete and create
This commit is contained in:
		@@ -57,14 +57,14 @@ class LibraAPI(object):
 | 
				
			|||||||
        if args.protocol is not None:
 | 
					        if args.protocol is not None:
 | 
				
			||||||
            data['protocol'] = args.protocol
 | 
					            data['protocol'] = args.protocol
 | 
				
			||||||
        for node in args.node:
 | 
					        for node in args.node:
 | 
				
			||||||
            addr = args.node.split(':')
 | 
					            addr = node.split(':')
 | 
				
			||||||
            nodes.append({'address': addr[0], 'port': addr[1],
 | 
					            nodes.append({'address': addr[0], 'port': addr[1],
 | 
				
			||||||
                          'condition': 'ENABLED'})
 | 
					                          'condition': 'ENABLED'})
 | 
				
			||||||
        data['nodes'] = nodes
 | 
					        data['nodes'] = nodes
 | 
				
			||||||
        if args.vip is not None:
 | 
					        if args.vip is not None:
 | 
				
			||||||
            data['virtualIps'] = [{'id': args.vip}]
 | 
					            data['virtualIps'] = [{'id': args.vip}]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        resp, body = self._post('/loadbalancers', data)
 | 
					        resp, body = self._post('/loadbalancers', body=data)
 | 
				
			||||||
        column_names = ['ID', 'Name', 'Protocol', 'Port', 'Algorithm',
 | 
					        column_names = ['ID', 'Name', 'Protocol', 'Port', 'Algorithm',
 | 
				
			||||||
                        'Status', 'Created', 'Updated', 'IPs', 'Nodes']
 | 
					                        'Status', 'Created', 'Updated', 'IPs', 'Nodes']
 | 
				
			||||||
        columns = ['id', 'name', 'protocol', 'port', 'algorithm', 'status',
 | 
					        columns = ['id', 'name', 'protocol', 'port', 'algorithm', 'status',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,7 @@ import json
 | 
				
			|||||||
import mock
 | 
					import mock
 | 
				
			||||||
import httplib2
 | 
					import httplib2
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
 | 
					import novaclient
 | 
				
			||||||
from StringIO import StringIO
 | 
					from StringIO import StringIO
 | 
				
			||||||
from libra.client.libraapi import LibraAPI
 | 
					from libra.client.libraapi import LibraAPI
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -10,6 +11,21 @@ class DummyArgs(object):
 | 
				
			|||||||
    def __init__(self):
 | 
					    def __init__(self):
 | 
				
			||||||
        self.lbid = 2000
 | 
					        self.lbid = 2000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class DummyCreateArgs(object):
 | 
				
			||||||
 | 
					    def __init__(self):
 | 
				
			||||||
 | 
					        self.name = 'a-new-loadbalancer'
 | 
				
			||||||
 | 
					        self.node = ['10.1.1.1:80', '10.1.1.2:81']
 | 
				
			||||||
 | 
					        self.port = None
 | 
				
			||||||
 | 
					        self.protocol = None
 | 
				
			||||||
 | 
					        self.vip = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MockLibraAPI(LibraAPI):
 | 
				
			||||||
 | 
					    def __init__(self, username, password, tenant, auth_url, region):
 | 
				
			||||||
 | 
					        self.postdata = None
 | 
				
			||||||
 | 
					        return super(MockLibraAPI, self).__init__(username, password, tenant, auth_url, region)
 | 
				
			||||||
 | 
					    def _post(self, url, **kwargs):
 | 
				
			||||||
 | 
					        self.postdata = kwargs['body']
 | 
				
			||||||
 | 
					        return super(MockLibraAPI, self)._post(url, **kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TestLBaaSClientLibraAPI(unittest.TestCase):
 | 
					class TestLBaaSClientLibraAPI(unittest.TestCase):
 | 
				
			||||||
    def setUp(self):
 | 
					    def setUp(self):
 | 
				
			||||||
@@ -122,3 +138,68 @@ class TestLBaaSClientLibraAPI(unittest.TestCase):
 | 
				
			|||||||
                finally:
 | 
					                finally:
 | 
				
			||||||
                    sys.stdout = orig
 | 
					                    sys.stdout = orig
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def testDeleteFailLb(self):
 | 
				
			||||||
 | 
					        fake_response = httplib2.Response({"status": '500'})
 | 
				
			||||||
 | 
					        fake_body = ''
 | 
				
			||||||
 | 
					        mock_request = mock.Mock(return_value=(fake_response, fake_body))
 | 
				
			||||||
 | 
					        with mock.patch.object(httplib2.Http, "request", mock_request):
 | 
				
			||||||
 | 
					            with mock.patch('time.time', mock.Mock(return_value=1234)):
 | 
				
			||||||
 | 
					                with self.assertRaises(novaclient.exceptions.ClientException):
 | 
				
			||||||
 | 
					                    args = DummyArgs()
 | 
				
			||||||
 | 
					                    self.api.delete_lb(args)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def testCreateLb(self):
 | 
				
			||||||
 | 
					        """ TODO: Check response data too """
 | 
				
			||||||
 | 
					        fake_response = httplib2.Response({"status": '202'})
 | 
				
			||||||
 | 
					        fake_body = json.dumps({
 | 
				
			||||||
 | 
					            'name': 'a-new-loadbalancer',
 | 
				
			||||||
 | 
					            'id': '144',
 | 
				
			||||||
 | 
					            'protocol': 'HTTP',
 | 
				
			||||||
 | 
					            'port': '83',
 | 
				
			||||||
 | 
					            'algorithm': 'ROUND_ROBIN',
 | 
				
			||||||
 | 
					            'status': 'BUILD',
 | 
				
			||||||
 | 
					            'created': '2011-04-13T14:18:07Z',
 | 
				
			||||||
 | 
					            'updated': '2011-04-13T14:18:07Z',
 | 
				
			||||||
 | 
					            'virtualIps': [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        'address': '15.0.0.1',
 | 
				
			||||||
 | 
					                        'id': '39',
 | 
				
			||||||
 | 
					                        'type': 'PUBLIC',
 | 
				
			||||||
 | 
					                        'ipVersion': 'IPV4',
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					            'nodes': [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        'address': '10.1.1.1',
 | 
				
			||||||
 | 
					                        'id': '653',
 | 
				
			||||||
 | 
					                        'port': '80',
 | 
				
			||||||
 | 
					                        'status': 'ONLINE',
 | 
				
			||||||
 | 
					                        'condition': 'ENABLED'
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					        post_compare = {
 | 
				
			||||||
 | 
					                    "name": "a-new-loadbalancer",
 | 
				
			||||||
 | 
					                    "nodes": [
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    "address": "10.1.1.1",
 | 
				
			||||||
 | 
					                                    "condition": "ENABLED",
 | 
				
			||||||
 | 
					                                    "port": "80"
 | 
				
			||||||
 | 
					                                },
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    "address": "10.1.1.2",
 | 
				
			||||||
 | 
					                                    "condition": "ENABLED",
 | 
				
			||||||
 | 
					                                    "port": "81"
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                             ]
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					        mock_request = mock.Mock(return_value=(fake_response, fake_body))
 | 
				
			||||||
 | 
					        with mock.patch.object(httplib2.Http, "request", mock_request):
 | 
				
			||||||
 | 
					            with mock.patch('time.time', mock.Mock(return_value=1234)):
 | 
				
			||||||
 | 
					                api = MockLibraAPI('username', 'password', 'tenant', 'auth_test', 'region')
 | 
				
			||||||
 | 
					                api.nova.management_url = "http://example.com"
 | 
				
			||||||
 | 
					                api.nova.auth_token = "token"
 | 
				
			||||||
 | 
					                args = DummyCreateArgs()
 | 
				
			||||||
 | 
					                api.create_lb(args)
 | 
				
			||||||
 | 
					                self.assertEquals(post_compare, api.postdata)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user