-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathclient.py
More file actions
66 lines (51 loc) · 1.9 KB
/
Copy pathclient.py
File metadata and controls
66 lines (51 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
"""helper to setup OpenStack clients."""
# attempt to prevent re-export
import os as _os
import sys as _sys
from importlib import metadata as _meta
from ironicclient.client import Client as IronicClient
from ironicclient.client import get_client as _get_ironic_client
from keystoneauth1.session import Session
from openstack import config as _os_config
from openstack.connection import Connection
try:
_pkg_ver = _meta.version(str(__package__).split(".")[0])
except Exception:
_pkg_ver = "dev"
try:
_prog_name = _os.path.basename(_sys.argv[0]) or "local"
except Exception:
_prog_name = "local"
def _get_os_cloud_region(cloud=None, region_name=""):
"""Returns a keystoneauth1 Session based on our clouds.yaml."""
return _os_config.get_cloud_region(
load_yaml_config=True,
load_envvars=True,
app_name=_prog_name,
app_version=_pkg_ver,
cloud=cloud,
region_name=region_name,
)
def get_session(cloud=None, region_name="") -> Session:
"""Returns a keystoneauth1 Session based on our clouds.yaml."""
return _get_os_cloud_region(cloud, region_name).get_session()
def get_openstack_client(cloud=None, region_name="") -> Connection:
"""Returns an OpenStackSDK Connection based on our clouds.yaml."""
cloud_region = _get_os_cloud_region(cloud, region_name)
return Connection(config=cloud_region)
def get_ironic_client(cloud=None, region_name="") -> IronicClient: # type: ignore
"""Returns our Ironic Client wrapper configured from our clouds.yaml."""
cloud_region = _get_os_cloud_region(cloud, region_name)
client = _get_ironic_client(
api_version="1",
session=cloud_region.get_session(),
os_ironic_api_version="latest",
region_name=cloud_region.region_name,
)
client.negotiate_api_version()
return client
__all__ = [
"get_ironic_client",
"get_openstack_client",
"get_session",
]