def _run_main(self, parsed_args, parsed_globals): client = EKSClient(self._session, parsed_args.name, parsed_args.role_arn, parsed_globals) new_cluster_dict = client.get_cluster_entry() new_user_dict = client.get_user_entry() config_selector = KubeconfigSelector(os.environ.get("KUBECONFIG", ""), parsed_args.kubeconfig) config = config_selector.choose_kubeconfig(new_cluster_dict["name"]) updating_existing = config.has_cluster(new_cluster_dict["name"]) appender = KubeconfigAppender() new_context_dict = appender.insert_cluster_user_pair( config, new_cluster_dict, new_user_dict, parsed_args.alias) if parsed_args.dry_run: uni_print(config.dump_content()) else: writer = KubeconfigWriter() writer.write_kubeconfig(config) if updating_existing: uni_print("Updated context {0} in {1}\n".format( new_context_dict["name"], config.path)) else: uni_print("Added new context {0} to {1}\n".format( new_context_dict["name"], config.path)) if parsed_args.verbose: self._display_entries( [new_context_dict, new_user_dict, new_cluster_dict])
def _run_main(self, parsed_args, parsed_globals): client = EKSClient(self._session, parsed_args.name, parsed_args.role_arn, parsed_globals) new_cluster_dict = client.get_cluster_entry() new_user_dict = client.get_user_entry() config_selector = KubeconfigSelector( os.environ.get("KUBECONFIG", ""), parsed_args.kubeconfig ) config = config_selector.choose_kubeconfig( new_cluster_dict["name"] ) updating_existing = config.has_cluster(new_cluster_dict["name"]) appender = KubeconfigAppender() new_context_dict = appender.insert_cluster_user_pair(config, new_cluster_dict, new_user_dict, parsed_args.alias) if parsed_args.dry_run: uni_print(config.dump_content()) else: writer = KubeconfigWriter() writer.write_kubeconfig(config) if updating_existing: uni_print("Updated context {0} in {1}\n".format( new_context_dict["name"], config.path )) else: uni_print("Added new context {0} to {1}\n".format( new_context_dict["name"], config.path )) if parsed_args.verbose: self._display_entries([ new_context_dict, new_user_dict, new_cluster_dict ]) warn_of_missing_dependencies()
def setUp(self): self._appender = KubeconfigAppender()
class TestKubeconfigAppender(unittest.TestCase): def setUp(self): self._appender = KubeconfigAppender() def test_basic_insert(self): initial = OrderedDict([ ("apiVersion", "v1"), ("clusters", [ OrderedDict([ ("cluster", OrderedDict([ ("certificate-authority-data", "data1"), ("server", "endpoint1") ])), ("name", "oldclustername") ]) ]), ("contexts", []), ("current-context", "simple"), ("kind", "Config"), ("preferences", OrderedDict()), ("users", []) ]) cluster = OrderedDict([ ("cluster", OrderedDict([ ("certificate-authority-data", "data2"), ("server", "endpoint2") ])), ("name", "clustername") ]) cluster_added_correct = OrderedDict([ ("apiVersion", "v1"), ("clusters", [ OrderedDict([ ("cluster", OrderedDict([ ("certificate-authority-data", "data1"), ("server", "endpoint1") ])), ("name", "oldclustername") ]), OrderedDict([ ("cluster", OrderedDict([ ("certificate-authority-data", "data2"), ("server", "endpoint2") ])), ("name", "clustername") ]) ]), ("contexts", []), ("current-context", "simple"), ("kind", "Config"), ("preferences", OrderedDict()), ("users", []) ]) cluster_added = self._appender.insert_entry(Kubeconfig(None, initial), "clusters", cluster) self.assertDictEqual(cluster_added.content, cluster_added_correct) def test_update_existing(self): initial = OrderedDict([ ("apiVersion", "v1"), ("clusters", [ OrderedDict([ ("cluster", OrderedDict([ ("server", "endpoint") ])), ("name", "clustername") ]) ]), ("contexts", []), ("current-context", None), ("kind", "Config"), ("preferences", OrderedDict()), ("users", []) ]) cluster = OrderedDict([ ("cluster", OrderedDict([ ("certificate-authority-data", "data"), ("server", "endpoint") ])), ("name", "clustername") ]) correct = OrderedDict([ ("apiVersion", "v1"), ("clusters", [ OrderedDict([ ("cluster", OrderedDict([ ("certificate-authority-data", "data"), ("server", "endpoint") ])), ("name", "clustername") ]) ]), ("contexts", []), ("current-context", None), ("kind", "Config"), ("preferences", OrderedDict()), ("users", []) ]) updated = self._appender.insert_entry(Kubeconfig(None, initial), "clusters", cluster) self.assertDictEqual(updated.content, correct) def test_key_not_exist(self): initial = OrderedDict([ ("apiVersion", "v1"), ("contexts", []), ("current-context", None), ("kind", "Config"), ("preferences", OrderedDict()), ("users", []) ]) cluster = OrderedDict([ ("cluster", OrderedDict([ ("certificate-authority-data", "data"), ("server", "endpoint") ])), ("name", "clustername") ]) correct = OrderedDict([ ("apiVersion", "v1"), ("contexts", []), ("current-context", None), ("kind", "Config"), ("preferences", OrderedDict()), ("users", []), ("clusters", [ OrderedDict([ ("cluster", OrderedDict([ ("certificate-authority-data", "data"), ("server", "endpoint") ])), ("name", "clustername") ]) ]) ]) updated = self._appender.insert_entry(Kubeconfig(None, initial), "clusters", cluster) self.assertDictEqual(updated.content, correct) def test_key_not_array(self): initial = OrderedDict([ ("apiVersion", "v1"), ("contexts", []), ("current-context", None), ("kind", "Config"), ("preferences", OrderedDict()), ("users", []) ]) cluster = OrderedDict([ ("cluster", OrderedDict([ ("certificate-authority-data", "data"), ("server", "endpoint") ])), ("name", "clustername") ]) self.assertRaises(KubeconfigError, self._appender.insert_entry, Kubeconfig(None, initial), "kind", cluster) def test_make_context(self): cluster = OrderedDict([ ("name", "clustername"), ("cluster", OrderedDict()) ]) user = OrderedDict([ ("name", "username"), ("user", OrderedDict()) ]) context_correct = OrderedDict([ ("context", OrderedDict([ ("cluster", "clustername"), ("user", "username") ])), ("name", "username") ]) context = self._appender._make_context(cluster, user) self.assertDictEqual(context, context_correct) def test_make_context_alias(self): cluster = OrderedDict([ ("name", "clustername"), ("cluster", OrderedDict()) ]) user = OrderedDict([ ("name", "username"), ("user", OrderedDict()) ]) context_correct = OrderedDict([ ("context", OrderedDict([ ("cluster", "clustername"), ("user", "username") ])), ("name", "alias") ]) alias = "alias" context = self._appender._make_context(cluster, user, alias=alias) self.assertDictEqual(context, context_correct)