Skip to main content

Fabric Aggregate Manager Handlers

Project description

Requirements Status

PyPI

AMHandlers

Aggregate Manager

An aggregate manager controls access to the substrate components. It controls some set of infrastructure resources in a particular site consisting of a set of servers, storage units, network elements or other components under common ownership and control. AMs inform brokers about available resources by passing to the resource advertisement information models. AMs may be associated with more than one broker and the partitioning of resources between brokers is the decision left to the AM. Oversubscription is possible, depending on the deployment needs. FABRIC enables a substrate provider to outsource resource arbitration and calendar scheduling to a broker. By delegating resources to the broker, the AM consents to the broker’s policies, and agrees to try to honor reservations issued by the broker if the user has authorization on the AM.

Besides common code, each AM type has resource-specific modules that determine its resource allocation behavior (Resource Management Policy) and the specific actions it takes to provision a sliver (Resource Handler). Both plugins are invoked by AM common core code based on the resource type or type of request being considered.

Handlers

The AM upcalls a handler interface to setup and teardown each sliver. Resource handlers perform any substrate-specific configuration actions needed to implement slivers. The handler interface includes a probe method to poll the current status of a sliver, and modify to adjust attributes of a sliver.

Handlers are registered and selected by resource type. Each handler invocation executes in an independent thread, so handlers may block for slow configuration actions. Handlers are invoked through a class called HandlerProcessor, which can invoke an interpreter for a handler scripting language. The handlers will be written in the Python scripting language.

Each handler implements 3 basic operation types for a resource:

  • Create - provision a resource
    • Example - create a VM or a bare-metal node, or a network connection
  • Delete - un-provision a resource
    • Undo the create above
  • Modify - modify the state of a resource
    • Modify a property of the VM, or a network connection (e.g. change bandwidth)

Each operation can have subcommands and parameters that determine the details of the actions taken, some of which are discussed below. These parameters help ‘stitch’ multiple slivers together. A canonical example is the passing of network information from the handler provisioning the network to the handler provisioning a compute node so that the compute node ends up with correct network configuration (e.g. attached to a correct VLAN). Specific parameters for operations are a matter of convention between the resource management policy and the plugin.

Handlers receive the parameters as part of the provisioning workflow (sequence of redeem operations) executed by the Orchestrator on the AMs. They can also pass information back to the Orchestrator about reserved resources as part of the standard exchange of messages between AM and Orchestrator during the provisioning.

Playbooks

Handlers use Ansible Playbooks for provisioning.

Interface and design

Class Diagram

Configuration

Each Handler would have a config file containing configuration parameters

VM Handler Config File

VM Handler config file can be found fabric_am/config/vm_handler_config.yml. It describes the Playbook location and names for specific operations.

playbooks:
  location: fabric_am/playbooks
  inventory_location: fabric_am/playbooks/inventory
  VM: head_vm_provisioning.yml
  GPU: worker_pci_provisioning.yml
  SmartNIC: worker_pci_provisioning.yml
  SharedNIC: worker_pci_provisioning.yml
  FPGA: worker_pci_provisioning.yml
  NVME: worker_pci_provisioning.yml

Project details


Release history Release notifications | RSS feed

This version

0.8

Download files

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

Source Distribution

fabric-am-handlers-0.8.tar.gz (16.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_am_handlers-0.8-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

Details for the file fabric-am-handlers-0.8.tar.gz.

File metadata

  • Download URL: fabric-am-handlers-0.8.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for fabric-am-handlers-0.8.tar.gz
Algorithm Hash digest
SHA256 c194157a76d6728b1c0a06b652096041b21aa8da4781e0f0ab16334056a2bb12
MD5 e53c56c36a7d25b5a9da7e8e83f03512
BLAKE2b-256 016725133ba4ad1d4cfa12f95e944d9f7d0a286f99f5084439a51d6548227543

See more details on using hashes here.

File details

Details for the file fabric_am_handlers-0.8-py3-none-any.whl.

File metadata

  • Download URL: fabric_am_handlers-0.8-py3-none-any.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for fabric_am_handlers-0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 fede9be502632ba9ae8f23c9fa563cb79ba520fe0937c4835ddc95c52954f472
MD5 570271175e457bcd5b8542bbd05a091f
BLAKE2b-256 649d5146097f27e0d2a9d6b94f070773fab1b6515f01851b4e95de8fca60004f

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