Exemple #1
0
def get_raw_binary(job_binary, proxy_configs=None,
                   with_context=False, remote=None):
    '''Get the raw data for a job binary

    This will retrieve the raw data for a job binary from it's source. In the
    case of Swift based binaries there is a precedence of credentials for
    authenticating the client. Requesting a context based authentication takes
    precendence over proxy user which takes precendence over embedded
    credentials.

    :param job_binary: The job binary to retrieve
    :param proxy_configs: Proxy user configuration to use as credentials
    :param with_context: Use the current context as credentials
    :param remote: The remote contains node group and cluster information
    :returns: The raw data from a job binary

    '''
    url = job_binary.url
    if url.startswith("internal-db://"):
        res = db.get_raw_data(context.ctx(), job_binary)

    if url.startswith(su.SWIFT_INTERNAL_PREFIX):
        if with_context:
            res = i_swift.get_raw_data_with_context(job_binary)
        else:
            res = i_swift.get_raw_data(job_binary, proxy_configs)

    if url.startswith(m.MANILA_PREFIX):
        res = manila.get_file_info(job_binary, remote)

    return res
Exemple #2
0
def get_raw_binary(job_binary,
                   proxy_configs=None,
                   with_context=False,
                   remote=None):
    '''Get the raw data for a job binary

    This will retrieve the raw data for a job binary from it's source. In the
    case of Swift based binaries there is a precedence of credentials for
    authenticating the client. Requesting a context based authentication takes
    precedence over proxy user which takes precedence over embedded
    credentials.

    :param job_binary: The job binary to retrieve
    :param proxy_configs: Proxy user configuration to use as credentials
    :param with_context: Use the current context as credentials
    :param remote: The remote contains node group and cluster information
    :returns: The raw data from a job binary

    '''
    url = job_binary.url
    if url.startswith("internal-db://"):
        res = db.get_raw_data(context.ctx(), job_binary)

    if url.startswith(su.SWIFT_INTERNAL_PREFIX):
        if with_context:
            res = i_swift.get_raw_data_with_context(job_binary)
        else:
            res = i_swift.get_raw_data(job_binary, proxy_configs)

    if url.startswith(m.MANILA_PREFIX):
        res = manila.get_file_info(job_binary, remote)

    return res
Exemple #3
0
def get_raw_binary(job_binary, proxy_configs=None):
    url = job_binary.url
    if url.startswith("internal-db://"):
        res = db.get_raw_data(context.ctx(), job_binary)

    if url.startswith(su.SWIFT_INTERNAL_PREFIX):
        res = i_swift.get_raw_data(context.ctx(), job_binary, proxy_configs)

    return res
def get_raw_binary(job_binary, proxy_configs=None):
    url = job_binary.url
    if url.startswith("internal-db://"):
        res = db.get_raw_data(context.ctx(), job_binary)

    if url.startswith(su.SWIFT_INTERNAL_PREFIX):
        res = i_swift.get_raw_data(job_binary, proxy_configs)

    return res
Exemple #5
0
def get_raw_binary(job_binary):
    url = job_binary.url
    if url.startswith("internal-db://"):
        res = db.get_raw_data(context.ctx(), job_binary)

    # TODO(mattf): remove support for OLD_SWIFT_INTERNAL_PREFIX
    if url.startswith(su.SWIFT_INTERNAL_PREFIX) or (
            url.startswith(su.OLD_SWIFT_INTERNAL_PREFIX)):
        res = i_swift.get_raw_data(context.ctx(), job_binary)

    return res
