-
Notifications
You must be signed in to change notification settings - Fork 11
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
feat: provisioning api skeleton #638
Conversation
Thanks for the pull request, @iloveagent57! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. Where can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
178ad6f
to
c14571d
Compare
1dfb5e2
to
81c414a
Compare
6a690ea
to
169e2d7
Compare
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.
LGTM, with a nit/question!
uuid = serializers.UUIDField() | ||
name = serializers.CharField() | ||
country = CountryField() | ||
slug = serializers.SlugField(required=False, allow_blank=True) |
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.
[nit/curious] Once a customer has been provisioned, presumably a slug will always exist at this point? Even if no slug is provided in the request, I believe the intent is to generate a slug? If so, should slug be a required field in the response?
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.
That's a good point, slug
should be required in the response. Your question raises another good point in my mind - I should document in an ADR the intended set of provisioning endpoints, which will actually inform how we should be designing these serializers.
- The
create()
view should idempotently get-or-create, but not modify, customers and their associated records. This endpoint is the primary goal for MVP purposes. - There should be a
modify
view that's a get-or-update type of operation.
169e2d7
to
3499958
Compare
Adds skeleton of a provisioning API, without yet implementing the business logic. ENT-10071
3499958
to
de1de7f
Compare
SYSTEM_ENTERPRISE_PROVISIONING_ADMIN_ROLE: [ | ||
PROVISIONING_ADMIN_ROLE, | ||
], |
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.
The entire concept of adding a new system-wide role is new to me. Don't we have to create this on the edxapp side now? Why not just assign PROVISIONING_ADMIN_ROLE to SYSTEM_ENTERPRISE_OPERATOR_ROLE so that only backend services and operational staff can call this endpoint?
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.
Good question - this role already exists (which surprised me). I'm not quite sure of the motivation for it, but it's there so I used it. But maybe we should additionally assign the provisioning feature role to the system operator role.
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.
But maybe we should additionally assign the provisioning feature role to the system operator role.
Agreed! ➕ 1️⃣
https://2u-internal.atlassian.net/browse/ENT-9970
enterprise_provisioning_admin
role assigned via edxapp: http://localhost:18000/admin/enterprise/systemwideenterpriseuserroleassignment/add/http://localhost:18270/api/v1/provisioning
with body likeack
response.Merge checklist:
./manage.py makemigrations
has been runPost merge: