Fabric Orchestrator API
Project description
Fabric Orchestrator swagger-client
This is Fabric Orchestrator API
This Python package is automatically generated by the Swagger Codegen project:
- API version: 1.0.0
- Package version: 1.0.0
- Build package: io.swagger.codegen.v3.generators.python.PythonClientCodegen
Generating the Client Code
Due to a BUG in swagger-code-gen, Please follow the steps below
That said, there's a bug in the Python generator of Swagger Codegen 3.x, it doesn't generate the code for Bearer authentication in OpenAPI 3.0 definitions. As a workaround, edit your OpenAPI YAML file and replace this part
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
to
securitySchemes:
sso_auth:
type: apiKey
in: header
name: Authorization
Then generate a new Python client from the modified API definition.
Reference for more details here
Requirements.
Python 3.9+
Installation & Usage
pip install
If the python package is hosted on Github, you can install directly from Github
pip install git+https://github.com/fabric-testbed/OrchestratorClient.git
(you may need to run pip
with root permission: sudo pip install git+https://github.com/fabric-testbed/OrchestratorClient.git
)
Then import the package:
import fabric_cf.orchestrator.swagger_client
Setuptools
Install via Setuptools.
python setup.py install --user
(or sudo python setup.py install
to install the package for all users)
Then import the package:
import fabric_cf.orchestrator.swagger_client
Getting Started
Please follow the installation procedure and then run the following:
from __future__ import print_function
import time
from fabric_cf.orchestrator.swagger_client import DefaultApi, Configuration, ApiClient
from fabric_cf.orchestrator.swagger_client.rest import ApiException
from pprint import pprint
# Configure API key authorization: bearerAuth
configuration = Configuration()
configuration.api_key['Authorization'] = 'YOUR_API_KEY'
# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
# configuration.api_key_prefix['Authorization'] = 'Bearer'
# create_slices an instance of the API class
api_instance = DefaultApi(ApiClient(configuration))
try:
# version
api_response = api_instance.version_get()
pprint(api_response)
except ApiException as e:
print("Exception when calling DefaultApi->version_get: %s\n" % e)
Documentation for API Endpoints
All URIs are relative to http://127.0.0.1:8700/
Class | Method | HTTP request | Description |
---|---|---|---|
ResourcesApi | portalresources_get | GET /portalresources | Retrieve a listing and description of available resources for portal |
ResourcesApi | resources_get | GET /resources | Retrieve a listing and description of available resources |
SlicesApi | slices_create_post | POST /slices/create | Create slice |
SlicesApi | slices_delete_slice_id_delete | DELETE /slices/delete/{slice_id} | Delete slice. |
SlicesApi | slices_get | GET /slices | Retrieve a listing of user slices |
SlicesApi | slices_renew_slice_id_post | POST /slices/renew/{slice_id} | Renew slice |
SlicesApi | slices_slice_id_get | GET /slices/{slice_id} | slice properties |
SliversApi | slivers_get | GET /slivers | Retrieve a listing of user slivers |
SliversApi | slivers_sliver_id_get | GET /slivers/{sliver_id} | slivers properties |
VersionApi | version_get | GET /version | Version |
Documentation For Models
- Resource
- Resources
- Slice
- SliceDetails
- Slices
- Sliver
- Slivers
- Status200OkNoContent
- Status200OkNoContentData
- Status200OkPaginated
- Status200OkPaginatedLinks
- Status200OkSingle
- Status400BadRequest
- Status400BadRequestErrors
- Status401Unauthorized
- Status401UnauthorizedErrors
- Status403Forbidden
- Status403ForbiddenErrors
- Status404NotFound
- Status404NotFoundErrors
- Status500InternalServerError
- Status500InternalServerErrorErrors
- Version
- VersionData
Documentation For Authorization
bearerAuth
- Type: API key
- API key parameter name: Authorization
- Location: HTTP header
Documentation For Orchestrator Proxy
Users are recommended to use Orchestrator Proxy class for any orchestrator operations. Examples are shown below.
Get Resources
orchestrator_host = "dev-3.fabric-testbed.net"
proxy = OrchestratorProxy(orchestrator_host=orchestrator_host)
resources = proxy.resources(token=token)
Create Slice
import fim.user as fu
t = fu.ExperimentTopology()
n1 = t.add_node(name='n1', site='RENC')
cap = fu.Capacities()
cap.set_fields(core=4, ram=64, disk=500)
n1.set_properties(capacities=cap, image_type='qcow2', image_ref='default_centos_8')
n1.add_component(ctype=fu.ComponentType.SmartNIC, model='ConnectX-6', name='nic1')
n2 = t.add_node(name='n2', site='RENC')
n2.set_properties(capacities=cap, image_type='qcow2', image_ref='default_centos_8')
n2.add_component(ctype=fu.ComponentType.GPU, model='Tesla T4', name='nic2')
slice_graph = t.serialize()
sss_key = "<user public key>"
orchestrator_host = "dev-3.fabric-testbed.net"
proxy = OrchestratorProxy(orchestrator_host=orchestrator_host)
status, reservation_list = proxy.create(token=token, slice_name=name, slice_graph=slice_graph, ssh_key=ssh_key)
Get Slices
orchestrator_host = "dev-3.fabric-testbed.net"
proxy = OrchestratorProxy(orchestrator_host=orchestrator_host)
status, slice_list = proxy.slices(token=token)
Get Slice
orchestrator_host = "dev-3.fabric-testbed.net"
proxy = OrchestratorProxy(orchestrator_host=orchestrator_host)
status, slice_topology = proxy.get_slice(token=token, slice_id=slice_id)
Get Slivers
orchestrator_host = "dev-3.fabric-testbed.net"
proxy = OrchestratorProxy(orchestrator_host=orchestrator_host)
status, reservation_list = proxy.slivers(token=token, slice_id=slice_id)
Get Sliver
orchestrator_host = "dev-3.fabric-testbed.net"
proxy = OrchestratorProxy(orchestrator_host=orchestrator_host)
status, reservation = proxy.slivers(token=token, slice_id=slice_id, sliver_id=sliver_id)
Delete Slice
orchestrator_host = "dev-3.fabric-testbed.net"
proxy = OrchestratorProxy(orchestrator_host=orchestrator_host)
status, result = proxy.delete(token=token, slice_id=slice_id)
Slice Status
orchestrator_host = "dev-3.fabric-testbed.net"
proxy = OrchestratorProxy(orchestrator_host=orchestrator_host)
status, slice_object = proxy.slice_status(token=token, slice_id=slice_id)
Sliver Status
orchestrator_host = "dev-3.fabric-testbed.net"
proxy = OrchestratorProxy(orchestrator_host=orchestrator_host)
status, reservation = proxy.sliver_status(token=token, slice_id=slice_id, sliver_id=sliver_id)
Renew Slice
now = datetime.now(timezone.utc)
new_time = now + timedelta(days=2)
orchestrator_host = "dev-3.fabric-testbed.net"
proxy = OrchestratorProxy(orchestrator_host=orchestrator_host)
status, reservation = proxy.renew_slice(token=token, slice_id=slice_id,
new_lease_end_time=new_time.strftime('%Y-%m-%d %H:%M:%S %z'))
Author
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for fabric-orchestrator-client-1.3rc5.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0365f25a16461ada1c3f3d8676749536f0a598cf4eeb63e95d7c1cb081e5142a |
|
MD5 | 2cb3ddaf8d7801a4e7acd0a5147a25fb |
|
BLAKE2b-256 | fcd873385c472210f10e77aca53b469bb47281fdaa68d8fc7f3780f01d9cafb3 |
Hashes for fabric_orchestrator_client-1.3rc5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63a641c0b0f0c719cbf2ee59cae5214f2793b83c52527dd33230a0f0484b1e62 |
|
MD5 | a0f8d41ce0494a37d966b3df9769a909 |
|
BLAKE2b-256 | 37eebb6e2c6e3a0fb2d38486f56e35984c97f422ff26dfbb5fd63621e01db181 |