Skip to content

Commit ed775bb

Browse files
authored
Added proxy-url option to eks update-kubeconfig (aws#7623)
1 parent 25efd61 commit ed775bb

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

awscli/customizations/eks/update_kubeconfig.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@ class UpdateKubeconfigCommand(BasicCommand):
7777
"connect to the cluster the first time."),
7878
'required': False
7979
},
80+
{
81+
'name': 'proxy-url',
82+
'help_text': ("Optionally specify a proxy url to route "
83+
"traffic via when connecting to a cluster."),
84+
'required': False
85+
},
8086
{
8187
'name': 'dry-run',
8288
'action': 'store_true',
@@ -305,14 +311,19 @@ def get_cluster_entry(self):
305311
endpoint = self.cluster_description.get("endpoint")
306312
arn = self.cluster_description.get("arn")
307313

308-
return OrderedDict([
314+
generated_cluster = OrderedDict([
309315
("cluster", OrderedDict([
310316
("certificate-authority-data", cert_data),
311317
("server", endpoint)
312318
])),
313319
("name", arn)
314320
])
315321

322+
if self._parsed_args.proxy_url is not None:
323+
generated_cluster["cluster"]["proxy-url"] = self._parsed_args.proxy_url
324+
325+
return generated_cluster
326+
316327
def get_user_entry(self, user_alias=None):
317328
"""
318329
Return a user entry generated using

tests/unit/customizations/eks/test_update_kubeconfig.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ def setUp(self):
167167
])),
168168
("name", describe_cluster_response()["cluster"]["arn"])
169169
])
170+
170171
self._correct_user_entry = OrderedDict([
171172
("name", describe_cluster_response()["cluster"]["arn"]),
172173
("user", OrderedDict([
@@ -217,7 +218,7 @@ def setUp(self):
217218
self._session.create_client.return_value = self._mock_client
218219
self._session.profile = None
219220

220-
self._client = EKSClient(self._session, parsed_args=Namespace(cluster_name="ExampleCluster", role_arn=None))
221+
self._client = EKSClient(self._session, parsed_args=Namespace(cluster_name="ExampleCluster", role_arn=None, proxy_url=None))
221222

222223
def test_get_cluster_description(self):
223224
self.assertEqual(self._client.cluster_description,
@@ -245,6 +246,27 @@ def test_get_cluster_entry(self):
245246
)
246247
self._session.create_client.assert_called_once_with("eks")
247248

249+
def test_get_cluster_entry_with_proxy_url_passed(self):
250+
proxy_url = "https://myproxy.com"
251+
correct_cluster_entry_with_proxy_url = OrderedDict([
252+
("cluster", OrderedDict([
253+
("certificate-authority-data", describe_cluster_response()\
254+
["cluster"]["certificateAuthority"]["data"]),
255+
("server", describe_cluster_response()["cluster"]["endpoint"]),
256+
("proxy-url", proxy_url)
257+
])),
258+
("name", describe_cluster_response()["cluster"]["arn"])
259+
])
260+
client = EKSClient(self._session, parsed_args=Namespace(cluster_name="ProxiedCluster",
261+
role_arn=None,
262+
proxy_url=proxy_url))
263+
self.assertEqual(client.get_cluster_entry(),
264+
correct_cluster_entry_with_proxy_url)
265+
self._mock_client.describe_cluster.assert_called_once_with(
266+
name="ProxiedCluster"
267+
)
268+
self._session.create_client.assert_called_once_with("eks")
269+
248270
def test_get_user_entry(self):
249271
self.assertEqual(self._client.get_user_entry(),
250272
self._correct_user_entry)

0 commit comments

Comments
 (0)