Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add api.task_handler and related Client.using_handler #1184

Merged
merged 1 commit into from
Mar 21, 2019

Conversation

rochacbruno
Copy link
Member

@rochacbruno rochacbruno commented Mar 18, 2019

1. Add new handler to extract created/updated resources from task's call_report

Usage examples:

Create a distribution using json_handler

client = Client(cfg, api.json_handler)
spawned_task = client.post(DISTRIBUTION_PATH, body)
# json_handler returns the task call report not the created entity
>>> {'task': ...}
# to have the distribution it is needed to get the task's resources
task_resources = client.get(spawned_task['_href'])
distribution_href = task_resources['created_resources'][0]
distribution = client.get(distribution_href)
>>>  {'_href': ..., 'base_path': ...}

Create a distribution using task_handler

client = Client(cfg, api.task_handler)
distribution = client.post(DISTRIBUTION_PATH, body)
>>> {'_href': ..., 'base_path': ...}
# task_handler resolves the created entity and returns its data

Having an existent client it is possible to use the shortcut::

client.using_handler(api.task_handler).post(DISTRIBUTION_PATH, body)

2. Add syntax-sugar method Client.using_handler

to save few lines of code and some aditional imports when having to use a different handler o a client.

This method clones and injects a new handler dependency in to the
existing client instance and then returns it.

This method is offered just as a 'syntax-sugar' for:

from pulp_smash import api, config

def function(client):  # already receives a client here
    # This function needs to use a different handler
    other_client = api.Client(config.get_config(), other_handler)
    other_client.get(url)

with this method the above can be done in a single line without extra imports:

def function(client):  # already receives a client here
    client.using_handler(other_handler).get(url)

Closes #1178
Ref #1181 (may close it)

rochacbruno added a commit to rochacbruno/pulp-certguard that referenced this pull request Mar 18, 2019
- Add testcase for certguard api (assert protected distribution)
- Add a bunch if `dummy` generated self-signed certificates for testing purposes

Requires PRs:

pulp/pulp-smash#1184
pulp/pulp-smash#1185
pulp/pulp-smash#1186
pulp/pulp-smash#1187

Related issues:

https://pulp.plan.io/issues/4122
https://pulp.plan.io/issues/3969
https://pulp.plan.io/issues/3970

closes #4122
rochacbruno added a commit to rochacbruno/pulp-certguard that referenced this pull request Mar 19, 2019
- Add testcase for certguard api (assert protected distribution)
- Add a some `dummy` generated self-signed certificates for testing purposes

Related PRs:

pulp/pulp-smash#1185
pulp/pulp-smash#1186
pulp/pulp-smash#1187

Related issues:

https://pulp.plan.io/issues/4122
https://pulp.plan.io/issues/3969
https://pulp.plan.io/issues/3970

closes #4122

Required PR: pulp/pulp-smash#1184
Copy link

@nixocio nixocio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As we talked task_handler it is a pulp 3 only response_handler.

1. Add new handler to extract created/updated resources from
   task's call_report
2. Add `syntax-sugar` method `Client.using_handler` to save
   few lines of code and some aditional imports when having
   to use a different handler o a client.
Copy link
Contributor

@ragabala ragabala left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💯

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Create new create_distribution method
3 participants