Skip to content

Commit 00f6394

Browse files
committed
add get_service_ip
1 parent a6f1205 commit 00f6394

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/scenarios/utils.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
1+
from ipaddress import IPv4Address, IPv6Address, ip_address
2+
from kubernetes import client, config
3+
4+
15
def ensure_miner(node):
26
wallets = node.listwallets()
37
if "miner" not in wallets:
48
node.createwallet("miner", descriptors=True)
59
return node.get_wallet_rpc("miner")
10+
11+
12+
def get_service_ip(service_name: str, namespace: str = "warnet") -> (IPv4Address | IPv6Address,
13+
IPv4Address | IPv6Address):
14+
"""Given a service name and namespace, returns the service's external ip and internal ip"""
15+
# https://github.com/kubernetes-client/python/blob/master/kubernetes/docs/V1Endpoints.md
16+
config.load_incluster_config()
17+
v1 = client.CoreV1Api()
18+
service = v1.read_namespaced_service(name=service_name, namespace=namespace)
19+
endpoints = v1.read_namespaced_endpoints(name=service_name, namespace=namespace)
20+
21+
try:
22+
initial_subset = endpoints.subsets[0]
23+
except IndexError:
24+
raise f"{service_name}'s endpoint does not have an initial subset"
25+
try:
26+
initial_address = initial_subset.addresses[0]
27+
except IndexError:
28+
raise f"{service_name}'s initial subset does not have an initial address"
29+
30+
return ip_address(service.spec.cluster_ip), ip_address(initial_address.ip)

src/templates/rpc/rbac-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ rules:
88
resources: [pods]
99
verbs: [get, list, create, update, patch, delete]
1010
- apiGroups: [""]
11-
resources: [services]
11+
resources: [services, endpoints]
1212
verbs: [get, list, create, update, patch, delete]
1313
- apiGroups: [""]
1414
resources: [pods/exec]

0 commit comments

Comments
 (0)