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

feat: enterprise sso orchestrator api client implementation #1871

Merged

Conversation

alex-sheehan-edx
Copy link
Contributor

https://2u-internal.atlassian.net/browse/ENT-7571

Merge checklist:

  • Any new requirements are in the right place (do not manually modify the requirements/*.txt files)
    • base.in if needed in production but edx-platform doesn't install it
    • test-master.in if edx-platform pins it, with a matching version
    • make upgrade && make requirements have been run to regenerate requirements
  • make static has been run to update webpack bundling if any static content was updated
  • ./manage.py makemigrations has been run
    • Checkout the Database Migration Confluence page for helpful tips on creating migrations.
    • Note: This must be run if you modified any models.
      • It may or may not make a migration depending on exactly what you modified, but it should still be run.
    • This should be run from either a venv with all the lms/edx-enterprise requirements installed or if you checked out edx-enterprise into the src directory used by lms, you can run this command through an lms shell.
      • It would be ./manage.py lms makemigrations in the shell.
  • Version bumped
  • Changelog record added
  • Translations updated (see docs/internationalization.rst but also this isn't blocking for merge atm)

Post merge:

  • Tag pushed and a new version released
    • Note: Assets will be added automatically. You just need to provide a tag (should match your version number) and title and description.
  • After versioned build finishes in GitHub Actions, verify version has been pushed to PyPI
    • Each step in the release build has a condition flag that checks if the rest of the steps are done and if so will deploy to PyPi.
      (so basically once your build finishes, after maybe a minute you should see the new version in PyPi automatically (on refresh))
  • PR created in edx-platform to upgrade dependencies (including edx-enterprise)
    • This must be done after the version is visible in PyPi as make upgrade in edx-platform will look for the latest version in PyPi.
    • Note: the edx-enterprise constraint in edx-platform must also be bumped to the latest version in PyPi.

"""
get the callback url for the SSO Orchestrator API
"""
lms_base_url = get_configuration_value('LMS_ROOT_URL', settings.LMS_ROOT_URL)
Copy link
Contributor

Choose a reason for hiding this comment

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

is this the correct way to call get_configuration_value? it doesn't seem correct to me to supply the setting as the default value for when the setting does not exist? perhaps i misunderstand

Copy link
Contributor Author

Choose a reason for hiding this comment

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

it's how we've done it in other areas

Copy link
Contributor Author

Choose a reason for hiding this comment

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

get_configuration_value('LMS_ROOT_URL', settings.LMS_ROOT_URL),
reverse(
'enterprise_course_enrollment_page',
kwargs={'enterprise_uuid': self.uuid, 'course_key': course_key}
)
)
return utils.update_query_parameters(url, utils.get_enterprise_utm_context(self))
def get_course_run_enrollment_url(self, course_run_key):
"""
Return enterprise landing page url for the given course.
Arguments:
course_run_key (str): The course run id for the course to be displayed.
Returns:
(str): Enterprise landing page url.
"""
url = urljoin(
get_configuration_value('LMS_ROOT_URL', settings.LMS_ROOT_URL),
reverse(
'enterprise_course_run_enrollment_page',
kwargs={'enterprise_uuid': self.uuid, 'course_id': course_run_key}
)
)
return utils.update_query_parameters(url, utils.get_enterprise_utm_context(self))
def get_program_enrollment_url(self, program_uuid):
"""
Return enterprise landing page url for the given program.
Arguments:
program_uuid (str): The program UUID.
Returns:
(str): Enterprise program landing page url.
"""
url = urljoin(
get_configuration_value('LMS_ROOT_URL', settings.LMS_ROOT_URL),

get_sso_orchestrator_basic_auth_password,
)

class EnterpriseSSOOrchestratorApiClient:
Copy link
Contributor

Choose a reason for hiding this comment

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

we may still want to extend from something inside edx-rest-api-client (perhaps a version which supports BasicAuth rather than OAuth) so that we benefit from all the nice default addons like custom user-agents which are app aware, request id forwarding, etc.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I didn't see anything about basic auth in the rest api client but I can double check

enterprise/api_client/sso_orchestrator.py Outdated Show resolved Hide resolved
enterprise/api_client/sso_orchestrator.py Outdated Show resolved Hide resolved
enterprise/api_client/sso_orchestrator.py Outdated Show resolved Hide resolved
enterprise/api_client/sso_orchestrator.py Outdated Show resolved Hide resolved
enterprise/api_client/sso_orchestrator.py Outdated Show resolved Hide resolved
enterprise/errors.py Outdated Show resolved Hide resolved
@alex-sheehan-edx alex-sheehan-edx force-pushed the asheehan-edx/ENT-7571-enterprise-orchestration-client branch 9 times, most recently from 6e05ba3 to ad47129 Compare September 14, 2023 20:13
@alex-sheehan-edx alex-sheehan-edx force-pushed the asheehan-edx/ENT-7571-enterprise-orchestration-client branch from ad47129 to a6a612a Compare September 15, 2023 16:26
@alex-sheehan-edx alex-sheehan-edx marked this pull request as ready for review September 15, 2023 16:27
@alex-sheehan-edx alex-sheehan-edx force-pushed the asheehan-edx/ENT-7571-enterprise-orchestration-client branch 3 times, most recently from 650df71 to 758b42c Compare September 15, 2023 16:43
@alex-sheehan-edx alex-sheehan-edx force-pushed the asheehan-edx/ENT-7571-enterprise-orchestration-client branch from 758b42c to bed73d7 Compare September 15, 2023 17:55
@alex-sheehan-edx alex-sheehan-edx force-pushed the asheehan-edx/ENT-7571-enterprise-orchestration-client branch 3 times, most recently from 712dccd to 3f76dde Compare September 18, 2023 15:23
@alex-sheehan-edx alex-sheehan-edx force-pushed the asheehan-edx/ENT-7571-enterprise-orchestration-client branch from 3f76dde to 6160caf Compare September 18, 2023 18:09
@alex-sheehan-edx alex-sheehan-edx merged commit 3284586 into master Sep 18, 2023
8 of 9 checks passed
@alex-sheehan-edx alex-sheehan-edx deleted the asheehan-edx/ENT-7571-enterprise-orchestration-client branch September 18, 2023 18:33
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.

3 participants