Skip to content

Commit e9a6c0a

Browse files
committed
services: add simln option for both backends
1 parent f03b39e commit e9a6c0a

File tree

5 files changed

+52
-4
lines changed

5 files changed

+52
-4
lines changed

src/backends/compose/compose_backend.py

+1
Original file line numberDiff line numberDiff line change
@@ -464,5 +464,6 @@ def service_from_json(self, obj) -> object:
464464
"devices": obj.get("devices", []),
465465
"command": obj.get("args", []),
466466
"environment": obj.get("environment", []),
467+
"restart": "on-failure",
467468
"networks": [self.network_name]
468469
}

src/backends/kubernetes/kubernetes_backend.py

+40-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from kubernetes.dynamic import DynamicClient
1616
from kubernetes.dynamic.exceptions import ResourceNotFoundError
1717
from kubernetes.stream import stream
18+
from warnet.services import services
1819
from warnet.status import RunningStatus
1920
from warnet.tank import Tank
2021
from warnet.utils import parse_raw_messages
@@ -73,6 +74,10 @@ def down(self, warnet) -> bool:
7374

7475
self.remove_prometheus_service_monitors(warnet.tanks)
7576

77+
for service_name in warnet.services:
78+
if "k8s" in services[service_name]["backends"]:
79+
self.client.delete_namespaced_pod(services[service_name]["container_name_suffix"], self.namespace)
80+
7681
return True
7782

7883
def get_file(self, tank_index: int, service: ServiceType, file_path: str):
@@ -668,6 +673,10 @@ def deploy_pods(self, warnet):
668673
if self.check_logging_crds_installed():
669674
self.apply_prometheus_service_monitors(warnet.tanks)
670675

676+
for service_name in warnet.services:
677+
if "k8s" in services[service_name]["backends"]:
678+
self.service_from_json(services[service_name])
679+
671680
self.log.debug("Containers and services created. Configuring IP addresses")
672681
# now that the pods have had a second to create,
673682
# get the ips and set them on the tanks
@@ -701,4 +710,34 @@ def wait_for_healthy_tanks(self, warnet, timeout=30):
701710
pass
702711

703712
def service_from_json(self, obj):
704-
pass
713+
env = []
714+
for pair in obj.get("environment", []):
715+
name, value = pair.split("=")
716+
env.append(client.V1EnvVar(name=name, value=value))
717+
service_container = client.V1Container(
718+
name=obj["container_name_suffix"],
719+
image=obj["image"],
720+
env=env,
721+
security_context=client.V1SecurityContext(
722+
privileged=True,
723+
capabilities=client.V1Capabilities(add=["NET_ADMIN", "NET_RAW"]),
724+
),
725+
)
726+
service_pod = client.V1Pod(
727+
api_version="v1",
728+
kind="Pod",
729+
metadata=client.V1ObjectMeta(
730+
name=obj["container_name_suffix"],
731+
namespace=self.namespace,
732+
labels={
733+
"app": obj["container_name_suffix"],
734+
"network": self.network_name,
735+
},
736+
),
737+
spec=client.V1PodSpec(
738+
restart_policy="OnFailure",
739+
containers=[service_container],
740+
volumes=[],
741+
),
742+
)
743+
self.client.create_namespaced_pod(namespace=self.namespace, body=service_pod)

src/warnet/lnnode.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
"--bitcoin.active",
1414
"--bitcoin.regtest",
1515
"--bitcoin.node=bitcoind",
16-
"--maxpendingchannels=64"
16+
"--maxpendingchannels=64",
17+
"--trickledelay=1"
1718
])
1819

1920
class LNNode:

src/warnet/services.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -78,5 +78,11 @@
7878
"container_port": "9090",
7979
"config_files": [f"/{PROM_CONF_NAME}:/etc/prometheus/prometheus.yml"],
8080
"args": ["--config.file=/etc/prometheus/prometheus.yml"]
81-
}
81+
},
82+
"simln": {
83+
"backends": ["compose", "k8s"],
84+
"image": "bitcoindevproject/simln:0.2.0",
85+
"container_name_suffix": "simln",
86+
"args": ["--log-level=debug"]
87+
},
8288
}

test/data/services.graphml

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@
1515
<key id="source_policy" attr.name="source_policy" attr.type="string" for="edge" />
1616
<key id="target_policy" attr.name="target_policy" attr.type="string" for="edge" />
1717
<graph edgedefault="directed">
18-
<data key="services">cadvisor forkobserver grafana nodeexporter prometheus</data>
18+
<data key="services">cadvisor forkobserver grafana nodeexporter prometheus simln</data>
1919
<node id="0">
2020
<data key="version">26.0</data>
2121
<data key="bitcoin_config">-uacomment=w0 -debug=validation</data>
2222
<data key="exporter">true</data>
23+
<data key="ln">lnd</data>
2324
</node>
2425
</graph>
2526
</graphml>

0 commit comments

Comments
 (0)