summaryrefslogtreecommitdiff
path: root/nova/accelerator
Commit message (Collapse)AuthorAgeFilesLines
* smartnic support - reject server move and suspendYongli He2021-08-051-10/+33
| | | | | | | | | | | | | | | | | | | | | | | | | Server with ARQ in the port does not support move and suspend, reject these operations in API stage: - resize - shelve - live_migrate - evacuate - suspend - attach/detach a smartnic port Reject create server with smartnic in port if minimal compute service version less than 57 Reject create server with port which have a malformed device profile that request multi devices, like: { "resources:CUSTOM_ACCELERATOR_FPGA": "2", "trait:CUSTOM_INTEL_PAC_ARRIA10": "required", } Implements: blueprint sriov-smartnic-support Change-Id: Ia705a0341fb067e746a3b91ec4fc6d149bcaffb8
* Smartnic support - cyborg driveYongli He2021-08-051-15/+88
| | | | | | | | | | | | | | | | | | | | | | A device profile keeps in port field "device_profile", a cyborg arq is created based on the device profile. Few cyborg interfaces added to support smartnic operations. - create_arqs create arqs from device_profile - get_arq_device_rp_uuid get arq device provider uuid by arq - get_arq_by_uuid retrieve arq by arq uuid Implements: blueprint sriov-smartnic-support Change-Id: I9ca54d63ebda626f41159b13bbe40549a714f0a1 Co-Authored-By: Shaohe Feng <shaohe.feng@intel.com> Co-Authored-By: Xinran Wang <xin-ran.wang@intel.com>
* Remove six.text_type (1/2)Takashi Natsume2020-12-131-3/+1
| | | | | | | | | Replace six.text_type with str. A subsequent patch will replace other six.text_type. Change-Id: I23bb9e539d08f5c6202909054c2dd49b6c7a7a0e Implements: blueprint six-removal Signed-off-by: Takashi Natsume <takanattie@gmail.com>
* Cyborg evacuate supportSean Mooney2020-09-011-0/+9
| | | | | | | | | | | | | | | | | | | | | | This change extends the conductor manager to append the cyborg resource request to the request spec when performing an evacuate. This change passes the ARQs to spawn during rebuild and evacuate. On evacuate the existing ARQs will be deleted and new ARQs will be created and bound, during rebuild the existing ARQs are reused. This change extends the rebuild_instance compute rpcapi function to carry the arq_uuids. This eliminates the need to lookup the uuids associated with the arqs assinged to the instance by quering cyborg. Co-Authored-By: Wenping Song <songwenping@inspur.com> Co-Authored-By: Brin Zhang <zhangbailin@inspur.com> Implements: blueprint cyborg-rebuild-and-evacuate Change-Id: I147bf4d95e6d86ff1f967a8ce37260730f21d236
* Delete ARQs by UUID if Cyborg ARQ bind fails.Sundar Nadathur2020-07-231-3/+27
| | | | | | | | | | | | | | | | | | | During the reivew of the cyborg series it was noted that in some cases ARQs could be leaked during binding. See https://review.opendev.org/#/c/673735/46/nova/conductor/manager.py@1632 This change adds a delete_arqs_by_uuid function that can delete unbound ARQs by instance uuid. This change modifies build_instances and schedule_and_build_instances to handel the AcceleratorRequestBindingFailed exception raised when binding fails and clean up instance arqs. Co-Authored-By: Wenping Song <songwenping@inspur.com> Closes-Bug: #1872730 Change-Id: I86c2f00e2368fe02211175e7328b2cd9c0ebf41b Blueprint: nova-cyborg-interaction
* Delete ARQs for an instance when the instance is deleted.Sundar Nadathur2020-03-241-0/+15
| | | | | | | | | | | | | | | | | | | | | | | This patch series now works for many VM operations with libvirt: * Creation, deletion of VM instances. * Pause/unpause The following works but is a no-op: * Lock/unlock Hard reboots are taken up in a later patch in this series. Soft reboots work for accelerators unless some unrelated failure forces a hard reboot in the libvirt driver. Suspend is not supported yet. It would fail with this error: libvirtError: Requested operation is not valid: domain has assigned non-USB host devices Shelve is not supported yet. Live migration is not intended to be supported with accelerators now. Change-Id: Icb95890d8f16cad1f7dc18487a48def2f7c9aec2 Blueprint: nova-cyborg-interaction
* Create and bind Cyborg ARQs.Sundar Nadathur2020-03-211-0/+118
| | | | | | | | | | | | | | * Call Cyborg with device profile name to get ARQs (Accelerator Requests). Each ARQ corresponds to a single device profile group, which corrresponds to a single request group in request spec. * Match each ARQ to associated request group, and thereby obtain the corresponding RP for that ARQ. * Call Cyborg to bind the ARQ to that host/device-RP. * When Cyborg sends the ARQ bind notification events, wait for those events with a timeout. Change-Id: I0f8b6bf2b4f4510da6c84fede532533602b6af7f Blueprint: nova-cyborg-interaction
* Add Cyborg device profile groups to request spec.Sundar Nadathur2020-03-211-0/+115
| | | | | | | | | | | Find the name of the device profile, if any, in flavor extra specs. Get its profile groups (equiv to flavor request groups) from Cyborg. Parse/validate them similar to extra_specs. Generate RequestGroup objects and add them to the request spec (in requested_resources field, following precedent). Change-Id: Icd2ee9024dd4af0a7eb105eca14df8e458e9de77 Blueprint: nova-cyborg-interaction
* ksa auth conf and client for Cyborg accessSundar Nadathur2020-03-212-0/+32
Framework for communication with the Cyborg API. - Standard keystoneauth1 config options for setting up authentication in the [cyborg] section of nova*.conf. - A new nova.accelerator.cyborg module containing a get_client method to return a client containing a keystoneauth1 adapter pointing to the Cyborg service with user- and service- based authentication. - Requirements updates to pull in the os-service-types release containing the 'accelerator' service type. Change-Id: Iee0766269d61948ad701911e8b0e5e24d3d6eb04 Blueprint: nova-cyborg-interaction