Example #1
0
 def test_client_cache_version_no_endpoint_as_arg(self, http_client_mock):
     client.Client(session='fake_session', insecure=True)
     http_client_mock.assert_called_once_with(
         session='fake_session',
         insecure=True,
         os_ironic_api_version=client.DEFAULT_VER,
         api_version_select_state='default')
Example #2
0
    def _create_ironic_client(self):
        api_version = self.options.os_baremetal_api_version
        allow_api_version_downgrade = False
        if not api_version:
            api_version = self.cloud_region.get_default_microversion(_TYPE)
            if not api_version:
                api_version = http.LATEST_VERSION
                allow_api_version_downgrade = True
        LOG.debug('Using bare metal API version %s, downgrade %s', api_version,
                  'allowed' if allow_api_version_downgrade else 'disallowed')

        # NOTE(dtantsur): endpoint_override is required to respect settings in
        # clouds.yaml, such as baremetal_endpoint_override.
        endpoint_override = self.cloud_region.get_endpoint(_TYPE)
        try:
            return client.Client(
                os_ironic_api_version=api_version,
                allow_api_version_downgrade=allow_api_version_downgrade,
                session=self.cloud_region.get_session(),
                region_name=self.cloud_region.get_region_name(_TYPE),
                endpoint_override=endpoint_override,
                max_retries=self.options.max_retries,
                retry_interval=self.options.retry_interval,
            )
        except exc.EndpointNotFound as e:
            # Re-raise with a more obvious message.
            raise exc.EndpointNotFound(_HELP % {
                'err': e,
                'cmd': sys.argv[0],
                'project': 'ironic'
            })
 def test_client_session_via_kwargs(self, http_client_mock):
     session = mock.Mock()
     client.Client(session=session, endpoint_override="http://example.com")
     http_client_mock.assert_called_once_with(
         session,
         api_version_select_state='default',
         endpoint_override="http://example.com",
         os_ironic_api_version=client.DEFAULT_VER)
Example #4
0
    def test_client_initialized_managers(self, http_client_mock):
        cl = client.Client('http://ironic:6385', token='safe_token',
                           os_ironic_api_version='1.15')

        self.assertIsInstance(cl.node, client.node.NodeManager)
        self.assertIsInstance(cl.port, client.port.PortManager)
        self.assertIsInstance(cl.driver, client.driver.DriverManager)
        self.assertIsInstance(cl.chassis, client.chassis.ChassisManager)
Example #5
0
 def _create(self):
     interface = self._get_client_option(CLIENT_NAME, 'endpoint_type')
     args = {
         'interface': interface,
         'service_type': self.BAREMETAL,
         'session': self.context.keystone_session,
         'region_name': self._get_region_name(),
         'os_ironic_api_version': self.max_microversion
     }
     client = ironic_client.Client(**args)
     return client
Example #6
0
    def test_negotiate_api_version(self, http_client_mock):
        endpoint = 'http://ironic:6385'
        token = 'safe_token'
        os_ironic_api_version = 'latest'
        cl = client.Client(endpoint, token=token,
                           os_ironic_api_version=os_ironic_api_version)

        cl.negotiate_api_version()
        http_client_mock.assert_called_once_with(
            api_version_select_state='user', endpoint_override=endpoint,
            os_ironic_api_version='latest', token=token)
Example #7
0
    def test_client_default_api_version(self, cache_mock, http_client_mock):
        endpoint = 'http://ironic:6385'
        cache_mock.return_value = None

        client.Client(endpoint, session=self.session)

        cache_mock.assert_called_once_with(host='ironic', port='6385')
        http_client_mock.assert_called_once_with(
            endpoint_override=endpoint,
            session=self.session,
            os_ironic_api_version=client.DEFAULT_VER,
            api_version_select_state='default')
Example #8
0
    def test_client_user_api_version(self, http_client_mock):
        endpoint = 'http://ironic:6385'
        token = 'safe_token'
        os_ironic_api_version = '1.15'

        client.Client(endpoint, token=token,
                      os_ironic_api_version=os_ironic_api_version)

        http_client_mock.assert_called_once_with(
            endpoint_override=endpoint, token=token,
            os_ironic_api_version=os_ironic_api_version,
            api_version_select_state='user')
Example #9
0
    def test_client_cache_api_version(self, cache_mock, http_client_mock):
        endpoint = 'http://ironic:6385'
        os_ironic_api_version = '1.15'
        cache_mock.return_value = os_ironic_api_version

        client.Client(endpoint, session=self.session)

        cache_mock.assert_called_once_with(host='ironic', port='6385')
        http_client_mock.assert_called_once_with(
            endpoint_override=endpoint,
            session=self.session,
            os_ironic_api_version=os_ironic_api_version,
            api_version_select_state='cached')
Example #10
0
    def test_client_user_api_version_with_downgrade(self, http_client_mock):
        endpoint = 'http://ironic:6385'
        token = 'safe_token'
        os_ironic_api_version = '1.15'

        client.Client(endpoint, token=token,
                      os_ironic_api_version=os_ironic_api_version,
                      allow_api_version_downgrade=True)

        http_client_mock.assert_called_once_with(
            token=token, endpoint_override=endpoint,
            os_ironic_api_version=os_ironic_api_version,
            api_version_select_state='default')
Example #11
0
    def get_baremetal_client(self, context):
        ironic_endpoint = keystone_utils.get_endpoint_for_project('ironic')

        # FIXME(lucasagomes): Use ironicclient.get_client() instead
        # of ironicclient.Client(). Client() might cause errors since
        # it doesn't verify the provided arguments, get_client() is the
        # prefered way
        return ironicclient.Client(
            ironic_endpoint.url,
            token=context.auth_token,
            region_name=ironic_endpoint.region,
            os_ironic_api_version='1.15',
            # FIXME(lucasagomes):Paramtetize max_retries and
            # max_interval. At the moment since we are dealing with
            # a critical bug (#1612622) let's just hardcode the times
            # here since the right fix does involve multiple projects
            # (tripleo-ci and python-tripleoclient beyong tripleo-common)
            max_retries=12,
            retry_interval=5,
        )
Example #12
0
def get_ironic_client(**kwargs):
    return ironicclient.Client("http://127.0.0.1:6385/")