From 199a875131f02bec6a51dd56fef9600dabd62346 Mon Sep 17 00:00:00 2001
From: Hyeonki Hong <hhk7734@gmail.com>
Date: Mon, 14 Apr 2025 18:43:59 +0900
Subject: [PATCH 1/2] test: add cases for current-context handling in different
 file

---
 kubernetes/base/config/kube_config_test.py | 45 ++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/kubernetes/base/config/kube_config_test.py b/kubernetes/base/config/kube_config_test.py
index ca512ad6c..752bc23ea 100644
--- a/kubernetes/base/config/kube_config_test.py
+++ b/kubernetes/base/config/kube_config_test.py
@@ -1842,6 +1842,38 @@ class TestKubeConfigMerger(BaseTestCase):
             },
         ]
     }]
+    TEST_KUBE_CONFIG_SET3 = [{
+        "current-context": "",
+        "contexts": [
+            {
+                "name": "context1",
+                "context": {
+                    "cluster": "cluster1"
+                }
+            },
+            {
+                "name": "context2",
+                "context": {
+                    "cluster": "cluster2"
+                }
+            },
+        ],
+        "clusters": [
+            {
+                "name": "cluster1",
+                "cluster": {
+                    "server": TEST_HOST
+                }
+            },
+            {
+                "name": "cluster2",
+                "cluster": {
+                    "server": TEST_HOST
+                }
+            },
+        ],
+        "users": []
+    }]
 
     def _create_multi_config(self, parts):
         files = []
@@ -1892,6 +1924,19 @@ def test_merge_with_context_in_different_file(self):
         self.assertEqual(BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
                          client.configuration.api_key['authorization'])
 
+    def test_current_context_in_different_file(self):
+        cases = [
+            ([{"current-context": "context1"}] + self.TEST_KUBE_CONFIG_SET3, 'context1'),
+            (self.TEST_KUBE_CONFIG_SET3 + [{"current-context": "context2"}], 'context2'),
+            ([{}, {"current-context": "context2"}] + self.TEST_KUBE_CONFIG_SET3, 'context2'),
+            ([{"current-context": "context1"}, {"current-context": "context2"}] + self.TEST_KUBE_CONFIG_SET3, 'context1'),
+        ]
+
+        for kube_config_set, expected_current_context_name in cases:
+            kubeconfigs = self._create_multi_config(kube_config_set)
+            _, current_context = list_kube_config_contexts(config_file=kubeconfigs)
+            self.assertEqual(current_context["name"], expected_current_context_name)
+
     def test_save_changes(self):
         kubeconfigs = self._create_multi_config(self.TEST_KUBE_CONFIG_SET1)
 

From 1fc0770b98472f5beeaaa8219402e1511885010b Mon Sep 17 00:00:00 2001
From: Hyeonki Hong <hhk7734@gmail.com>
Date: Mon, 14 Apr 2025 18:45:08 +0900
Subject: [PATCH 2/2] fix: prioritize current-context based on file order

---
 kubernetes/base/config/kube_config.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kubernetes/base/config/kube_config.py b/kubernetes/base/config/kube_config.py
index 7077955ca..5ccea7e2d 100644
--- a/kubernetes/base/config/kube_config.py
+++ b/kubernetes/base/config/kube_config.py
@@ -728,7 +728,7 @@ def load_config(self, path):
         for item in ('clusters', 'contexts', 'users'):
             self._merge(item, config.get(item, []) or [], path)
 
-        if 'current-context' in config:
+        if 'current-context' in config and ('current-context' not in self.config_merged or self.config_merged.value['current-context'] == ""):
             self.config_merged.value['current-context'] = config['current-context']
 
         self.config_files[path] = config