| # Copyright 2017 Mirantis, Inc. |
| # |
| # Licensed 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 |
| |
| |
| import base64 |
| import ssl |
| |
| from k8sclient.client import api_client |
| from k8sclient.client.apis import apiv_api |
| from k8sclient.client.apis import apisextensionsvbeta_api |
| from k8sclient.client.apis import apisbatchv_api |
| |
| from tcp_tests.managers.k8s.componentstatuses import \ |
| K8sComponentStatusManager |
| from tcp_tests.managers.k8s.daemonsets import K8sDaemonSetManager |
| from tcp_tests.managers.k8s.deployments import K8sDeploymentManager |
| from tcp_tests.managers.k8s.endpoints import K8sEndpointManager |
| from tcp_tests.managers.k8s.events import K8sEventManager |
| from tcp_tests.managers.k8s.horizontalpodautoscalers import \ |
| K8sHorizontalPodAutoscalerManager |
| from tcp_tests.managers.k8s.ingresses import K8sIngressManager |
| from tcp_tests.managers.k8s.jobs import K8sJobManager |
| from tcp_tests.managers.k8s.limitranges import K8sLimitRangeManager |
| from tcp_tests.managers.k8s.namespaces import K8sNamespaceManager |
| from tcp_tests.managers.k8s.nodes import K8sNodeManager |
| from tcp_tests.managers.k8s.persistentvolumeclaims import \ |
| K8sPersistentVolumeClaimManager |
| from tcp_tests.managers.k8s.persistentvolumes import \ |
| K8sPersistentVolumeManager |
| from tcp_tests.managers.k8s.pods import K8sPodManager |
| from tcp_tests.managers.k8s.replicationcontrollers import \ |
| K8sReplicationControllerManager |
| from tcp_tests.managers.k8s.resourcequotas import K8sResourceQuotaManager |
| from tcp_tests.managers.k8s.secrets import K8sSecretManager |
| from tcp_tests.managers.k8s.serviceaccounts import \ |
| K8sServiceAccountManager |
| from tcp_tests.managers.k8s.services import K8sServiceManager |
| from tcp_tests.managers.k8s.replicasets import K8sReplicaSetManager |
| |
| |
| class K8sCluster(object): |
| """docstring for K8sCluster""" |
| |
| def __init__(self, schema="https", user=None, password=None, |
| host='localhost', port='443', default_namespace='default'): |
| if user and password: |
| auth_string = '%s:%s' % (user, password) |
| auth = base64.encodestring(auth_string.encode()).decode()[:-1] |
| auth = "Basic {}".format(auth) |
| self._client = api_client.ApiClient( |
| '{schema}://{host}:{port}'.format( |
| schema=schema, host=host, port=port)) |
| self._client.set_default_header('Authorization', auth) |
| restcli_impl = self._client.RESTClient.IMPL |
| restcli_impl.ssl_pool_manager.connection_pool_kw['cert_reqs'] = \ |
| ssl.CERT_NONE |
| |
| else: |
| self._client = api_client.ApiClient( |
| '{schema}://{host}:{port}'.format( |
| schema=schema, host=host, port=port)) |
| self._api = apiv_api.ApivApi(self._client) |
| self._bapi = apisbatchv_api.ApisbatchvApi(self._client) |
| self._eapi = apisextensionsvbeta_api.ApisextensionsvbetaApi( |
| self._client) |
| self._default_namespace = default_namespace |
| |
| self.nodes = K8sNodeManager(self._api, self._default_namespace) |
| self.pods = K8sPodManager(self._api, self._default_namespace) |
| self.endpoints = K8sEndpointManager(self._api, self._default_namespace) |
| self.namespaces = K8sNamespaceManager(self._api, |
| self._default_namespace) |
| self.services = K8sServiceManager(self._api, self._default_namespace) |
| self.serviceaccounts = K8sServiceAccountManager( |
| self._api, self._default_namespace) |
| self.secrets = K8sSecretManager(self._api, self._default_namespace) |
| self.events = K8sEventManager(self._api, self._default_namespace) |
| self.limitranges = K8sLimitRangeManager(self._api, |
| self._default_namespace) |
| self.jobs = K8sJobManager(self._bapi, self._default_namespace) |
| self.daemonsets = K8sDaemonSetManager(self._eapi, |
| self._default_namespace) |
| self.ingresses = K8sIngressManager(self._eapi, self._default_namespace) |
| self.deployments = K8sDeploymentManager(self._eapi, |
| self._default_namespace) |
| self.horizontalpodautoscalers = K8sHorizontalPodAutoscalerManager( |
| self._eapi, self._default_namespace) |
| self.componentstatuses = K8sComponentStatusManager( |
| self._api, self._default_namespace) |
| self.resourcequotas = K8sResourceQuotaManager( |
| self._api, self._default_namespace) |
| self.replicationcontrollers = K8sReplicationControllerManager( |
| self._api, self._default_namespace) |
| self.pvolumeclaims = K8sPersistentVolumeClaimManager( |
| self._api, self._default_namespace) |
| self.pvolumes = K8sPersistentVolumeManager( |
| self._api, self._default_namespace) |
| self.replicasets = K8sReplicaSetManager( |
| self._eapi, self._default_namespace |
| ) |