Exemplo n.º 1
0
 def _test_endpoint_override(self, endpoint):
     fake_session = utils.FakeSession({'content-type': 'application/json'},
                                      status_code=http_client.NO_CONTENT)
     request_mock = mock.Mock()
     fake_session.request = request_mock
     request_mock.return_value = utils.FakeSessionResponse(
         headers={'content-type': 'application/json'},
         status_code=http_client.NO_CONTENT)
     client = _session_client(session=fake_session,
                              endpoint_override=endpoint)
     client.json_request('DELETE', '/v1/nodes/aa/maintenance')
     expected_args_dict = {
         'headers': {
             'Content-Type': 'application/json',
             'Accept': 'application/json',
             'X-OpenStack-Ironic-API-Version': '1.6'
         },
         'auth': None, 'user_agent': 'python-ironicclient',
         'endpoint_filter': {
             'interface': 'publicURL',
             'service_type': 'baremetal',
             'region_name': ''
         }
     }
     if isinstance(endpoint, six.string_types):
         trimmed = http._trim_endpoint_api_version(endpoint)
         expected_args_dict['endpoint_override'] = trimmed
     request_mock.assert_called_once_with(
         '/v1/nodes/aa/maintenance', 'DELETE', raise_exc=False,
         **expected_args_dict
     )
Exemplo n.º 2
0
    def test_server_exception_msg_and_traceback(self):
        error_msg = 'another test error'
        error_trace = ("\"Traceback (most recent call last):\\n\\n  "
                       "File \\\"/usr/local/lib/python2.7/...")
        error_body = _get_error_body(error_msg, error_trace)

        fake_session = utils.FakeSession({'Content-Type': 'application/json'},
                                         error_body,
                                         500)

        client = http.SessionClient(session=fake_session,
                                    auth=None,
                                    interface=None,
                                    service_type='publicURL',
                                    region_name='',
                                    service_name=None)

        error = self.assertRaises(exc.InternalServerError,
                                  client.json_request,
                                  'GET', '/v1/resources')

        self.assertEqual(
            '%(error)s (HTTP 500)\n%(trace)s' % {'error': error_msg,
                                                 'trace': error_trace},
            "%(error)s\n%(details)s" % {'error': str(error),
                                        'details': str(error.details)})
Exemplo n.º 3
0
    def test_server_https_request_ok(self):
        client = http.HTTPClient('https://localhost/')
        client.session = utils.FakeSession(
            {'Content-Type': 'application/json'},
            six.StringIO("Body"),
            version=1,
            status_code=http_client.OK)

        client.json_request('GET', '/v1/resources')
Exemplo n.º 4
0
    def test_401_unauthorized_exception(self):
        error_body = _get_error_body()
        client = http.HTTPClient('http://localhost/')
        client.session = utils.FakeSession(
            {'Content-Type': 'text/plain'},
            six.StringIO(error_body),
            version=1,
            status_code=http_client.UNAUTHORIZED)

        self.assertRaises(exc.Unauthorized, client.json_request,
                          'GET', '/v1/resources')
Exemplo n.º 5
0
    def test_server_exception_empty_body(self):
        error_body = _get_error_body()

        fake_session = utils.FakeSession({'Content-Type': 'application/json'},
                                         error_body,
                                         http_client.INTERNAL_SERVER_ERROR)

        client = _session_client(session=fake_session)

        self.assertRaises(exc.InternalServerError, client.json_request, 'GET',
                          '/v1/resources')
Exemplo n.º 6
0
    def test_server_exception_empty_body(self):
        error_body = _get_error_body()
        client = http.HTTPClient('http://localhost/')
        client.session = utils.FakeSession(
            {'Content-Type': 'application/json'},
            six.StringIO(error_body),
            version=1,
            status_code=http_client.INTERNAL_SERVER_ERROR)

        self.assertRaises(exc.InternalServerError, client.json_request, 'GET',
                          '/v1/resources')
Exemplo n.º 7
0
 def test__parse_version_headers(self):
     # Test parsing of version headers from SessionClient
     fake_session = utils.FakeSession(
         {
             'X-OpenStack-Ironic-API-Minimum-Version': '1.1',
             'X-OpenStack-Ironic-API-Maximum-Version': '1.6',
             'content-type': 'text/plain',
         }, None, 506)
     expected_result = ('1.1', '1.6')
     client = _session_client(session=fake_session)
     result = client._parse_version_headers(fake_session)
     self.assertEqual(expected_result, result)
Exemplo n.º 8
0
    def test_server_exception_empty_body(self):
        error_body = _get_error_body()

        fake_session = utils.FakeSession({'Content-Type': 'application/json'},
                                         error_body, 500)

        client = _session_client(session=fake_session)

        error = self.assertRaises(exc.InternalServerError, client.json_request,
                                  'GET', '/v1/resources')

        self.assertEqual('Internal Server Error (HTTP 500)', str(error))
Exemplo n.º 9
0
 def test__parse_version_headers(self):
     # Test parsing of version headers from SessionClient
     fake_session = utils.FakeSession(
         {'X-OpenStack-Ironic-API-Minimum-Version': '1.1',
          'X-OpenStack-Ironic-API-Maximum-Version': '1.6',
          'content-type': 'text/plain',
          },
         None,
         506)
     expected_result = ('1.1', '1.6')
     client = http.SessionClient(session=fake_session,
                                 auth=None,
                                 interface=None,
                                 service_type='publicURL',
                                 region_name='',
                                 service_name=None)
     result = client._parse_version_headers(fake_session)
     self.assertEqual(expected_result, result)
Exemplo n.º 10
0
    def test_server_exception_empty_body(self):
        error_body = _get_error_body()

        fake_session = utils.FakeSession({'Content-Type': 'application/json'},
                                         error_body,
                                         500)

        client = http.SessionClient(session=fake_session,
                                    auth=None,
                                    interface=None,
                                    service_type='publicURL',
                                    region_name='',
                                    service_name=None)

        error = self.assertRaises(exc.InternalServerError,
                                  client.json_request,
                                  'GET', '/v1/resources')

        self.assertEqual('Internal Server Error (HTTP 500)', str(error))
Exemplo n.º 11
0
    def test__http_request_client_fallback_fail(self, mock_save_data):
        # Test when fallback to a supported version fails
        host, port, latest_ver = 'localhost', '1234', '1.6'
        error_body = _get_error_body()

        client = http.HTTPClient('http://%s:%s/' % (host, port))
        client.session = utils.FakeSession(
            {
                'X-OpenStack-Ironic-API-Minimum-Version': '1.1',
                'X-OpenStack-Ironic-API-Maximum-Version': latest_ver,
                'content-type': 'text/plain',
            },
            six.StringIO(error_body),
            version=1,
            status_code=http_client.NOT_ACCEPTABLE)
        self.assertRaises(exc.UnsupportedVersion, client._http_request,
                          '/v1/resources', 'GET')
        mock_save_data.assert_called_once_with(host=host,
                                               data=latest_ver,
                                               port=port)
Exemplo n.º 12
0
    def test_server_exception_msg_and_traceback(self):
        error_msg = 'another test error'
        error_trace = ("\"Traceback (most recent call last):\\n\\n  "
                       "File \\\"/usr/local/lib/python2.7/...")
        error_body = _get_error_body(error_msg, error_trace)

        fake_session = utils.FakeSession({'Content-Type': 'application/json'},
                                         error_body,
                                         http_client.INTERNAL_SERVER_ERROR)

        client = _session_client(session=fake_session)

        error = self.assertRaises(exc.InternalServerError,
                                  client.json_request,
                                  'GET', '/v1/resources')

        self.assertEqual(
            '%(error)s (HTTP 500)\n%(trace)s' % {'error': error_msg,
                                                 'trace': error_trace},
            "%(error)s\n%(details)s" % {'error': str(error),
                                        'details': str(error.details)})