2021-11-23 06:09:18 +00:00
|
|
|
# vim: ts=4 et:
|
|
|
|
|
|
|
|
from . import aws # , oci, gcp, azure
|
|
|
|
|
|
|
|
ADAPTERS = {}
|
|
|
|
|
|
|
|
|
|
|
|
def register(*mods):
|
|
|
|
for mod in mods:
|
|
|
|
cloud = mod.__name__.split('.')[-1]
|
|
|
|
if p := mod.register(cloud):
|
|
|
|
ADAPTERS[cloud] = p
|
|
|
|
|
|
|
|
|
|
|
|
register(aws) # , oci, azure, gcp)
|
|
|
|
|
|
|
|
|
|
|
|
# using a credential provider is optional, set across all adapters
|
2021-11-28 23:04:28 +00:00
|
|
|
def set_credential_provider(debug=False):
|
2021-11-23 06:09:18 +00:00
|
|
|
from .identity_broker_client import IdentityBrokerClient
|
2021-11-28 23:04:28 +00:00
|
|
|
cred_provider = IdentityBrokerClient(debug=debug)
|
2021-11-23 06:09:18 +00:00
|
|
|
for adapter in ADAPTERS.values():
|
|
|
|
adapter.cred_provider = cred_provider
|
|
|
|
|
|
|
|
|
|
|
|
### forward to the correct adapter
|
|
|
|
|
|
|
|
def latest_build_image(config):
|
2021-11-28 23:04:28 +00:00
|
|
|
return ADAPTERS[config.cloud].latest_build_image(
|
|
|
|
config.project,
|
|
|
|
config.image_key
|
|
|
|
)
|
2021-11-23 06:09:18 +00:00
|
|
|
|
|
|
|
|
|
|
|
def import_image(config):
|
|
|
|
return ADAPTERS[config.cloud].import_image(config)
|
|
|
|
|
|
|
|
|
2021-11-28 23:04:28 +00:00
|
|
|
def remove_image(config, image_id):
|
|
|
|
return ADAPTERS[config.cloud].remove_image(image_id)
|
2021-11-23 06:09:18 +00:00
|
|
|
|
|
|
|
|
|
|
|
def publish_image(config):
|
|
|
|
return ADAPTERS[config.cloud].publish_image(config)
|