Mini Shell
# 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.
import sys
from libcloud.utils.py3 import httplib
from libcloud.container.base import ContainerImage
from libcloud.container.drivers.kubernetes import KubernetesContainerDriver
from libcloud.test.secrets import CONTAINER_PARAMS_KUBERNETES
from libcloud.test.common.test_kubernetes import KubernetesAuthTestCaseMixin
from libcloud.test.file_fixtures import ContainerFileFixtures
from libcloud.test import MockHttp
from libcloud.test import unittest
class KubernetesContainerDriverTestCase(unittest.TestCase,
KubernetesAuthTestCaseMixin):
driver_cls = KubernetesContainerDriver
def setUp(self):
KubernetesContainerDriver.connectionCls.conn_class = KubernetesMockHttp
KubernetesMockHttp.type = None
KubernetesMockHttp.use_param = 'a'
self.driver = KubernetesContainerDriver(*CONTAINER_PARAMS_KUBERNETES)
def test_list_containers(self):
containers = self.driver.list_containers()
self.assertEqual(len(containers), 1)
self.assertEqual(containers[0].id,
'docker://3c48b5cda79bce4c8866f02a3b96a024edb8f660d10e7d1755e9ced49ef47b36')
self.assertEqual(containers[0].name, 'hello-world')
def test_list_clusters(self):
clusters = self.driver.list_clusters()
self.assertEqual(len(clusters), 2)
self.assertEqual(clusters[0].id,
'default')
self.assertEqual(clusters[0].name, 'default')
def test_get_cluster(self):
cluster = self.driver.get_cluster('default')
self.assertEqual(cluster.id,
'default')
self.assertEqual(cluster.name, 'default')
def test_create_cluster(self):
cluster = self.driver.create_cluster('test')
self.assertEqual(cluster.id,
'test')
self.assertEqual(cluster.name, 'test')
def test_destroy_cluster(self):
cluster = self.driver.get_cluster('default')
result = self.driver.destroy_cluster(cluster)
self.assertTrue(result)
def test_deploy_container(self):
image = ContainerImage(
id=None,
name='hello-world',
path=None,
driver=self.driver,
version=None
)
container = self.driver.deploy_container('hello-world', image=image)
self.assertEqual(container.name, 'hello-world')
def test_get_container(self):
container = self.driver.get_container('docker://3c48b5cda79bce4c8866f02a3b96a024edb8f660d10e7d1755e9ced49ef47b36')
assert container.id == 'docker://3c48b5cda79bce4c8866f02a3b96a024edb8f660d10e7d1755e9ced49ef47b36'
class KubernetesMockHttp(MockHttp):
fixtures = ContainerFileFixtures('kubernetes')
def _api_v1_pods(
self, method, url, body, headers):
if method == 'GET':
body = self.fixtures.load('_api_v1_pods.json')
else:
raise AssertionError('Unsupported method')
return (httplib.OK, body, {}, httplib.responses[httplib.OK])
def _api_v1_namespaces(
self, method, url, body, headers):
if method == 'GET':
body = self.fixtures.load('_api_v1_namespaces.json')
elif method == 'POST':
body = self.fixtures.load('_api_v1_namespaces_test.json')
else:
raise AssertionError('Unsupported method')
return (httplib.OK, body, {}, httplib.responses[httplib.OK])
def _api_v1_namespaces_default(
self, method, url, body, headers):
if method == 'GET':
body = self.fixtures.load('_api_v1_namespaces_default.json')
elif method == 'DELETE':
body = self.fixtures.load('_api_v1_namespaces_default_DELETE.json')
else:
raise AssertionError('Unsupported method')
return (httplib.OK, body, {}, httplib.responses[httplib.OK])
def _api_v1_namespaces_default_pods(
self, method, url, body, headers):
if method == 'GET':
body = self.fixtures.load('_api_v1_namespaces_default_pods.json')
elif method == 'POST':
body = self.fixtures.load('_api_v1_namespaces_default_pods_POST.json')
else:
raise AssertionError('Unsupported method')
return (httplib.OK, body, {}, httplib.responses[httplib.OK])
if __name__ == '__main__':
sys.exit(unittest.main())
Zerion Mini Shell 1.0