Commit 31af542
authored
Implement Admin API (#512)
## Problem
Currently the Admin API is not supported in the python SDK.
## Solution
Implement an `Admin` class with support for CRUD on projects and API
keys.
## Usage
### Projects
```python
from pinecone import Admin
# Use service account credentials
admin = Admin(client_id='foo', client_secret='bar')
# Example: Create a project
project = admin.project.create(
name="example-project",
max_pods=5
)
print(f"Project {project.id} was created")
# Example: Rename a project
project = admin.project.get(name='example-project')
admin.project.update(
project_id=project.id,
name='my-awesome-project'
)
# Example: Enable CMEK on all projects
project_list = admin.projects.list()
for proj in project_list_response.data:
admin.projects.update(
project_id=proj.id,
force_encryption_with_cmek=True
)
# Example: Set pod quota to 0 for all projects
project_list = admin.projects.list()
for proj in project_list_response.data:
admin.projects.update(project_id=proj.id, max_pods=0)
# Delete the project
admin.project.delete(project_id=project.id)
```
### API Keys
```python
from pinecone import Admin
# Use service account credentials
admin = Admin(client_id='foo', client_secret='bar')
project = admin.project.get(name='my-project')
# Create an API key
api_key_response = admin.api_keys.create(
project_id=project.id,
name="ci-key",
roles=["ProjectEditor"]
)
key = api_key_response.value # 'pcsk_....'
# Look up info on a key by id
key_info = admin.api_keys.get(
api_key_id=api_key_response.key.id
)
# Delete a key
admin.api_keys.delete(
api_key_id=api_key_response.key.id
)
```
## Type of Change
- [x] New feature (non-breaking change which adds functionality)
- [x] Infrastructure change (CI configs, etc)
- [x] Non-code change (docs, etc)
## Test Plan
Tests added. Also incorporated into CI.1 parent 193c99e commit 31af542
File tree
64 files changed
+7646
-899
lines changed- .github
- actions
- build-docs
- cleanup-all
- project-create
- project-delete
- workflows
- codegen
- docs
- pinecone
- admin
- eraser
- resources
- resources
- config
- core/openapi
- admin
- apis
- api
- models
- model
- db_data
- api
- model
- inference/api
- oauth
- apis
- api
- models
- model
- tests/integration/admin
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
64 files changed
+7646
-899
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | 19 | | |
35 | 20 | | |
36 | 21 | | |
37 | 22 | | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
0 commit comments