Skip to main content

Fabric Orchestrator API

Project description

PyPI

Fabric Orchestrator swagger-client

This is Fabric Orchestrator API

This Python package is automatically generated by the Swagger Codegen project:

  • API version: 1.0.1
  • 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.api.version_api import VersionApi
from fabric_cf.orchestrator.swagger_client import 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 = VersionApi(ApiClient(configuration))

try:
    # version
    api_response = api_instance.version_get()
    pprint(api_response)
except ApiException as e:
    print("Exception when calling VersionApi->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
PoasApi poas_create_sliver_id_post POST /poas/create/{sliver_id} Perform an operational action on a sliver.
PoasApi poas_get GET /poas/ Request get the status of the POAs.
PoasApi poas_poa_id_get GET /poas/{poa_id} Perform an operational action on a sliver.
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. By default, a cached available resource information is returned. User can force to request the current available resources.
SlicesApi slices_create_post POST /slices/create Create slice
SlicesApi slices_creates_post POST /slices/creates Create slice
SlicesApi slices_delete_delete DELETE /slices/delete Delete all slices for a User within a project.
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_modify_slice_id_accept_post POST /slices/modify/{slice_id}/accept Accept the last modify an existing slice
SlicesApi slices_modify_slice_id_put PUT /slices/modify/{slice_id} Modify an existing slice
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

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 by slice_id

orchestrator_host = "dev-3.fabric-testbed.net"
proxy = OrchestratorProxy(orchestrator_host=orchestrator_host)
status, result = proxy.delete(token=token, slice_id=slice_id)

Delete Slices by email

orchestrator_host = "dev-3.fabric-testbed.net"
proxy = OrchestratorProxy(orchestrator_host=orchestrator_host)
status, result = proxy.delete(token=token, email=email)

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

kthare10@unc.edu

Project details


Release history Release notifications | RSS feed

This version

1.9.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fabric_orchestrator_client-1.9.1.tar.gz (49.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fabric_orchestrator_client-1.9.1-py3-none-any.whl (82.2 kB view details)

Uploaded Python 3

File details

Details for the file fabric_orchestrator_client-1.9.1.tar.gz.

File metadata

File hashes

Hashes for fabric_orchestrator_client-1.9.1.tar.gz
Algorithm Hash digest
SHA256 b41b71711df96646c69e3164a67b6b99116ac34117f15dc21e7256742bc5875d
MD5 f5a18d2805d9607daa2e93d08e752c53
BLAKE2b-256 2d77cc8911d8947d3e1492e270e89120d9e51cc7c18781525998be652e14530b

See more details on using hashes here.

File details

Details for the file fabric_orchestrator_client-1.9.1-py3-none-any.whl.

File metadata

File hashes

Hashes for fabric_orchestrator_client-1.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 585ed33210eff845c8b01c24c59ffcf2cf3af3c76a8347084d5e3e663b3f7146
MD5 1d614ed8841b6bfc34c23f51a12b5a7a
BLAKE2b-256 02d40b3b93971d5250a0bfa9ca3897017af055f1f32ccb2f0482e7824cba4d1e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page