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

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.2.tar.gz (49.3 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.2-py3-none-any.whl (82.2 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for fabric_orchestrator_client-1.9.2.tar.gz
Algorithm Hash digest
SHA256 98999f604d6f7d1665c0e0d87618b7b5ff8baa54fd6622182f77d2fcef33bf01
MD5 63476123e0ccbd10abca055a0dcc3a1e
BLAKE2b-256 6895c8268e4906f2e4d1f904fb07d52bfd2abf3c89716c64a0a67c9b5b509745

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fabric_orchestrator_client-1.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5dfb24ed79996e0c3873ca8442d6ee4b6fd77e44daf98fd6b478420e7d0843f4
MD5 a113d6bae0b859f70b41bb691c4c02a8
BLAKE2b-256 a1b788477a7c68728cf31247a0aee1d5303944fd830451ef061fa2adba4334cd

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