def __call__(self, pl): pl.debug('Running powerline-kubernetes') self.pl = pl try: context = K8sConfig().current_context namespace = K8sConfig().namespace except Exception as e: pl.error(e) return return self.build_segments(context,namespace)
def test_init_api_host_valid_hostname_no_port(self): host = "yo-mama.com" config = K8sConfig( kubeconfig=None, api_host=host ) self.assertIn(host, config.api_host)
def test_get_by_name_nonexistent(self): name = "yopod-{0}".format(str(uuid.uuid4())) config = K8sConfig(kubeconfig=_utils.kubeconfig_fallback) if _utils.is_reachable(config): pods = K8sPod.get_by_name(config=config, name=name) self.assertIsInstance(pods, list) self.assertEqual(0, len(pods))
def test_init_with_test_kubeconfig(self): config = K8sConfig(kubeconfig=_utils.kubeconfig_fallback) self.assertIsNotNone(config) self.assertIsInstance(config, K8sConfig) if config.api_host is not None: self.assertIsInstance(config.api_host, str) if config.auth is not None: self.assertIsInstance(config.auth, tuple) if config.ca_cert is not None: self.assertIsInstance(config.ca_cert, str) if config.ca_cert_data is not None: self.assertIsInstance(config.ca_cert_data, str) if config.cert is not None: self.assertIsInstance(config.cert, tuple) if config.client_certificate is not None: self.assertIsInstance(config.client_certificate, str) if config.client_key is not None: self.assertIsInstance(config.client_key, str) if config.clusters is not None: self.assertIsInstance(config.clusters, list) if config.contexts is not None: self.assertIsInstance(config.contexts, list) if config.current_context is not None: self.assertIsInstance(config.current_context, str) if config.preferences is not None: self.assertIsInstance(config.preferences, dict) if config.pull_secret is not None: self.assertIsInstance(config.pull_secret, str) if config.users is not None: self.assertIsInstance(config.users, list) if config.version is not None: self.assertIsInstance(config.version, str)
def test_init_version(self): v = "v1" config = K8sConfig( kubeconfig=None, version=v ) self.assertEqual(v, config.version)
def test_init_token(self): token = "yomama" config = K8sConfig( kubeconfig=None, token=token ) self.assertEqual(token, config.token)
def test_init_with_config_and_pull_secrets(self): ps = [{'name': 'yomama'}] name = "sofat" cfg = K8sConfig(kubeconfig=utils.kubeconfig_fallback, pull_secret=ps) pod = utils.create_pod(config=cfg, name=name) self.assertIsNotNone(pod.config) self.assertEqual(ps, pod.config.pull_secret)
def test_init_pull_secret(self): ps = [{'name': "yomama"}] config = K8sConfig( kubeconfig=None, pull_secret=ps ) self.assertEqual(config.pull_secret, ps)
def test_init_namespace(self): namespace = "yomama" config = K8sConfig( kubeconfig=None, namespace=namespace ) self.assertEqual(namespace, config.namespace)
def test_init_auth(self): auth = ("yo", "mama") config = K8sConfig( kubeconfig=None, auth=auth ) self.assertEqual(auth, config.auth)
def test_get_by_labels_nonexistent(self): name = "yopod-{0}".format(str(uuid.uuid4())) config = K8sConfig(kubeconfig=utils.kubeconfig_fallback) if utils.is_reachable(config.api_host): pods = K8sPod.get_by_labels(config=config, labels={'name': name}) self.assertIsInstance(pods, list) self.assertEqual(0, len(pods))
def test_init_valid_ip_no_port(self): host = "192.168.99.100" config = K8sConfig( kubeconfig=None, api_host=host ) self.assertIn(host, config.api_host)
def test_init_api_host_invalid_hostname(self): try: K8sConfig( kubeconfig=None, api_host="yo_mama:1234" ) except Exception as err: self.assertIsInstance(err, SyntaxError)
def test_object_pod_create_unprocessable(self): config = K8sConfig(kubeconfig=_utils.kubeconfig_fallback) ot = "Pod" name = "yomama-{}".format(str(uuid.uuid4())) if config is not None and _utils.is_reachable(config): obj = _utils.create_object(config=config, name=name, obj_type=ot) with self.assertRaises(UnprocessableEntityException): obj.create()
def test_object_secret_update(self): config = K8sConfig(kubeconfig=utils.kubeconfig_fallback) ot = "Secret" name = "yomama-{}".format(str(uuid.uuid4())) obj = utils.create_object(config=config, name=name, obj_type=ot) if config.api_host is not None and utils.is_reachable(config.api_host): obj.create() obj.update()
def test_init_api_host_invalid_ip_address(self): try: K8sConfig( kubeconfig=None, api_host="192671.62671283.735.23322:1234" ) except Exception as err: self.assertIsInstance(err, SyntaxError)
def test_object_rc_delete_not_found(self): config = K8sConfig(kubeconfig=_utils.kubeconfig_fallback) if config is not None and _utils.is_reachable(config): ot = "ReplicationController" name = "yomama-{}".format(str(uuid.uuid4())) obj = _utils.create_object(config=config, name=name, obj_type=ot) with self.assertRaises(NotFoundException): obj.delete()
def test_object_secret_create(self): config = K8sConfig(kubeconfig=_utils.kubeconfig_fallback) if config is not None and _utils.is_reachable(config): ot = "Secret" name = "yomama-{}".format(str(uuid.uuid4())) obj = _utils.create_object(config=config, name=name, obj_type=ot) obj.create() self.assertIsInstance(obj, K8sObject)
def test_object_service_create_unprocessable(self): config = K8sConfig(kubeconfig=utils.kubeconfig_fallback) if config.api_host is not None and utils.is_reachable(config.api_host): ot = "Service" name = "yomama-{}".format(str(uuid.uuid4())) obj = utils.create_object(config=config, name=name, obj_type=ot) with self.assertRaises(UnprocessableEntityException): obj.create()
def test_init_invalid_version(self): try: K8sConfig( kubeconfig=None, version="yomama" ) except Exception as err: self.assertIsInstance(err, SyntaxError)
def test_object_secret_get_model_doesnt_exist(self): config = K8sConfig(kubeconfig=utils.kubeconfig_fallback) if config.api_host is not None and utils.is_reachable(config.api_host): ot = "Secret" name = "yomama-{}".format(str(uuid.uuid4())) obj = utils.create_object(config=config, name=name, obj_type=ot) with self.assertRaises(NotFoundException): obj.get_model()
def test_object_service_delete_not_found(self): config = K8sConfig(kubeconfig=utils.kubeconfig_fallback) ot = "Service" name = "yomama-{}".format(str(uuid.uuid4())) if config.api_host is not None and utils.is_reachable(config.api_host): obj = utils.create_object(config=config, name=name, obj_type=ot) with self.assertRaises(NotFoundException): obj.delete()
def test_object_rc_list_from_scratch(self): config = K8sConfig(kubeconfig=utils.kubeconfig_fallback) if config.api_host is not None and utils.is_reachable(config.api_host): ot = "ReplicationController" name = "yomama-{}".format(str(uuid.uuid4())) obj = utils.create_object(config=config, name=name, obj_type=ot) r = obj.list() self.assertIsNotNone(r) self.assertEqual(0, len(r))
def test_init_invalid_auth(self): auth = "yomama" try: K8sConfig( kubeconfig=None, auth=auth ) except Exception as err: self.assertIsInstance(err, SyntaxError)
def test_init_invalid_namespace(self): namespace = 666 try: K8sConfig( kubeconfig=None, namespace=namespace ) except Exception as err: self.assertIsInstance(err, SyntaxError)
def test_init_invalid_pull_secret(self): ps = 666 try: K8sConfig( kubeconfig=None, pull_secret=ps ) except Exception as err: self.assertIsInstance(err, SyntaxError)
def test_init_invalid_token(self): token = 666 try: K8sConfig( kubeconfig=None, token=token ) except Exception as err: self.assertIsInstance(err, SyntaxError)
def test_server_version_no_kubeconfig(self): api_host = "127.0.0.1:8001" cfg = K8sConfig(kubeconfig=None, api_host=api_host) if _utils.is_reachable(cfg.api_host): container = _utils.create_container(name="nginx", image="nginx:latest") cj = _utils.create_cronjob(config=cfg, name="test") cj.add_container(container) cj.create() self.assertIsInstance(cj, K8sCronJob)
def test_object_pod_list_from_scratch(self): config = K8sConfig(kubeconfig=_utils.kubeconfig_fallback) if _utils.is_reachable(config): ot = "Pod" name = "yomama-{}".format(str(uuid.uuid4())) obj = _utils.create_object(config=config, name=name, obj_type=ot) r = obj.list() self.assertIsNotNone(r) self.assertEqual(0, len(r))
def test_object_get_with_params_nonexistent(self): config = K8sConfig(kubeconfig=utils.kubeconfig_fallback) if config.api_host is not None and utils.is_reachable(config.api_host): ot = "Pod" name = "yomama-{}".format(str(uuid.uuid4())) obj = utils.create_object(config=config, name=name, obj_type=ot) data = {'yokey': 'yovalue'} r = obj.get_with_params(data) self.assertIsNotNone(r) self.assertEqual(0, len(r))