Add typing hits to Nova client

Change-Id: Ib2d5167e45d4593d1d1b9bea68bf22d0e9c6df3d
This commit is contained in:
Federico Ressi 2022-01-27 14:04:48 +01:00
parent 917db378b3
commit c41e2507a1

View File

@ -19,6 +19,8 @@ import typing
import novaclient import novaclient
import novaclient.exceptions import novaclient.exceptions
import novaclient.v2.client import novaclient.v2.client
import novaclient.v2.servers
import novaclient.v2.hypervisors
from oslo_log import log from oslo_log import log
import tobiko import tobiko
@ -30,6 +32,7 @@ LOG = log.getLogger(__name__)
CLIENT_CLASSES = (novaclient.v2.client.Client,) CLIENT_CLASSES = (novaclient.v2.client.Client,)
NovaClient = typing.Union[novaclient.v2.client.Client] NovaClient = typing.Union[novaclient.v2.client.Client]
NovaServer = typing.Union[novaclient.v2.servers.Server] NovaServer = typing.Union[novaclient.v2.servers.Server]
NovaHypervisor = typing.Union[novaclient.v2.hypervisors.Hypervisor]
class NovaClientFixture(_client.OpenstackClientFixture): class NovaClientFixture(_client.OpenstackClientFixture):
@ -77,13 +80,15 @@ def get_nova_client(session=None, shared=True, init_client=None,
return client.client return client.client
def list_hypervisors(client: NovaClientType = None, detailed=True, **params): def list_hypervisors(client: NovaClientType = None, detailed=True, **params) \
-> tobiko.Selection[NovaHypervisor]:
client = nova_client(client) client = nova_client(client)
hypervisors = client.hypervisors.list(detailed=detailed) hypervisors = client.hypervisors.list(detailed=detailed)
return tobiko.select(hypervisors).with_attributes(**params) return tobiko.select(hypervisors).with_attributes(**params)
def find_hypervisor(client: NovaClientType = None, unique=False, **params): def find_hypervisor(client: NovaClientType = None, unique=False, **params) \
-> NovaHypervisor:
hypervisors = list_hypervisors(client=client, **params) hypervisors = list_hypervisors(client=client, **params)
if unique: if unique:
return hypervisors.unique return hypervisors.unique