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

🏗️ IBM Cloud Integration #1593

Draft
wants to merge 10 commits into
base: main
Choose a base branch
from
Draft

🏗️ IBM Cloud Integration #1593

wants to merge 10 commits into from

Conversation

Tansito
Copy link
Member

@Tansito Tansito commented Feb 27, 2025

Summary

This pull request introduces a series of improvements and optimizations across various components of the authentication and service integration modules.

The most important new feature is the possibility to authenticate with IBM Cloud. This way we have three different channels:

  • Local
  • IBM Quantum
  • IBM Cloud

The first are the channels we were using until now and this PR doesn't add any breaking change on those features. IBM Cloud authentication will need to use the new interface:

serverless = IBMServerlessClient(channel="ibm_cloud", token="IBM_CLOUD_API_KEY", instance="IBM_CLOUD_CRN")

The rest of the channels, IBM Quantum and Local, remain the same with the exception that now you would have two ways to authenticate:

serverless = IBMServerlessClient(token="IQP_TOKEN")
serverless = IBMServerlessClient(channel="ibm_quantum", token="IQP_TOKEN")

Important

instance parameter will be used only for IBM Cloud crn.

* created the ibm_cloud service to authenticate with

* preparing the tests

* added tests for ibm cloud authentication process

* fix lint

* fix authentication logger
* mock backend renamed

* created local service

* added the channel as a parameter in the use case

* improved the tests to verify permissions in groups

* fix bug creating the provider
* Channel implementation in client

* fix bug with settings configuration

* use get_headers in serverless client

* get_headers as static method

* include instance in files client

* move get_headers to all the requests

* moved get_headers to utils

* updated docstrings

* added the same param to ibm serverless client
* fixed a bug in the client uploading functions

* setup channel and instance in the env vars

* updated references to old env vars

* use the new env vars in the client

* fix test

* fix lint and black

* fix tests

* fix enum value

* tests updated

* fix black and lint
* improve logic with authentication failed exception

* fix linter

* implement the headers for 401 exception

* Empty commit
# Conflicts:
#	client/qiskit_serverless/core/clients/serverless_client.py
@Tansito Tansito marked this pull request as ready for review March 6, 2025 18:31
@Tansito Tansito marked this pull request as draft March 6, 2025 18:56
@Tansito Tansito requested review from paaragon and pandasa123 March 6, 2025 20:58
@Tansito Tansito marked this pull request as ready for review March 6, 2025 20:59
@Tansito Tansito marked this pull request as draft March 6, 2025 21:40
@Tansito
Copy link
Member Author

Tansito commented Mar 6, 2025

Last thing remains, we just need to save the id from the access group instead the name and add account id into groups if it's possible.

Tansito and others added 3 commits March 7, 2025 10:47
* fix: IBMServerlessClient save_account

* fix lint

* fix docstring

* apply partial review suggestions
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.

2 participants