Exemple #6
0
def get_raw_binary(job_binary):
    url = job_binary.url
    if url.startswith("internal-db://"):
        res = db.get_raw_data(context.ctx(), job_binary)

    # TODO(mattf): remove support for OLD_SWIFT_INTERNAL_PREFIX
    if url.startswith(su.SWIFT_INTERNAL_PREFIX) or (url.startswith(
            su.OLD_SWIFT_INTERNAL_PREFIX)):
        res = i_swift.get_raw_data(context.ctx(), job_binary)

    return res
    def test_get_raw_data(self, swift_client, _get_raw_data):
        client_instance = mock.Mock()
        swift_client.return_value = client_instance

        job_binary = mock.Mock()
        job_binary.url = 'swift://container/object'

        # embedded credentials
        job_binary.extra = dict(user='******', password='******')
        i_s.get_raw_data(job_binary)
        swift_client.assert_called_with(username='******', password='******')
        _get_raw_data.assert_called_with(job_binary, client_instance)

        # proxy configs should override embedded credentials
        proxy_configs = dict(proxy_username='******',
                             proxy_password='******',
                             proxy_trust_id='proxytrust')
        i_s.get_raw_data(job_binary, proxy_configs)
        swift_client.assert_called_with(username='******',
                                        password='******',
                                        trust_id='proxytrust')
        _get_raw_data.assert_called_with(job_binary, client_instance)
    def test_get_raw_data(self, swift_client, _get_raw_data):
        client_instance = mock.Mock()
        swift_client.return_value = client_instance

        job_binary = mock.Mock()
        job_binary.url = 'swift://container/object'

        # embedded credentials
        job_binary.extra = dict(user='******', password='******')
        i_s.get_raw_data(job_binary)
        swift_client.assert_called_with(username='******',
                                        password='******')
        _get_raw_data.assert_called_with(job_binary, client_instance)

        # proxy configs should override embedded credentials
        proxy_configs = dict(proxy_username='******',
                             proxy_password='******',
                             proxy_trust_id='proxytrust')
        i_s.get_raw_data(job_binary, proxy_configs)
        swift_client.assert_called_with(username='******',
                                        password='******',
                                        trust_id='proxytrust')
        _get_raw_data.assert_called_with(job_binary, client_instance)
    def test_get_raw_data(self, swift_client):
        client_instance = mock.Mock()
        swift_client.return_value = client_instance

        job_binary = mock.Mock()
        job_binary.extra = dict(user='******', password='******')

        # bad swift url should raise an exception
        job_binary.url = 'notswift://container/object'
        self.assertRaises(ex.BadJobBinaryException,
                          i_s.get_raw_data,
                          job_binary)

        # specifying a container should raise an exception
        job_binary.url = 'swift://container'
        self.assertRaises(ex.BadJobBinaryException,
                          i_s.get_raw_data,
                          job_binary)

        # an object that is too large should raise an exception
        job_binary.url = 'swift://container/object'
        client_instance.head_object = mock.Mock()
        header = {'content-length': '2048'}
        client_instance.head_object.return_value = header
        self.override_config('job_binary_max_KB', 1)
        self.assertRaises(ex.DataTooBigException,
                          i_s.get_raw_data,
                          job_binary)
        client_instance.head_object.assert_called_once_with('container',
                                                            'object')

        # valid return
        client_instance.get_object = mock.Mock()
        header = {'content-length': '4'}
        body = 'data'
        client_instance.head_object.return_value = header
        client_instance.get_object.return_value = (header, body)
        self.assertEqual(body, i_s.get_raw_data(job_binary))
        client_instance.get_object.assert_called_once_with('container',
                                                           'object')
    def test_get_raw_data(self, swift_client):
        client_instance = mock.Mock()
        swift_client.return_value = client_instance

        job_binary = mock.Mock()
        job_binary.extra = dict(user='******', password='******')

        # bad swift url should raise an exception
        job_binary.url = 'notswift://container/object'
        self.assertRaises(ex.BadJobBinaryException, i_s.get_raw_data,
                          job_binary)

        # specifying a container should raise an exception
        job_binary.url = 'swift://container'
        self.assertRaises(ex.BadJobBinaryException, i_s.get_raw_data,
                          job_binary)

        # an object that is too large should raise an exception
        job_binary.url = 'swift://container/object'
        client_instance.head_object = mock.Mock()
        header = {'content-length': '2048'}
        client_instance.head_object.return_value = header
        self.override_config('job_binary_max_KB', 1)
        self.assertRaises(ex.DataTooBigException, i_s.get_raw_data, job_binary)
        client_instance.head_object.assert_called_once_with(
            'container', 'object')

        # valid return
        client_instance.get_object = mock.Mock()
        header = {'content-length': '4'}
        body = 'data'
        client_instance.head_object.return_value = header
        client_instance.get_object.return_value = (header, body)
        self.assertEqual(body, i_s.get_raw_data(job_binary))
        client_instance.get_object.assert_called_once_with(
            'container', 'object')