# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from typing import Type from typing import Union from types import ModuleType from typing import TYPE_CHECKING from libcloud.container.types import Provider from libcloud.common.providers import get_driver as _get_provider_driver from libcloud.common.providers import set_driver as _set_provider_driver if TYPE_CHECKING: # NOTE: This is needed to avoid having setup.py depend on requests from libcloud.container.base import ContainerDriver DRIVERS = { Provider.DUMMY: ('libcloud.container.drivers.dummy', 'DummyContainerDriver'), Provider.DOCKER: ('libcloud.container.drivers.docker', 'DockerContainerDriver'), Provider.JOYENT: ('libcloud.container.drivers.joyent', 'JoyentContainerDriver'), Provider.ECS: ('libcloud.container.drivers.ecs', 'ElasticContainerDriver'), Provider.KUBERNETES: ('libcloud.container.drivers.kubernetes', 'KubernetesContainerDriver'), Provider.LXD: ('libcloud.container.drivers.lxd', 'LXDContainerDriver'), Provider.RANCHER: ('libcloud.container.drivers.rancher', 'RancherContainerDriver'), Provider.GKE: ('libcloud.container.drivers.gke', 'GKEContainerDriver') } def get_driver(provider): # type: (Union[Provider, str]) -> Type[ContainerDriver] return _get_provider_driver(drivers=DRIVERS, provider=provider) def set_driver(provider, module, klass): # type: (Union[Provider, str], ModuleType, type) -> Type[ContainerDriver] return _set_provider_driver(drivers=DRIVERS, provider=provider, module=module, klass=klass)