# PyOblv
A Python library to access Oblivious OpenAPIs.
## Usage
First, create a client, with your API key. This key can be created in the
[Oblivious Console UI](https://console.oblivious.ai/). Go to the
settings page, and create your ApiKey. Once done, the client can be
created as follows
``` {.python}
from oblv import authenticate
client = authenticate(apikey=*your_key_here*)
```
Using this client, all the Oblivious actions can be performed, including the deployment of enclaves. Below is a step-by-step guide, to creating your first deployment.
### 1 Create a service
A service refers to a branch/tag of your repository that needs to be
deployed. For your first service. you can use the repository
[ObliviousAI/FastAPI-Enclave-Services](https://github.com/ObliviousAI/FastAPI-Enclave-Services).
Execute the below command to create the service.
``` {.python}
client.add_service(repo_owner="ObliviousAI",repo_name="FastAPI-Enclave-Services", ref="master")
```
>
> {
> "message": "Success",
> "service": {
> "ref": "master",
> "service_validated": true,
> "sha": "6b1b3e9cf6b0cb7264aad2fc80d91a009ccf0fc1",
> "type": "branch"
> }
> }
You have now successfully created your first service, and it can be now
deployed to an enclave.
### 2 Enclave Creation
To create an enclave, you need to decide on a few of the parameters -
- **deployment_name** - A unique deployment name. You cannot have two
running deployments with the same name.
- **region_name** - could be one of the AWS regions from
- ***us-east-1*** (N. Virginia)
- ***us-west-2*** (Oregon)
- ***eu-central-1*** (Frankfurt)
- ***eu-west-2*** (London)
- **visibility** - ***private*** or ***public***
- **is_dev_env** - ***True*** or ***False***.
- **tags** - A list of tags for your deployment
- **account_type** - This is the VCS type, and only GitHub*** is
supported for now.
- **build_args** - Arguments specific to your deployment. It includes adding users to their roles with their public keys, runtime arguments and
any additional arguments for your build. It also includes the infra
size needed for the deployment. The options are -
- ***c5.xlarge*** - CPU:4 RAM:8 GB \-- Credit Utilization: 68.0/hr
- ***m5.xlarge*** - CPU:4 RAM:16 GB \-- Credit Utilization:
76.8/hr
- ***r5.xlarge*** - CPU:4 RAM:32 GB \-- Credit Utilization:
100.8/hr
- ***c5.2xlarge*** - CPU:8 RAM:16 GB \-- Credit Utilization:
136.0/hr
- ***m5.2xlarge*** - CPU:8 RAM:32 GB \-- Credit Utilization:
153.6/hr
A valid example for *build_args* for the service you created -
```
args = {
"users": {
"admin": [
{
"user_name": "<your name>",
"public key": "<your public key>"
}
]
},
"infra_reqs": "m5.xlarge",
}
```
> 📝 **Note:**
>
> <b>admin</b> here
> is the role defined for the deployment in service.yaml
> file
>
> The service used,
> does not have requirements for any runtime or build arguments, so not
> needed here.
``` {.python}
from oblv.models import CreateDeploymentInput
input = CreateDeploymentInput(
owner="ObliviousAI",
repo="FastAPI-Enclave-Services",
account_type="github",
ref="master",
region_name="us-east-1",
deployment_name="Depl",
visibility="private",
is_dev_env=True,
tags=[],
build_args=args
)
response = client.create_deployment(input)
```
On successful request, enclave creation is initiated, and it returns an
id for the deployment, which can be later used to track the status and
connection details for the enclave.
To check the state of the deployment, run
``` {.python}
client.deployment_info(response.deployment_id).current_state
```
> 'CFT Initiated'
When the deployment state becomes ***Running***, it indicates that the
enclave is now available for connection.
To connect to the enclave, you need **Oblv CLI** installed in your
system. The commands to use the CLI can be found in this
[documentation](https://docs.oblivious.ai/cli/usage_examples).
Cli binaries can be found [here](https://docs.oblivious.ai/cli/binaries)
The URL to connect to the enclave using CLI can be accessed using
``` {.python}
client.deployment_info(response.deployment_id).instance.service_url
```
>
>'https://conso-appli-15aiaxip9pcxk-94364694.enclave.oblivious.ai'
>
The PCR codes can be found using
``` {.python}
client.deployment_info(response.deployment_id).pcr_codes
```
>['d8dd856bacf4a8f0840ab530579b906091803e818e01dc4b8f51c247a7adfcfe55b4ef5f17be6d53bb952d92d87a376c',
'bcdf05fefccaa8e55bf2c8d6dee9e79bbff31e34bf28a99aa19e6b29c37ee80b214a414b7607236edf26fcb78654e63f','79477bad9504a347afb557a8ccd6f62ea61243311dff39f66944f5150242128da0cd070f0ce629c6beb6bb4f0b52f5ed' ]
Raw data
{
"_id": null,
"home_page": "https://github.com/ObliviousAI/PyOblv",
"name": "PyOblv",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7, <4",
"maintainer_email": "",
"keywords": "Oblivious python package",
"author": "Oblivious",
"author_email": "hello@oblivious.ai",
"download_url": "https://files.pythonhosted.org/packages/02/48/d01323106a169eb5931279fd2e8d7f714e7d133b3abc8edda3e4ff7e1c5d/PyOblv-0.1.2.tar.gz",
"platform": null,
"description": "# PyOblv\n\nA Python library to access Oblivious OpenAPIs.\n\n## Usage\n\nFirst, create a client, with your API key. This key can be created in the\n[Oblivious Console UI](https://console.oblivious.ai/). Go to the\nsettings page, and create your ApiKey. Once done, the client can be\ncreated as follows\n\n``` {.python}\nfrom oblv import authenticate\nclient = authenticate(apikey=*your_key_here*)\n```\n\n\nUsing this client, all the Oblivious actions can be performed, including the deployment of enclaves. Below is a step-by-step guide, to creating your first deployment.\n\n\n\n### 1 Create a service\n\nA service refers to a branch/tag of your repository that needs to be\ndeployed. For your first service. you can use the repository\n[ObliviousAI/FastAPI-Enclave-Services](https://github.com/ObliviousAI/FastAPI-Enclave-Services).\nExecute the below command to create the service.\n\n``` {.python}\nclient.add_service(repo_owner=\"ObliviousAI\",repo_name=\"FastAPI-Enclave-Services\", ref=\"master\")\n```\n\n\n>\n> {\n> \"message\": \"Success\",\n> \"service\": {\n> \"ref\": \"master\",\n> \"service_validated\": true,\n> \"sha\": \"6b1b3e9cf6b0cb7264aad2fc80d91a009ccf0fc1\",\n> \"type\": \"branch\"\n> }\n> }\n\n\nYou have now successfully created your first service, and it can be now\ndeployed to an enclave.\n\n### 2 Enclave Creation\n\nTo create an enclave, you need to decide on a few of the parameters -\n\n- **deployment_name** - A unique deployment name. You cannot have two\n running deployments with the same name.\n- **region_name** - could be one of the AWS regions from\n - ***us-east-1*** (N. Virginia) \n - ***us-west-2*** (Oregon)\n - ***eu-central-1*** (Frankfurt)\n - ***eu-west-2*** (London)\n- **visibility** - ***private*** or ***public***\n- **is_dev_env** - ***True*** or ***False***.\n- **tags** - A list of tags for your deployment\n- **account_type** - This is the VCS type, and only GitHub*** is\n supported for now.\n- **build_args** - Arguments specific to your deployment. It includes adding users to their roles with their public keys, runtime arguments and\n any additional arguments for your build. It also includes the infra\n size needed for the deployment. The options are -\n - ***c5.xlarge*** - CPU:4 RAM:8 GB \\-- Credit Utilization: 68.0/hr\n - ***m5.xlarge*** - CPU:4 RAM:16 GB \\-- Credit Utilization:\n 76.8/hr\n - ***r5.xlarge*** - CPU:4 RAM:32 GB \\-- Credit Utilization:\n 100.8/hr\n - ***c5.2xlarge*** - CPU:8 RAM:16 GB \\-- Credit Utilization:\n 136.0/hr\n - ***m5.2xlarge*** - CPU:8 RAM:32 GB \\-- Credit Utilization:\n 153.6/hr\n\nA valid example for *build_args* for the service you created -\n\n\n```\nargs = {\n \"users\": {\n \"admin\": [\n {\n \"user_name\": \"<your name>\",\n \"public key\": \"<your public key>\"\n }\n ]\n },\n \"infra_reqs\": \"m5.xlarge\", \n}\n\n```\n\n> \ud83d\udcdd **Note:**\n>\n> <b>admin</b> here\n> is the role defined for the deployment in service.yaml\n> file\n>\n> The service used,\n> does not have requirements for any runtime or build arguments, so not\n> needed here.\n\n``` {.python}\nfrom oblv.models import CreateDeploymentInput\ninput = CreateDeploymentInput(\n owner=\"ObliviousAI\",\n repo=\"FastAPI-Enclave-Services\",\n account_type=\"github\",\n ref=\"master\",\n region_name=\"us-east-1\",\n deployment_name=\"Depl\",\n visibility=\"private\",\n is_dev_env=True,\n tags=[],\n build_args=args\n)\nresponse = client.create_deployment(input)\n```\n\n\nOn successful request, enclave creation is initiated, and it returns an\nid for the deployment, which can be later used to track the status and\nconnection details for the enclave.\n\nTo check the state of the deployment, run\n\n``` {.python}\nclient.deployment_info(response.deployment_id).current_state\n```\n\n> 'CFT Initiated'\n\n\nWhen the deployment state becomes ***Running***, it indicates that the\nenclave is now available for connection.\n\nTo connect to the enclave, you need **Oblv CLI** installed in your\nsystem. The commands to use the CLI can be found in this\n[documentation](https://docs.oblivious.ai/cli/usage_examples).\n\nCli binaries can be found [here](https://docs.oblivious.ai/cli/binaries)\n\nThe URL to connect to the enclave using CLI can be accessed using\n\n``` {.python}\nclient.deployment_info(response.deployment_id).instance.service_url\n```\n\n>\n>'https://conso-appli-15aiaxip9pcxk-94364694.enclave.oblivious.ai'\n>\n\n\nThe PCR codes can be found using\n\n``` {.python}\nclient.deployment_info(response.deployment_id).pcr_codes\n```\n\n>['d8dd856bacf4a8f0840ab530579b906091803e818e01dc4b8f51c247a7adfcfe55b4ef5f17be6d53bb952d92d87a376c',\n'bcdf05fefccaa8e55bf2c8d6dee9e79bbff31e34bf28a99aa19e6b29c37ee80b214a414b7607236edf26fcb78654e63f','79477bad9504a347afb557a8ccd6f62ea61243311dff39f66944f5150242128da0cd070f0ce629c6beb6bb4f0b52f5ed' ]\n",
"bugtrack_url": null,
"license": "Apache License 2.0",
"summary": "A client library for accessing Oblivious OpenAPIs",
"version": "0.1.2",
"split_keywords": [
"oblivious",
"python",
"package"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "8a2d637676eaae7eaac6aac2b325425a",
"sha256": "badfb3e25f26c772724bd3e616342cfcf59668656bc6be1c5ab6b08e4a7280ef"
},
"downloads": -1,
"filename": "PyOblv-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8a2d637676eaae7eaac6aac2b325425a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7, <4",
"size": 138520,
"upload_time": "2022-12-14T12:28:20",
"upload_time_iso_8601": "2022-12-14T12:28:20.855129Z",
"url": "https://files.pythonhosted.org/packages/63/6d/f3b9e57ba1cd525f5eb2f17d536d044e19cdc26c0b48b9427948556c14f2/PyOblv-0.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "8e02e6cf613e60327bd444fdd30a210a",
"sha256": "040a0f7ab22bcff7661c2fe1f76f51e7bbcf915a003e25bef80189df86df4d61"
},
"downloads": -1,
"filename": "PyOblv-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "8e02e6cf613e60327bd444fdd30a210a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7, <4",
"size": 44844,
"upload_time": "2022-12-14T12:28:23",
"upload_time_iso_8601": "2022-12-14T12:28:23.451966Z",
"url": "https://files.pythonhosted.org/packages/02/48/d01323106a169eb5931279fd2e8d7f714e7d133b3abc8edda3e4ff7e1c5d/PyOblv-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-12-14 12:28:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "ObliviousAI",
"github_project": "PyOblv",
"lcname": "pyoblv"
}