def __init__(self, *args, **kwargs):
     super(TestHttp, self).__init__(*args, **kwargs)
     self.client = Client('3',
                          username='******',
                          password='******',
                          token='token',
                          ecs_endpoint='http://127.0.0.1:4443',
                          token_endpoint='http://127.0.0.1:4443/login')
示例#2
0
 def test_client_without_credentials(self):
     with self.assertRaises(ECSClientException) as error:
         Client(version='3',
                ecs_endpoint='https://192.168.1.10',
                token_endpoint='https://192.168.10/login')
     exception = error.exception.message
     self.assertEqual("'token_endpoint' provided but missing ('username','password')", str(exception))
示例#3
0
 def test_client_v2_class(self):
     c = Client(version='2',
                username='******',
                password='******',
                ecs_endpoint='https://192.168.1.10',
                token_endpoint='https://192.168.10/login')
     self.assertIsInstance(c, v2.client.Client, 'Instance is not a v2 client class')
示例#4
0
 def test_client_init_with_token_path(self, mock_isfile):
     mock_isfile.return_value = True
     c = Client(version='3',
                token_path='/tmp/mytoken.tkn',
                ecs_endpoint='https://192.168.1.10')
     self.assertTrue(hasattr(c, 'token_path'))
     mock_isfile.assert_called_with('/tmp/mytoken.tkn')
示例#5
0
    def setUp(self):
        super(TestNode, self).setUp()
        self.ecs_endpoint = 'https://127.0.0.1:4443'
        self.token_endpoint = 'https://127.0.0.1:4443/login'

        self.client = Client(
            '2',
            ecs_endpoint=self.ecs_endpoint,
            token_endpoint=self.token_endpoint,
            username='******',
            password='******'
        )

        self.returned_json = {
            "node": [
                {
                    "ip": "172.29.3.148",
                    "version": "1.2.0.0.60071.ffbe16c",
                    "rackId": "gray",
                    "nodename": "supr01-r01-01.lax01s1.rspaas-lab.ops.com",
                    "nodeid": "171.29.3.140"
                },
                {
                    "ip": "172.29.3.149",
                    "version": "1.2.0.0.60071.ffbe16c",
                    "rackId": "gray",
                    "nodename": "supr01-r01-02.lax01s1.rspaas-lab.ops.com",
                    "nodeid": "171.29.3.141"
                }
            ]
        }

        self.response = MagicMock()
        self.requests_mock = self.useFixture(fixture.Fixture())
 def _get_client(self):
     return Client(
         self.api_version,
         username=self.username,
         password=self.password,
         ecs_endpoint=self.ecs_endpoint,
         token_endpoint=self.token_endpoint)
示例#7
0
 def test_client_without_ecs_endpoint(self):
     with self.assertRaises(ECSClientException) as error:
         Client(version='3',
                username='******',
                password='******',
                token_endpoint='https://192.168.10/login')
     exception = error.exception.message
     self.assertEqual("Missing 'ecs_endpoint'", str(exception))
示例#8
0
 def test_client_without_version(self):
     with self.assertRaises(RuntimeError) as error:
         Client(username='******',
                password='******',
                ecs_endpoint='https://192.168.1.10',
                token_endpoint='https://192.168.10/login')
     exception = error.exception
     self.assertIn('Please provide the API version', str(exception))
示例#9
0
 def test_client_init_with_credentials(self):
     c = Client(version='3',
                username='******',
                password='******',
                token_endpoint='https://192.168.10/login',
                ecs_endpoint='https://192.168.1.10')
     self.assertTrue(hasattr(c, 'username'))
     self.assertTrue(hasattr(c, 'password'))
     self.assertTrue(hasattr(c, 'token_endpoint'))
示例#10
0
 def test_client_unsupported_version(self):
     with self.assertRaises(RuntimeError) as error:
         Client(version='10',
                username='******',
                password='******',
                ecs_endpoint='https://192.168.1.10',
                token_endpoint='https://192.168.10/login')
     exception = error.exception
     self.assertEqual("No client available for version '10'", str(exception))
示例#11
0
 def test_client_without_token_endpoint(self, mock_isfile):
     mock_isfile.return_value = False
     with self.assertRaises(ECSClientException) as error:
         Client(version='3',
                username='******',
                password='******',
                ecs_endpoint='https://192.168.1.10')
     exception = error.exception.message
     mock_isfile.assert_called_with('/tmp/ecsclient.tkn')
     self.assertEqual("'token_endpoint' not provided and missing 'token'|'token_path'", str(exception))
def adminLogin(user, password, endpoint):
    client = Client('3',
                    username=user,
                    password=password,
                    token_endpoint=endpoint + '/login',
                    cache_token=False,
                    ecs_endpoint=endpoint)

    print('----------LOGGED IN ADMIN USER IS:')
    print(client.user_info.whoami())
    print()
    return client
