PyOblv


NamePyOblv JSON
Version 0.1.2 PyPI version JSON
download
home_pagehttps://github.com/ObliviousAI/PyOblv
SummaryA client library for accessing Oblivious OpenAPIs
upload_time2022-12-14 12:28:23
maintainer
docs_urlNone
authorOblivious
requires_python>=3.7, <4
licenseApache License 2.0
keywords oblivious python package
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.01784s