-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
[containerapp] suspend/resume a container apps job #8270
base: main
Are you sure you want to change the base?
[containerapp] suspend/resume a container apps job #8270
Conversation
|
rule | cmd_name | rule_message | suggest_message |
---|---|---|---|
containerapp job resume | cmd containerapp job resume added |
||
containerapp job suspend | cmd containerapp job suspend added |
Hi @bgashirabake, |
Hi @bgashirabake, |
Thank you for your contribution! We will review the pull request and get back to you soon. |
Thank you for your contribution bgashirabake! We will review the pull request and get back to you soon. |
CodeGen Tools Feedback CollectionThank you for using our CodeGen tool. We value your feedback, and we would like to know how we can improve our product. Please take a few minutes to fill our codegen survey |
Release SuggestionsModule: containerapp
Notes
|
@Greedygre can you help with initial reviews for this PR? i'll get someone from my team to validate the logic too :) |
|
||
r = send_raw_request(cmd.cli_ctx, "POST", request_url) | ||
if r.status_code == 202: | ||
return |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
handle other response codes as well. For example, if Job is not found, then we would return 404 from the RP, but in this case we would not return the correct information.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the send_raw_request(cmd.cli_ctx, "POST", request_url)
it throw error when return 4xx. So not need to handle it here specifically.
We need to have test to cover this case and check the error message.
JMESPathCheck('name', job), | ||
JMESPathCheck("properties.provisioningState", "Succeeded"), | ||
JMESPathCheck('properties.runningStatus', "Suspended", case_sensitive=False), | ||
]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add an additional command here to try and start the suspended job which should return the message that the Job in suspended state.
) | ||
containerapp_job_decorator.validate_subscription_registered(CONTAINER_APPS_RP) | ||
|
||
return ContainerAppsJobPreviewClient.suspend(cmd=cmd, resource_group_name=resource_group_name, name=name) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please use the containerapp_job_suspend_decorator
to execute containerapp_job_suspend_decorator.suspend()
You can refer : class ContainerAppPreviewListDecorator(BaseContainerAppDecorator) to create
class ContainerAppJobSuspendDecorator(ContainerAppJobDecorator)
|
||
containerapp_job_decorator.validate_subscription_registered(CONTAINER_APPS_RP) | ||
|
||
return ContainerAppsJobPreviewClient.resume(cmd=cmd, resource_group_name=resource_group_name, name=name) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same as above.
@@ -8389,6 +8393,7 @@ class ContainerAppsJob(TrackedResource): # pylint: disable=too-many-instance-at | |||
"extended_location": {"key": "extendedLocation", "type": "ExtendedLocation"}, | |||
"identity": {"key": "identity", "type": "ManagedServiceIdentity"}, | |||
"provisioning_state": {"key": "properties.provisioningState", "type": "str"}, | |||
"running_status": {"key": "properties.runningStatus", "type": "str"}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please add YAML test to cover it. And rerun all tests relate to az containerapp job create/update --yaml
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is a readonly property, we cannot update it with az containerapp job create/update --yaml
, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why you need to update this class?
In fact az containerapp job create/update --yaml
is using class Job
, not this one. I think you don't need to update this file.
@@ -43,6 +43,8 @@ def load_command_table(self, args): | |||
g.custom_command('create', 'create_containerappsjob', supports_no_wait=True, exception_handler=ex_handler_factory(), transform=transform_sensitive_values) | |||
g.custom_command('update', 'update_containerappsjob', supports_no_wait=True, exception_handler=ex_handler_factory(), transform=transform_sensitive_values) | |||
g.custom_command('delete', 'delete_containerappsjob', supports_no_wait=True, confirmation=True, exception_handler=ex_handler_factory()) | |||
g.custom_command('suspend', 'suspend_containerappsjob', supports_no_wait=True, exception_handler=ex_handler_factory()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would better to ask the customer to confirm action like az containerapp job delete
?
Recommedn to add confirmation=True
with self.argument_context('containerapp job suspend') as c: | ||
c.argument('name', name_type, id_part=None, help="The name of the Containerapp job.") | ||
c.argument('resource_group_name', arg_type=resource_group_name_type, id_part=None) | ||
|
||
with self.argument_context('containerapp job resume') as c: | ||
c.argument('name', name_type, id_part=None, help="The name of the Containerapp job.") | ||
c.argument('resource_group_name', arg_type=resource_group_name_type, id_part=None) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you don't need to add these params, because they can inherit the params from az containerapp job
This checklist is used to make sure that common guidelines for a pull request are followed.
Related command
General Guidelines
azdev style <YOUR_EXT>
locally? (pip install azdev
required)python scripts/ci/test_index.py -q
locally? (pip install wheel==0.30.0
required)For new extensions:
About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update
src/index.json
automatically.You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify
src/index.json
.