VERIFIED
kubernetes-client__python-1933
VERIFIED on first verdict
1 attempt, 0 appeals. 1 file, 4 added and 0 removed lines. Tokens: 1,236,188 tokens. Model cost: $0.08. Sandbox time: 2 min 21 s.
The plan
- Repository
- kubernetes-client/python
- Base commit
- 045b189 (image tag)
- Issue
- Client doesn't honor tls-server-name setting in kubeconfig **What happened (please include outputs or screenshots)**: Tried to connect to my cluster with a utility that uses your library. As far as I can tell, the utility's code is correct and the k8s-client python code does not honor the tls-server-name and propagate it down the stack to urllib3. Received this exception:
- Files to edit
kubernetes/base/config/kube_config.py
- Approach
- 1. Find where Configuration object is instantiated from kubeconfig 2. Add tls-server-name extraction from config/context 3. Pass it to Configuration.assert_hostname or equivalent parameter
Attempt 1
VERIFIEDAgent branch
| Kind | Command | Exit | Duration | Digest |
|---|---|---|---|---|
| command | git ls-files -zexact commandgit ls-files -z | 0 | 0.004s | 1f789e07 |
| command | grep -n "tls-server-name\|tls_server_name\|TEST_TLS" kubernetes/base/config/kube_config_test.pyexact commandgrep -n "tls-server-name\|tls_server_name\|TEST_TLS" kubernetes/base/config/kube_config_test.py | 0 | 0.004s | e08d6b4c |
| command | grep -n "class FakeConfig" kubernetes/base/config/kube_config_test.pyexact commandgrep -n "class FakeConfig" kubernetes/base/config/kube_config_test.py | 0 | 0.003s | 1991d45f |
| command | grep -rn "tls_server_name\|tls-server-name" kubernetes/client/configuration.py 2>/dev/null || grep -rn "tls_server_name\|tls-server-name" kubernetes/client/ 2>/dev/null | head -30exact commandgrep -rn "tls_server_name\|tls-server-name" kubernetes/client/configuration.py 2>/dev/null || grep -rn "tls_server_name\|tls-server-name" kubernetes/client/ 2>/dev/null | head -30 | 0 | 0.034s | ffcbb4ad |
| command | find /python -name "configuration.py" 2>/dev/nullexact commandfind /python -name "configuration.py" 2>/dev/null | 0 | 0.007s | e80201df |
| command | grep -n "tls_server_name\|tls-server-name\|assert_hostname" /python/kubernetes/client/configuration.pyexact commandgrep -n "tls_server_name\|tls-server-name\|assert_hostname" /python/kubernetes/client/configuration.py | 0 | 0.003s | b0a173ef |
| command | ls -la /python/kubernetes/client/configuration.pyexact commandls -la /python/kubernetes/client/configuration.py | 0 | 0.004s | 39ba60cb |
| command | cat /python/kubernetes/client/configuration.py | head -200exact commandcat /python/kubernetes/client/configuration.py | head -200 | 0 | 0.004s | 01efc39f |
show all 38 steps
| Kind | Command | Exit | Duration | Digest |
|---|---|---|---|---|
| command | grep -n "assert_hostname" /python/kubernetes/client/rest.pyexact commandgrep -n "assert_hostname" /python/kubernetes/client/rest.py | 0 | 0.004s | d6ef585d |
| command | cat /python/kubernetes/client/rest.py | head -100exact commandcat /python/kubernetes/client/rest.py | head -100 | 0 | 0.004s | 60c2694b |
| command | cd /python && python -m pytest kubernetes/base/config/kube_config_test.py::TestKubeConfigLoader::test_tls_server_name -v 2>&1exact commandcd /python && python -m pytest kubernetes/base/config/kube_config_test.py::TestKubeConfigLoader::test_tls_server_name -v 2>&1 | 1 | 1.231s | daf8244f |
| command | grep -n "TEST_KUBE_CONFIG" /python/kubernetes/base/config/kube_config_test.py | head -5exact commandgrep -n "TEST_KUBE_CONFIG" /python/kubernetes/base/config/kube_config_test.py | head -5 | 0 | 0.004s | 50d0d35f |
| command | grep -n "tls-server-name" /python/kubernetes/base/config/kube_config_test.pyexact commandgrep -n "tls-server-name" /python/kubernetes/base/config/kube_config_test.py | 0 | 0.003s | 1671d6d4 |
| write | write kubernetes/base/config/kube_config.pyexact command/opt/receipts-06b2003eccf04237a96f5798a3395a24/bin/busybox sh -c 'mkdir -p /python/kubernetes/base/config && cp /opt/receipts-06b2003eccf04237a96f5798a3395a24/incoming/0745aa48550b46a053a26ba42149bc40736b72984fc2760eaa26a6342dc4d9bb /python/kubernetes/base/config/kube_config.py' | 0 | 0.005s | 1d71d378 |
| write | write kubernetes/base/config/kube_config.pyexact command/opt/receipts-3a123167546e42c3bde552ada09b6012/bin/busybox sh -c 'mkdir -p /python/kubernetes/base/config && cp /opt/receipts-3a123167546e42c3bde552ada09b6012/incoming/9b99adca00d93a2bf0c6afa25a31524e8fff56ab9f8b7d75e8deb94582254c43 /python/kubernetes/base/config/kube_config.py' | 0 | 0.004s | 69c6bd98 |
| command | cd /python && python -m pytest kubernetes/base/config/kube_config_test.py::TestKubeConfigLoader::test_tls_server_name -v 2>&1exact commandcd /python && python -m pytest kubernetes/base/config/kube_config_test.py::TestKubeConfigLoader::test_tls_server_name -v 2>&1 | 1 | 0.567s | e219d3f1 |
| command | cd /python && python -c "
from kubernetes.base.config.kube_config import KubeConfigLoader
from kubernetes.client import Configuration
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
actual = Configuration()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
print('actual.__dict__:', actual.__dict__)
print('assert_hostname:', actual.assert_hostname)
"exact commandcd /python && python -c "
from kubernetes.base.config.kube_config import KubeConfigLoader
from kubernetes.client import Configuration
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
actual = Configuration()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
print('actual.__dict__:', actual.__dict__)
print('assert_hostname:', actual.assert_hostname)
" | 0 | 0.340s | aff64feb |
| command | cd /python && python -c "
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
from kubernetes.base.config.kube_config import KubeConfigLoader
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
print('expected.__dict__:', {k: v for k, v in expected.__dict__.items() if not k.startswith('_')})
print('actual.__dict__:', {k: v for k, v in actual.__dict__.items() if not k.startswith('_')})
print()
print('expected keys:', list(expected.__dict__.keys()))
print('actual keys:', list(actual.__dict__.keys()))
print()
# Compare
for k in expected.__dict__:
if k in actual.__dict__:
ev, av = expected.__dict__[k], actual.__dict__[k]
if k in FakeConfig.FILE_KEYS:
try:
with open(ev) as f1, open(av) as f2:
match = f1.read() == f2.read()
print(f'{k}: file comparison={match}')
except IOError:
print(f'{k}: filenames equal={ev == av}')
else:
print(f'{k}: expected={ev!r}, actual={av!r}, match={ev == av}')
else:
print(f'{k}: missing from actual')
"exact commandcd /python && python -c "
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
from kubernetes.base.config.kube_config import KubeConfigLoader
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
print('expected.__dict__:', {k: v for k, v in expected.__dict__.items() if not k.startswith('_')})
print('actual.__dict__:', {k: v for k, v in actual.__dict__.items() if not k.startswith('_')})
print()
print('expected keys:', list(expected.__dict__.keys()))
print('actual keys:', list(actual.__dict__.keys()))
print()
# Compare
for k in expected.__dict__:
if k in actual.__dict__:
ev, av = expected.__dict__[k], actual.__dict__[k]
if k in FakeConfig.FILE_KEYS:
try:
with open(ev) as f1, open(av) as f2:
match = f1.read() == f2.read()
print(f'{k}: file comparison={match}')
except IOError:
print(f'{k}: filenames equal={ev == av}')
else:
print(f'{k}: expected={ev!r}, actual={av!r}, match={ev == av}')
else:
print(f'{k}: missing from actual')
" | 1 | 0.380s | 84000625 |
| command | cd /python && python -c "
from kubernetes.base.config.kube_config_test import FakeConfig
# Check if setting both works
fc = FakeConfig(tls_server_name='test-host')
print('fc.__dict__:', fc.__dict__)
print('tls_server_name in fc.__dict__:', 'tls_server_name' in fc.__dict__)
print('assert_hostname in fc.__dict__:', 'assert_hostname' in fc.__dict__)
"exact commandcd /python && python -c "
from kubernetes.base.config.kube_config_test import FakeConfig
# Check if setting both works
fc = FakeConfig(tls_server_name='test-host')
print('fc.__dict__:', fc.__dict__)
print('tls_server_name in fc.__dict__:', 'tls_server_name' in fc.__dict__)
print('assert_hostname in fc.__dict__:', 'assert_hostname' in fc.__dict__)
" | 0 | 0.360s | a0efe7c6 |
| command | cd /python && python -c "
from kubernetes.client import Configuration
# Check Configuration
config = Configuration()
print('Configuration __dict__ keys with hostname:', [k for k in config.__dict__ if 'host' in k.lower() or 'name' in k.lower()])
print('assert_hostname:', config.assert_hostname)
"exact commandcd /python && python -c "
from kubernetes.client import Configuration
# Check Configuration
config = Configuration()
print('Configuration __dict__ keys with hostname:', [k for k in config.__dict__ if 'host' in k.lower() or 'name' in k.lower()])
print('assert_hostname:', config.assert_hostname)
" | 0 | 0.328s | e45e917d |
| command | cd /python && python -c "
from kubernetes.client import Configuration
# Try to set tls_server_name
config = Configuration(tls_server_name='test-host')
print('assert_hostname:', config.assert_hostname)
print('tls_server_name in __dict__:', 'tls_server_name' in config.__dict__)
"exact commandcd /python && python -c "
from kubernetes.client import Configuration
# Try to set tls_server_name
config = Configuration(tls_server_name='test-host')
print('assert_hostname:', config.assert_hostname)
print('tls_server_name in __dict__:', 'tls_server_name' in config.__dict__)
" | 1 | 0.338s | e3ba15c5 |
| command | cd /python && python -c "
from kubernetes.base.config.kube_config import KubeConfigLoader
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
actual = FakeConfig()
print('Before - actual.__dict__:', {k: v for k, v in actual.__dict__.items() if not k.startswith('_')})
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
print('After - actual.__dict__:', {k: v for k, v in actual.__dict__.items() if not k.startswith('_')})
print('tls_server_name in actual.__dict__:', 'tls_server_name' in actual.__dict__)
print('assert_hostname in actual.__dict__:', 'assert_hostname' in actual.__dict__)
"exact commandcd /python && python -c "
from kubernetes.base.config.kube_config import KubeConfigLoader
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
actual = FakeConfig()
print('Before - actual.__dict__:', {k: v for k, v in actual.__dict__.items() if not k.startswith('_')})
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
print('After - actual.__dict__:', {k: v for k, v in actual.__dict__.items() if not k.startswith('_')})
print('tls_server_name in actual.__dict__:', 'tls_server_name' in actual.__dict__)
print('assert_hostname in actual.__dict__:', 'assert_hostname' in actual.__dict__)
" | 0 | 0.341s | ba2122fa |
| write | write kubernetes/base/config/kube_config.pyexact command/opt/receipts-8d188dc6f98042ef8b097ba42146c428/bin/busybox sh -c 'mkdir -p /python/kubernetes/base/config && cp /opt/receipts-8d188dc6f98042ef8b097ba42146c428/incoming/79cf2f5a6f4285af603f37c7b6b61e8c555a252003cf6ba00a8207d85fa1d163 /python/kubernetes/base/config/kube_config.py' | 0 | 0.005s | e43a919c |
| command | cd /python && python -m pytest kubernetes/base/config/kube_config_test.py::TestKubeConfigLoader::test_tls_server_name -v 2>&1exact commandcd /python && python -m pytest kubernetes/base/config/kube_config_test.py::TestKubeConfigLoader::test_tls_server_name -v 2>&1 | 1 | 0.562s | 2222b570 |
| command | cd /python && python -c "
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
from kubernetes.base.config.kube_config import KubeConfigLoader
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
print('expected.__dict__:', {k: v for k, v in expected.__dict__.items() if not k.startswith('_')})
print('actual.__dict__:', {k: v for k, v in actual.__dict__.items() if not k.startswith('_')})
print()
# Compare key by key
for k in expected.__dict__:
if k in actual.__dict__:
ev, av = expected.__dict__[k], actual.__dict__[k]
if k in FakeConfig.FILE_KEYS:
try:
with open(ev) as f1, open(av) as f2:
match = f1.read() == f2.read()
print(f'{k}: file comparison={match}')
except IOError:
print(f'{k}: filenames equal={ev == av}')
else:
print(f'{k}: expected={ev!r}, actual={av!r}, match={ev == av}')
else:
print(f'{k}: missing from actual')
"exact commandcd /python && python -c "
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
from kubernetes.base.config.kube_config import KubeConfigLoader
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
print('expected.__dict__:', {k: v for k, v in expected.__dict__.items() if not k.startswith('_')})
print('actual.__dict__:', {k: v for k, v in actual.__dict__.items() if not k.startswith('_')})
print()
# Compare key by key
for k in expected.__dict__:
if k in actual.__dict__:
ev, av = expected.__dict__[k], actual.__dict__[k]
if k in FakeConfig.FILE_KEYS:
try:
with open(ev) as f1, open(av) as f2:
match = f1.read() == f2.read()
print(f'{k}: file comparison={match}')
except IOError:
print(f'{k}: filenames equal={ev == av}')
else:
print(f'{k}: expected={ev!r}, actual={av!r}, match={ev == av}')
else:
print(f'{k}: missing from actual')
" | 1 | 0.358s | db7024f9 |
| command | cd /python && python -c "
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
import os
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
# Compare
match = True
for k in expected.__dict__:
if k in actual.__dict__:
ev, av = expected.__dict__[k], actual.__dict__[k]
if k in FakeConfig.FILE_KEYS:
if ev is None or av is None:
if ev != av:
print(f'{k}: mismatch (one is None, other is {av!r})')
match = False
else:
try:
with open(ev) as f1, open(av) as f2:
if f1.read() != f2.read():
print(f'{k}: file content mismatch')
match = False
except IOError:
if ev != av:
print(f'{k}: filenames differ ({ev!r} vs {av!r})')
match = False
else:
if ev != av:
print(f'{k}: expected={ev!r}, actual={av!r}')
match = False
else:
print(f'{k}: missing from actual')
match = False
if match:
print('All attributes match!')
"exact commandcd /python && python -c "
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
import os
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
# Compare
match = True
for k in expected.__dict__:
if k in actual.__dict__:
ev, av = expected.__dict__[k], actual.__dict__[k]
if k in FakeConfig.FILE_KEYS:
if ev is None or av is None:
if ev != av:
print(f'{k}: mismatch (one is None, other is {av!r})')
match = False
else:
try:
with open(ev) as f1, open(av) as f2:
if f1.read() != f2.read():
print(f'{k}: file content mismatch')
match = False
except IOError:
if ev != av:
print(f'{k}: filenames differ ({ev!r} vs {av!r})')
match = False
else:
if ev != av:
print(f'{k}: expected={ev!r}, actual={av!r}')
match = False
else:
print(f'{k}: missing from actual')
match = False
if match:
print('All attributes match!')
" | 1 | 0.342s | 3840f0c8 |
| command | cd /python && python -c "
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
from kubernetes.base.config.kube_config import KubeConfigLoader
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
# Compare
match = True
for k in expected.__dict__:
if k in actual.__dict__:
ev, av = expected.__dict__[k], actual.__dict__[k]
if k in FakeConfig.FILE_KEYS:
if ev is None or av is None:
if ev != av:
print(f'{k}: mismatch (one is None, other is {av!r})')
match = False
else:
try:
with open(ev) as f1, open(av) as f2:
if f1.read() != f2.read():
print(f'{k}: file content mismatch')
match = False
except IOError:
if ev != av:
print(f'{k}: filenames differ ({ev!r} vs {av!r})')
match = False
else:
if ev != av:
print(f'{k}: expected={ev!r}, actual={av!r}')
match = False
else:
print(f'{k}: missing from actual')
match = False
if match:
print('All attributes match!')
"exact commandcd /python && python -c "
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
from kubernetes.base.config.kube_config import KubeConfigLoader
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
# Compare
match = True
for k in expected.__dict__:
if k in actual.__dict__:
ev, av = expected.__dict__[k], actual.__dict__[k]
if k in FakeConfig.FILE_KEYS:
if ev is None or av is None:
if ev != av:
print(f'{k}: mismatch (one is None, other is {av!r})')
match = False
else:
try:
with open(ev) as f1, open(av) as f2:
if f1.read() != f2.read():
print(f'{k}: file content mismatch')
match = False
except IOError:
if ev != av:
print(f'{k}: filenames differ ({ev!r} vs {av!r})')
match = False
else:
if ev != av:
print(f'{k}: expected={ev!r}, actual={av!r}')
match = False
else:
print(f'{k}: missing from actual')
match = False
if match:
print('All attributes match!')
" | 0 | 0.363s | 6834fb55 |
| command | cd /python && python -c "
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
from kubernetes.base.config.kube_config import KubeConfigLoader
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
# Compare all keys
for k in set(list(expected.__dict__.keys()) + list(actual.__dict__.keys())):
if k in expected.__dict__ and k in actual.__dict__:
ev, av = expected.__dict__[k], actual.__dict__[k]
if k in FakeConfig.FILE_KEYS:
if ev is None or av is None:
status = 'ok' if ev == av else 'mismatch'
print(f'{k}: {status} (expected={ev!r}, actual={av!r})')
else:
try:
with open(ev) as f1, open(av) as f2:
status = 'ok' if f1.read() == f2.read() else 'mismatch'
print(f'{k}: {status}')
except IOError:
status = 'ok' if ev == av else 'mismatch'
print(f'{k}: {status} (filenames: {ev!r} vs {av!r})')
else:
status = 'ok' if ev == av else 'mismatch'
print(f'{k}: {status} (expected={ev!r}, actual={av!r})')
elif k in expected.__dict__:
print(f'{k}: missing from actual (expected={expected.__dict__[k]!r})')
else:
print(f'{k}: extra in actual (actual={actual.__dict__[k]!r})")
"exact commandcd /python && python -c "
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
from kubernetes.base.config.kube_config import KubeConfigLoader
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
# Compare all keys
for k in set(list(expected.__dict__.keys()) + list(actual.__dict__.keys())):
if k in expected.__dict__ and k in actual.__dict__:
ev, av = expected.__dict__[k], actual.__dict__[k]
if k in FakeConfig.FILE_KEYS:
if ev is None or av is None:
status = 'ok' if ev == av else 'mismatch'
print(f'{k}: {status} (expected={ev!r}, actual={av!r})')
else:
try:
with open(ev) as f1, open(av) as f2:
status = 'ok' if f1.read() == f2.read() else 'mismatch'
print(f'{k}: {status}')
except IOError:
status = 'ok' if ev == av else 'mismatch'
print(f'{k}: {status} (filenames: {ev!r} vs {av!r})')
else:
status = 'ok' if ev == av else 'mismatch'
print(f'{k}: {status} (expected={ev!r}, actual={av!r})')
elif k in expected.__dict__:
print(f'{k}: missing from actual (expected={expected.__dict__[k]!r})')
else:
print(f'{k}: extra in actual (actual={actual.__dict__[k]!r})")
" | 2 | 0.001s | c5eaf570 |
| command | cd /python && python << 'PYEOF'
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
from kubernetes.base.config.kube_config import KubeConfigLoader
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
# Compare all keys
for k in set(list(expected.__dict__.keys()) + list(actual.__dict__.keys())):
if k in expected.__dict__ and k in actual.__dict__:
ev, av = expected.__dict__[k], actual.__dict__[k]
if k in FakeConfig.FILE_KEYS:
if ev is None or av is None:
status = 'ok' if ev == av else 'mismatch'
print(f'{k}: {status} (expected={ev!r}, actual={av!r})')
else:
try:
with open(ev) as f1, open(av) as f2:
status = 'ok' if f1.read() == f2.read() else 'mismatch'
print(f'{k}: {status}')
except IOError:
status = 'ok' if ev == av else 'mismatch'
print(f'{k}: {status} (filenames: {ev!r} vs {av!r})')
else:
status = 'ok' if ev == av else 'mismatch'
print(f'{k}: {status} (expected={ev!r}, actual={av!r})')
elif k in expected.__dict__:
print(f'{k}: missing from actual (expected={expected.__dict__[k]!r})')
else:
print(f'{k}: extra in actual (actual={actual.__dict__[k]!r})')
PYEOFexact commandcd /python && python << 'PYEOF'
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
from kubernetes.base.config.kube_config import KubeConfigLoader
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
# Compare all keys
for k in set(list(expected.__dict__.keys()) + list(actual.__dict__.keys())):
if k in expected.__dict__ and k in actual.__dict__:
ev, av = expected.__dict__[k], actual.__dict__[k]
if k in FakeConfig.FILE_KEYS:
if ev is None or av is None:
status = 'ok' if ev == av else 'mismatch'
print(f'{k}: {status} (expected={ev!r}, actual={av!r})')
else:
try:
with open(ev) as f1, open(av) as f2:
status = 'ok' if f1.read() == f2.read() else 'mismatch'
print(f'{k}: {status}')
except IOError:
status = 'ok' if ev == av else 'mismatch'
print(f'{k}: {status} (filenames: {ev!r} vs {av!r})')
else:
status = 'ok' if ev == av else 'mismatch'
print(f'{k}: {status} (expected={ev!r}, actual={av!r})')
elif k in expected.__dict__:
print(f'{k}: missing from actual (expected={expected.__dict__[k]!r})')
else:
print(f'{k}: extra in actual (actual={actual.__dict__[k]!r})')
PYEOF | 0 | 0.360s | a2d2360f |
| command | cd /python && python -m pytest kubernetes/base/config/kube_config_test.py::TestKubeConfigLoader::test_tls_server_name -v 2>&1exact commandcd /python && python -m pytest kubernetes/base/config/kube_config_test.py::TestKubeConfigLoader::test_tls_server_name -v 2>&1 | 1 | 0.559s | 530fa4ce |
| command | cd /python && python << 'PYEOF'
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
from kubernetes.base.config.kube_config import KubeConfigLoader
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
print('expected.__dict__ keys:', list(expected.__dict__.keys()))
print('actual.__dict__ keys:', list(actual.__dict__.keys()))
print('len(expected.__dict__):', len(expected.__dict__))
print('len(actual.__dict__):', len(actual.__dict__))
print()
print('expected has assert_hostname:', 'assert_hostname' in expected.__dict__)
print('actual has tls_server_name:', 'tls_server_name' in actual.__dict__)
print('actual has assert_hostname:', 'assert_hostname' in actual.__dict__)
PYEOFexact commandcd /python && python << 'PYEOF'
from kubernetes.base.config.kube_config_test import FakeConfig, TEST_TLS_SERVER_NAME, TEST_SSL_HOST, BEARER_TOKEN_FORMAT, TEST_DATA_BASE64
from kubernetes.base.config.kube_config import KubeConfigLoader
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://test-host',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'kubernetes.io'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
expected = FakeConfig(
host=TEST_SSL_HOST,
token=BEARER_TOKEN_FORMAT % TEST_DATA_BASE64,
cert_file=None,
key_file=None,
ssl_ca_cert=None,
verify_ssl=True,
tls_server_name=TEST_TLS_SERVER_NAME
)
actual = FakeConfig()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(actual)
print('expected.__dict__ keys:', list(expected.__dict__.keys()))
print('actual.__dict__ keys:', list(actual.__dict__.keys()))
print('len(expected.__dict__):', len(expected.__dict__))
print('len(actual.__dict__):', len(actual.__dict__))
print()
print('expected has assert_hostname:', 'assert_hostname' in expected.__dict__)
print('actual has tls_server_name:', 'tls_server_name' in actual.__dict__)
print('actual has assert_hostname:', 'assert_hostname' in actual.__dict__)
PYEOF | 0 | 0.358s | 8ec1c41e |
| write | write kubernetes/base/config/kube_config.pyexact command/opt/receipts-d55b72ee196843008336c5741c0d5a3f/bin/busybox sh -c 'mkdir -p /python/kubernetes/base/config && cp /opt/receipts-d55b72ee196843008336c5741c0d5a3f/incoming/886e25a285b1317ec7e80a9c1a6a8a3c7a526e1075316ccffbced651b9515ff9 /python/kubernetes/base/config/kube_config.py' | 0 | 0.005s | a917cd7e |
| command | cd /python && python -m pytest kubernetes/base/config/kube_config_test.py::TestKubeConfigLoader::test_tls_server_name -v 2>&1exact commandcd /python && python -m pytest kubernetes/base/config/kube_config_test.py::TestKubeConfigLoader::test_tls_server_name -v 2>&1 | 0 | 0.545s | ef2b9204 |
| command | cd /python && python -m pytest kubernetes/base/config/kube_config_test.py -v 2>&1 | tail -50exact commandcd /python && python -m pytest kubernetes/base/config/kube_config_test.py -v 2>&1 | tail -50 | 0 | 0.889s | 9f93be55 |
| Kind | Command | Exit | Duration | Digest |
|---|---|---|---|---|
| command | cd /python && python << 'PYEOF'
from kubernetes.base.config.kube_config import KubeConfigLoader
from kubernetes.client import Configuration, ApiClient
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://example.com',
'certificate-authority-data': 'base64cert',
'insecure-skip-tls-verify': False,
'tls-server-name': 'my-cluster-hostname'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
# Load config and check that tls_server_name is set
config = Configuration()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(config)
print("Configuration assert_hostname:", config.assert_hostname)
print("Configuration tls_server_name:", config.tls_server_name)
# Create ApiClient and check the pool manager args
api_client = ApiClient(configuration=config)
print("\nApiClient pool_manager kwargs (assert_hostname):")
# Check the pool_manager configuration
if hasattr(api_client.pool_manager, 'assert_hostname'):
print(" assert_hostname set:", api_client.pool_manager.assert_hostname)
else:
print(" assert_hostname not directly accessible (urllib3 version dependent)")
print("\nTest passed: tls-server-name is properly propagated!")
PYEOFexact commandcd /python && python << 'PYEOF'
from kubernetes.base.config.kube_config import KubeConfigLoader
from kubernetes.client import Configuration, ApiClient
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://example.com',
'certificate-authority-data': 'base64cert',
'insecure-skip-tls-verify': False,
'tls-server-name': 'my-cluster-hostname'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
# Load config and check that tls_server_name is set
config = Configuration()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(config)
print("Configuration assert_hostname:", config.assert_hostname)
print("Configuration tls_server_name:", config.tls_server_name)
# Create ApiClient and check the pool manager args
api_client = ApiClient(configuration=config)
print("\nApiClient pool_manager kwargs (assert_hostname):")
# Check the pool_manager configuration
if hasattr(api_client.pool_manager, 'assert_hostname'):
print(" assert_hostname set:", api_client.pool_manager.assert_hostname)
else:
print(" assert_hostname not directly accessible (urllib3 version dependent)")
print("\nTest passed: tls-server-name is properly propagated!")
PYEOF | 1 | 0.362s | 06cb8668 |
| command | cd /python && python << 'PYEOF'
from kubernetes.base.config.kube_config import KubeConfigLoader
from kubernetes.client import Configuration, ApiClient
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://example.com',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'my-cluster-hostname'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
# Load config and check that tls_server_name is set
config = Configuration()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(config)
print("Configuration assert_hostname:", config.assert_hostname)
print("Configuration tls_server_name:", config.tls_server_name)
# Create ApiClient and verify the configuration is passed through
api_client = ApiClient(configuration=config)
print("\nApiClient configuration assert_hostname:", api_client.configuration.assert_hostname)
print("ApiClient configuration tls_server_name:", api_client.configuration.tls_server_name)
print("\nTest passed: tls-server-name is properly propagated from kubeconfig to Configuration to ApiClient!")
PYEOFexact commandcd /python && python << 'PYEOF'
from kubernetes.base.config.kube_config import KubeConfigLoader
from kubernetes.client import Configuration, ApiClient
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://example.com',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'my-cluster-hostname'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
# Load config and check that tls_server_name is set
config = Configuration()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(config)
print("Configuration assert_hostname:", config.assert_hostname)
print("Configuration tls_server_name:", config.tls_server_name)
# Create ApiClient and verify the configuration is passed through
api_client = ApiClient(configuration=config)
print("\nApiClient configuration assert_hostname:", api_client.configuration.assert_hostname)
print("ApiClient configuration tls_server_name:", api_client.configuration.tls_server_name)
print("\nTest passed: tls-server-name is properly propagated from kubeconfig to Configuration to ApiClient!")
PYEOF | 0 | 0.333s | d6311cee |
| command | cd /python && python << 'PYEOF'
from kubernetes.base.config.kube_config import KubeConfigLoader
from kubernetes.client import Configuration, ApiClient
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://example.com',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'my-cluster-hostname'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
# Load config and check that tls_server_name is set
config = Configuration()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(config)
print("Configuration assert_hostname:", config.assert_hostname)
print("Configuration tls_server_name:", config.tls_server_name)
# Now also set assert_hostname to tls_server_name for urllib3 compatibility
# This is what rest.py does when configuration.assert_hostname is not None
if config.tls_server_name is not None:
config.assert_hostname = config.tls_server_name
print("\nAfter setting assert_hostname:")
print("Configuration assert_hostname:", config.assert_hostname)
# Create ApiClient
api_client = ApiClient(configuration=config)
print("\nApiClient configuration assert_hostname:", api_client.configuration.assert_hostname)
print("ApiClient configuration tls_server_name:", api_client.configuration.tls_server_name)
PYEOFexact commandcd /python && python << 'PYEOF'
from kubernetes.base.config.kube_config import KubeConfigLoader
from kubernetes.client import Configuration, ApiClient
TEST_KUBE_CONFIG = {
'current-context': 'tls-server-name',
'contexts': [
{'name': 'tls-server-name', 'context': {'cluster': 'tls-server-name', 'user': 'ssl'}}
],
'clusters': [
{'name': 'tls-server-name', 'cluster': {
'server': 'https://example.com',
'certificate-authority-data': 'Y2VydHM=',
'insecure-skip-tls-verify': False,
'tls-server-name': 'my-cluster-hostname'
}}
],
'users': [
{'name': 'ssl', 'user': {}}
]
}
# Load config and check that tls_server_name is set
config = Configuration()
loader = KubeConfigLoader(config_dict=TEST_KUBE_CONFIG, active_context='tls-server-name')
loader.load_and_set(config)
print("Configuration assert_hostname:", config.assert_hostname)
print("Configuration tls_server_name:", config.tls_server_name)
# Now also set assert_hostname to tls_server_name for urllib3 compatibility
# This is what rest.py does when configuration.assert_hostname is not None
if config.tls_server_name is not None:
config.assert_hostname = config.tls_server_name
print("\nAfter setting assert_hostname:")
print("Configuration assert_hostname:", config.assert_hostname)
# Create ApiClient
api_client = ApiClient(configuration=config)
print("\nApiClient configuration assert_hostname:", api_client.configuration.assert_hostname)
print("ApiClient configuration tls_server_name:", api_client.configuration.tls_server_name)
PYEOF | 0 | 0.341s | cb59201e |
| diff | capture patchexact commandcompute patch in executor staging agent1-f87ebfab4fcd43e4b65c2069feb82d78: /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false add -A && /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false diff --cached --binary --no-ext-diff --no-textconv --no-renames e8ec481d20fea82be5afe43acb4c8818eb880351 | 0 | 0.226s | b189aad07382 |
- Finish summary
- Fixed the issue where the Kubernetes Python client doesn't honor the `tls-server-name` setting from kubeconfig. **Changes made to `kubernetes/base/config/kube_config.py`:** 1. **`_load_cluster_info` method**: Added reading of `tls-server-name` from the cluster section of kubeconfig: ```python if 'tls-server-name' in self._cluster: self.tls_server_name = self._cluster['tls-server-name'] ``` 2. **`_set_config` method**: Added propagation of `tls_server_name` to the Configuration object: ```python if hasattr(self, 'tls_server_name'): client_configuration.tls_server_name = self.tls_server_name ``` **Result:** The `tls-server-name` value from kubeconfig is now properly propagated to the `Configuration` object as `tls_server_name`, which can be used by the API client for proper TLS SNI handling. All 78 tests in `kube_config_test.py` pass, including the `test_tls_server_name` test.
- Worker outcome
- finished
- Target tests pass: yes
- Full suite passes: yes
- Files changed: kubernetes/base/config/kube_config.py
- Ran tests: yes
Witness branch w1
| Kind | Command | Exit | Duration | Digest |
|---|---|---|---|---|
| apply | apply patch 064fced8e93bexact commandgit update-index -q --refresh; git apply -v --3way --recount --ignore-space-change --whitespace=nowarn /opt/receipts-83e5fd0e1bcc4469b5f266de88d5ece0/incoming/064fced8e93b1897d3f995fcb1b8042acfff0bfe11404bd9935e20d0e7d949ea.diff | 0 | 0.020s | f8ab7a6b5d7a |
| verification | pytest (witness) kubernetes/base/config/kube_config_test.pyexact command/opt/receipts-8eb795369c1546b487d9c916f016f398/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-8eb795369c1546b487d9c916f016f398/receipts_pytest.py --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning kubernetes/base/config/kube_config_test.py -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/w1-2.xml | 0 | 1.991s | f8ab7a6b5d7a |
Gate predicate checklist
| Predicate | Name | Status | Evidence |
|---|---|---|---|
R1_fail_to_pass | Failing specification tests now pass | PASS | target tests passed: kubernetes/base/config/kube_config_test.py::TestKubeConfigLoader::test_tls_server_name |
R2_pass_to_pass | Previously passing tests kept | PASS | 77 baseline-passing tests still pass |
R3_no_shrink | No removed tests or new skips | PASS | all 78 baseline tests collected; skips unchanged (0) |
R4_patch_scope | Patch scope | PASS | patch touches 1 file(s), all in scope |
R5_provenance | Witness chain and patch digest | PASS | agent chain d5820fe7 -> cb59201e unbroken over 38 receipt(s); witness chain d5820fe7 -> 516aa7d8 unbroken over 2 receipt(s); applied digest matches |
R6_claim_audit | Agent claim audit (advisory) | FAIL | claimed green but never ran the tests on this branch |
What it said
- Finish summary
- Fixed the issue where the Kubernetes Python client doesn't honor the `tls-server-name` setting from kubeconfig. **Changes made to `kubernetes/base/config/kube_config.py`:** 1. **`_load_cluster_info` method**: Added reading of `tls-server-name` from the cluster section of kubeconfig: ```python if 'tls-server-name' in self._cluster: self.tls_server_name = self._cluster['tls-server-name'] ``` 2. **`_set_config` method**: Added propagation of `tls_server_name` to the Configuration object: ```python if hasattr(self, 'tls_server_name'): client_configuration.tls_server_name = self.tls_server_name ``` **Result:** The `tls-server-name` value from kubeconfig is now properly propagated to the `Configuration` object as `tls_server_name`, which can be used by the API client for proper TLS SNI handling. All 78 tests in `kube_config_test.py` pass, including the `test_tls_server_name` test.
- Worker outcome
- finished
- Target tests pass: yes
- Full suite passes: yes
- Files changed: kubernetes/base/config/kube_config.py
- Ran tests: yes
What the record shows
unsupported: claimed green but never ran the tests on this branch
SWE-rebench's official grader: resolved
Agrees with the gate
Shipped patch
diff --git a/kubernetes/base/config/kube_config.py b/kubernetes/base/config/kube_config.pyindex a62df410..5e63ab70 100644--- a/kubernetes/base/config/kube_config.py+++ b/kubernetes/base/config/kube_config.py@@ -565,6 +565,8 @@ class KubeConfigLoader(object): self._user, 'client-key', file_base_path=base_path, temp_file_path=self._temp_file_path).as_file()+ if 'tls-server-name' in self._cluster:+ self.tls_server_name = self._cluster['tls-server-name'] if 'insecure-skip-tls-verify' in self._cluster: self.verify_ssl = not self._cluster['insecure-skip-tls-verify'] @@ -582,6 +584,8 @@ class KubeConfigLoader(object): for key in keys: if key in self.__dict__: setattr(client_configuration, key, getattr(self, key))+ if hasattr(self, 'tls_server_name'):+ client_configuration.tls_server_name = self.tls_server_name def load_and_set(self, client_configuration): self._load_authentication()
Model and costs
- Model
- nvidia/Nemotron-3_5-Lightning thinking off · temperature 1.0 · top_p 0.95
- Tokens
- 1,236,188 tokens
- Model cost
- $0.08
- Sandbox time
- 2 min 21 s
- Sandbox cost
- Token Factory reported cost: 0.191 (unit not published)
Full environment disclosure
{
"executor_kind": "tokenfactory",
"lock_sha256": "23e994da177b2eef1b0d5a76ef8deb595f0b3693ad0a7e5573375b18959a81c6",
"model": {
"base_url": "https://api.tokenfactory.nebius.com/v1/",
"client": "TokenFactoryClient",
"max_tokens": null,
"model": "nvidia/Nemotron-3_5-Lightning",
"temperature": 1.0,
"thinking": false,
"top_p": 0.95
},
"pytest_config_digests": {
"kubernetes/base/tox.ini": "d4ece307e74f75c0d47052aee228492a4a46fc4868b69e57c134d5c0a1aa4799",
"kubernetes/setup.cfg": "97b6dd29221e75e0618680edba9b01c31d713eb9417f6c987931fb6bc90c81ae",
"setup.cfg": "87135eac357f313196b7091dc89e7d7abb13cfc2482692f239807dcf7514b7f9",
"tox.ini": "3fe97eda22c015880868b470aa55869f7ff8be389b242f20cc2d72a225cfd827"
},
"receipts_version": "0.0.1",
"test_digests": {
"kubernetes/base/config/__init__.py": "8c39609f004ff029d33ae633710938c60a70c5eb15cbaa17a9a0a781b6463e5b",
"kubernetes/base/config/config_exception.py": "9a1e3a237dfe2fbfa442025ee88a07ac011de7207deb40a034958efaa5bc48e3",
"kubernetes/base/config/dateutil.py": "80e1042328f76409815943810c16c813cd40e02144f5ccbcfc94ab3b04c20dc0",
"kubernetes/base/config/dateutil_test.py": "7dc6584a8b37115a317ed3d109827c5caf3617a4e64d8c0818f6c63c3bedecc9",
"kubernetes/base/config/exec_provider.py": "7e03e8649e935a0c7d7591ac062fa0cb3506c19b49bc7da92227030354510821",
"kubernetes/base/config/exec_provider_test.py": "63c926b202ae565210a42477ec92680f6906075de1339b846a9bf4e794586ef5",
"kubernetes/base/config/incluster_config.py": "073168688753bc350c4faba199d26f56f79cf92f2f2c53d970a7022ef4453b15",
"kubernetes/base/config/incluster_config_test.py": "ef83b2ce0c82e49e747b7ebf27b7e160c39f5cbf2e20ab4ef90a16352d21365a",
"kubernetes/base/config/kube_config.py": "85a5aa3b36bec05d13ac6e19f63f6dfac3e100d337fee9fd37aa5b24d0554a8d",
"kubernetes/base/config/kube_config_test.py": "fb59ccd487591d46bdb0c501fd38e4c975fb2986cd7f8497f80296a0e6482e51"
}
}The bundle
Recorded JSON and patches. In these copies the local checkout path is removed from file paths, and the home directory is shown as ~.
- attempts/1/filtered.diff
- attempts/1/patch.diff
- attempts/1/verdict.json
- attempts/1/witness/receipts.jsonl
- baseline.json
- branches/agent1/receipts.jsonl
- branches/base/receipts.jsonl
- branches/official1/receipts.jsonl
- branches/w1/receipts.jsonl
- cost.json
- disclosure.json
- input.json
- lock.txt
- plan.json
- record.json
- result.json