mirror of
https://github.com/cupcakearmy/master-thesis.git
synced 2024-11-16 18:10:50 +01:00
52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
from os import path
|
|
from string import Template
|
|
|
|
import yaml
|
|
|
|
templates_dir = path.join(path.dirname(__file__), 'templates')
|
|
|
|
|
|
def load(name: str, variables):
|
|
"""
|
|
Load a template file and replace the placeholders with the given.
|
|
"""
|
|
file = path.join(templates_dir, name)
|
|
with open(file, 'r') as template:
|
|
contents = template.read()
|
|
replaced = Template(contents).substitute(**variables)
|
|
return list(yaml.safe_load_all(replaced))
|
|
|
|
|
|
# Iluzio
|
|
def iluzio_node(*, id: str):
|
|
"""
|
|
Load the iluzio node template.
|
|
This includes the deployment, service and network policy.
|
|
"""
|
|
return load('iluzio/node.yaml', {'id': id})[0]
|
|
|
|
|
|
def iluzio_link(*, id: str):
|
|
"""
|
|
Load the iluzio link template.
|
|
"""
|
|
return load('iluzio/link.yaml', {'id': id})[0]
|
|
|
|
|
|
# Native
|
|
def native_node(*, id: str, image: str, resources: str) -> tuple[str, str, str]:
|
|
"""
|
|
Load the node template.
|
|
This includes the deployment, service and network policy.
|
|
"""
|
|
return load('native/node.yaml', {'id': id, 'image': image, 'resources': resources})
|
|
|
|
|
|
# Chaos
|
|
def chaos_link(*, name: str, namespace: str, sender: str, receiver: str, direction: str):
|
|
"""
|
|
Load the chaos link template.
|
|
This includes the link and the service.
|
|
"""
|
|
return load('chaos/link.yaml', {'name': name, 'namespace': namespace, 'sender': sender, 'receiver': receiver, 'direction': direction})[0]
|