示例#13
0
 def _api_get_client(self):
     """
     Returns an instance of ecsclient.client.Client
     """
     logging.debug(self.__class__.__name__ + ': ' +
                   sys._getframe().f_code.co_name)
     url = "{0}://{1}:{2}".format(API_PROTOCOL, self.api_endpoint, API_PORT)
     logobj(url)
     return Client('3',
                   username=self.ecs.get_root_user(),
                   password=self.ecs.get_root_pass(),
                   token_endpoint=url + '/login',
                   ecs_endpoint=url,
                   verify_ssl=self.api_verify_ssl,
                   request_timeout=self.api_timeout)
示例#14
0
    def get_user_consumption(self):
        '''Get the users account usage information'''

        client = Client(username=self.username,
                        password=self.password,
                        token_endpoint=self.token_endpoint,
                        ecs_endpoint=self.ecs_endpoint,
                        request_timeout=self.request_timeout,
                        verify_ssl=self.verify_ssl,
                        token_path=self.token_path,
                        version='3')

        namespaces = client.namespace.list(
        )  # Get all the namespaces in the system
        size_dict = {}
        quota_dict = {}

        for namespace in namespaces['namespace']:
            namespace_id = namespace['id']
            namespace_name = namespace['name']
            logger.debug(namespace_id)

            try:
                namespace_info = client.billing.get_namespace_billing_info(
                    namespace_id)
                size_dict[namespace_name] = int(namespace_info['total_size'])
                quota_info = client.namespace.get_namespace_quota(namespace_id)
                quota_dict[namespace_name] = int(quota_info['blockSize'])
            except ECSClientException:  # Secure buckets dont provide their size
                logger.warning(
                    'Error found in namespace: %s\nException: %s\n skipping',
                    namespace['name'], Exception)
                continue

            logger.debug(size_dict)
            logger.debug(quota_dict)
        client.authentication.logout()

        return size_dict, quota_dict
示例#15
0
class TestHttp(testtools.TestCase):

    TEST_URL = 'http://127.0.0.1:4443/hi'

    def __init__(self, *args, **kwargs):
        super(TestHttp, self).__init__(*args, **kwargs)
        self.client = Client('3',
                             username='******',
                             password='******',
                             token='token',
                             ecs_endpoint='http://127.0.0.1:4443',
                             token_endpoint='http://127.0.0.1:4443/login')

    def setUp(self):
        super(TestHttp, self).setUp()
        self.requests_mock = self.useFixture(fixture.Fixture())

    def test_get_request_plaintext_resp(self):
        self.requests_mock.register_uri('GET', self.TEST_URL, text='resp')

        body = self.client.get('hi', params={'key1': 'value1'})

        self.assertIsInstance(body, string_types)
        self.assertEqual('resp', body)
        self.assertEqual(self.requests_mock.last_request.method, 'GET')
        self.assertEqual(self.requests_mock.last_request.url,
                         self.TEST_URL + '?key1=value1')
        self.assertEqual(
            self.requests_mock.last_request.headers['x-sds-auth-token'],
            'token')

    def test_get_request_json_resp(self):
        self.requests_mock.register_uri('GET',
                                        self.TEST_URL,
                                        text='{"key2": "value2"}')

        body = self.client.get('hi', params={'key1': 'value1'})

        self.assertIsInstance(body, dict)
        self.assertEqual(body['key2'], "value2")
        self.assertEqual(self.requests_mock.last_request.method, 'GET')
        self.assertEqual(self.requests_mock.last_request.url,
                         self.TEST_URL + '?key1=value1')
        self.assertEqual(
            self.requests_mock.last_request.headers['x-sds-auth-token'],
            'token')

    def test_post_request(self):
        self.requests_mock.register_uri('POST', self.TEST_URL, text=None)

        payload = {'key1': 'value1', 'key2': 'value2'}
        self.client.post('hi', json_payload=payload)

        self.assertEqual(self.requests_mock.last_request.method, 'POST')
        self.assertEqual(json.loads(self.requests_mock.last_request.text),
                         payload)
        self.assertEqual(self.requests_mock.last_request.url, self.TEST_URL)
        self.assertEqual(
            self.requests_mock.last_request.headers['x-sds-auth-token'],
            'token')

    def test_put_request(self):
        self.requests_mock.register_uri('PUT', self.TEST_URL, text=None)

        payload = {'key1': 'value1', 'key2': 'value2'}
        self.client.put('hi', json_payload=payload)

        self.assertEqual(self.requests_mock.last_request.method, 'PUT')
        self.assertEqual(json.loads(self.requests_mock.last_request.text),
                         payload)
        self.assertEqual(self.requests_mock.last_request.url, self.TEST_URL)
        self.assertEqual(
            self.requests_mock.last_request.headers['x-sds-auth-token'],
            'token')

    def test_delete_request(self):
        self.requests_mock.register_uri('DELETE', self.TEST_URL, text=None)

        self.client.delete('hi')

        self.assertEqual(self.requests_mock.last_request.method, 'DELETE')
        self.assertEqual(self.requests_mock.last_request.url, self.TEST_URL)
        self.assertEqual(
            self.requests_mock.last_request.headers['x-sds-auth-token'],
            'token')
示例#16
0
 def test_client_init_with_token(self):
     c = Client(version='3',
                token='1234567890',
                ecs_endpoint='https://192.168.1.10')
     self.assertTrue(hasattr(c, 'token'))