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

[containerapp] suspend/resume a container apps job #8270

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

bgashirabake
Copy link
Contributor


This checklist is used to make sure that common guidelines for a pull request are followed.

Related command

General Guidelines

  • Have you run azdev style <YOUR_EXT> locally? (pip install azdev required)
  • Have you run python scripts/ci/test_index.py -q locally? (pip install wheel==0.30.0 required)
  • My extension version conforms to the Extension version schema

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.

Copy link

azure-client-tools-bot-prd bot commented Nov 13, 2024

⚠️Azure CLI Extensions Breaking Change Test
⚠️containerapp
rule cmd_name rule_message suggest_message
⚠️ 1001 - CmdAdd containerapp job resume cmd containerapp job resume added
⚠️ 1001 - CmdAdd containerapp job suspend cmd containerapp job suspend added

Copy link

Hi @bgashirabake,
Please write the description of changes which can be perceived by customers into HISTORY.rst.
If you want to release a new extension version, please update the version in setup.py as well.

Copy link

Hi @bgashirabake,
Since the current milestone time is less than 7 days, this pr may not catch up with this release.

@yonzhan
Copy link
Collaborator

yonzhan commented Nov 13, 2024

Thank you for your contribution! We will review the pull request and get back to you soon.

@bgashirabake bgashirabake changed the title [container app] suspend/resume a container apps job [containerapp] suspend/resume a container apps job Nov 13, 2024
@microsoft-github-policy-service microsoft-github-policy-service bot added the customer-reported Issues that are reported by GitHub users external to the Azure organization. label Nov 13, 2024
Copy link
Contributor

Thank you for your contribution bgashirabake! We will review the pull request and get back to you soon.

Copy link

CodeGen Tools Feedback Collection

Thank 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

Copy link

Hi @bgashirabake

Release Suggestions

Module: containerapp

  • Update VERSION to 1.0.0b5 in src/containerapp/setup.py

Notes

@bgashirabake
Copy link
Contributor Author

@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
Copy link
Contributor

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.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added!

Copy link
Contributor

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),
])
Copy link
Contributor

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)
Copy link
Contributor

@Greedygre Greedygre Nov 22, 2024

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)
Copy link
Contributor

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"},
Copy link
Contributor

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

Copy link
Contributor

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?

Copy link
Contributor

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())
Copy link
Contributor

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

Comment on lines +398 to +404
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)
Copy link
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Auto-Assign Auto assign by bot ContainerApp customer-reported Issues that are reported by GitHub users external to the Azure organization.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants