Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions hack/demoenv/exporters-statefulset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ spec:
restartPolicy: Always
containers:
- name: jumpstarter-exporter
image: quay.io/jumpstarter-dev/jumpstarter:0.5.0
imagePullPolicy: IfNotPresent
image: quay.io/jumpstarter-dev/jumpstarter:latest
imagePullPolicy: Always
env:
- name: JUMPSTARTER_GRPC_INSECURE
value: "1"
# note for some reason jmp-exporter run $(cat /etc/hostname) won't find the config, neither does list
command: ["/bin/sh", "-c", "echo running exporter $(cat /etc/hostname); jmp-exporter run -c /etc/jumpstarter/exporters/$(cat /etc/hostname).yaml"]
command: ["/bin/sh", "-c", "echo running exporter $(cat /etc/hostname); jmp run --exporter $(cat /etc/hostname)"]
# map the exporter-configs ConfigMap to /etc/jumpstarter/exporters
volumeMounts:
- name: exporter-configs
Expand Down
7 changes: 6 additions & 1 deletion hack/demoenv/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ namespace: jumpstarter-exporters
resources:
- exporters-statefulset.yaml
- vcan-exporters-statefulset.yaml
- qemu-exporters-statefulset.yaml
configMapGenerator:
- name: exporter-configs
files:
Expand All @@ -16,4 +17,8 @@ configMapGenerator:
- gen/vcan-exporter-2.yaml
- gen/vcan-exporter-3.yaml
- gen/vcan-exporter-4.yaml

- gen/qemu-exporter-0.yaml
- gen/qemu-exporter-1.yaml
- gen/qemu-exporter-2.yaml
- gen/qemu-exporter-3.yaml
- gen/qemu-exporter-4.yaml
66 changes: 49 additions & 17 deletions hack/demoenv/prepare_exporters.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,56 +2,88 @@
OUT_DIR=${OUT_DIR:-"hack/demoenv/gen"}
NAMESPACE=${NAMESPACE:-"jumpstarter-lab"}

mkdir -p ${OUT_DIR}
for i in `seq 0 4`; do
mkdir -p "${OUT_DIR}"
for i in $(seq 0 4); do
EXPORTER_NAME="exporter-$i"
echo "Creating exporter $EXPORTER_NAME"
OUT_FILE="${OUT_DIR}/${EXPORTER_NAME}.yaml"
bin/jmpctl exporter delete "${EXPORTER_NAME}" --namespace "${NAMESPACE}" > /dev/null 2>&1
bin/jmpctl exporter create "${EXPORTER_NAME}" --namespace "${NAMESPACE}" > "${OUT_FILE}"
jmp admin delete exporter "${EXPORTER_NAME}" --namespace "${NAMESPACE}" > /dev/null 2>&1
jmp admin create exporter "${EXPORTER_NAME}" --namespace "${NAMESPACE}" --out "${OUT_FILE}" -l device-type=mock
sed -i '' '/^\s*export: {}\s*$/d' "${OUT_FILE}"
cat >> "${OUT_FILE}" <<EOF
export:
storage:
type: jumpstarter.drivers.storage.driver.MockStorageMux
type: jumpstarter_driver_opendal.driver.MockStorageMux
power:
type: jumpstarter.drivers.power.driver.MockPower
type: jumpstarter_driver_power.driver.MockPower
echonet:
type: jumpstarter.drivers.network.driver.EchoNetwork
type: jumpstarter_driver_network.driver.EchoNetwork
tcpnet:
type: jumpstarter.drivers.network.driver.TcpNetwork
type: jumpstarter_driver_network.driver.TcpNetwork
config:
host: "192.168.1.52"
port: 80

EOF
kubectl label exporter -n "${NAMESPACE}" "${EXPORTER_NAME}" device-type=mock
done

for i in `seq 0 4`; do
for i in $(seq 0 4); do
EXPORTER_NAME="vcan-exporter-$i"
echo "Creating exporter $EXPORTER_NAME"
OUT_FILE="${OUT_DIR}/${EXPORTER_NAME}.yaml"
bin/jmpctl exporter delete "${EXPORTER_NAME}" --namespace "${NAMESPACE}" > /dev/null 2>&1
bin/jmpctl exporter create "${EXPORTER_NAME}" --namespace "${NAMESPACE}" > "${OUT_FILE}"
jmp admin delete exporter "${EXPORTER_NAME}" --namespace "${NAMESPACE}" > /dev/null 2>&1
jmp admin create exporter "${EXPORTER_NAME}" --namespace "${NAMESPACE}" --out "${OUT_FILE}" -l device-type=can
sed -i '' '/^\s*export: {}\s*$/d' "${OUT_FILE}"
cat >> "${OUT_FILE}" <<EOF
export:
storage:
type: jumpstarter.drivers.storage.driver.MockStorageMux
type: jumpstarter_driver_opendal.driver.MockStorageMux
power:
type: jumpstarter.drivers.power.driver.MockPower
type: jumpstarter_driver_power.driver.MockPower
echonet:
type: jumpstarter.drivers.network.driver.EchoNetwork
type: jumpstarter_driver_network.driver.EchoNetwork
can:
type: jumpstarter_driver_can.driver.Can
config:
channel: 1
interface: "virtual"

EOF
kubectl label exporter -n "${NAMESPACE}" "${EXPORTER_NAME}" device-type=can
done

kubectl delete statefulset -n jumpstarter-exporters exporter vcan-exporter
for i in $(seq 0 4); do
EXPORTER_NAME="qemu-exporter-$i"
echo "Creating exporter $EXPORTER_NAME"
OUT_FILE="${OUT_DIR}/${EXPORTER_NAME}.yaml"
jmp admin delete exporter "${EXPORTER_NAME}" --namespace "${NAMESPACE}" > /dev/null 2>&1
jmp admin create exporter "${EXPORTER_NAME}" --namespace "${NAMESPACE}" --out "${OUT_FILE}" -l board=virtual
sed -i '' '/^\s*export: {}\s*$/d' "${OUT_FILE}"
cat >> "${OUT_FILE}" <<EOF
export:
qemu:
type: jumpstarter_driver_qemu.driver.Qemu
config:
smp: 1
mem: "2G"
default_partitions:
OVMF_CODE.fd: /usr/share/AAVMF/OVMF_CODE.fd
OVMF_VARS.fd: /usr/share/AAVMF/OVMF_VARS.fd
hostfwd:
ssh:
hostport: 9022
guestport: 22
console:
ref: qemu.console
flasher:
ref: qemu.flasher
power:
ref: qemu.power

EOF
done


kubectl delete statefulset -n jumpstarter-exporters exporter vcan-exporter qemu-exporter
kubectl delete pod --all -n jumpstarter-exporters --force --grace-period=0

kubectl create namespace jumpstarter-exporters || true
Expand Down
62 changes: 62 additions & 0 deletions hack/demoenv/qemu-exporters-statefulset.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: qemu-exporter
spec:
serviceName: qemu-exporter
replicas: 5
selector:
matchLabels:
exporter-type: qemu
template:
metadata:
labels:
exporter-type: qemu
annotations:
openshift.io/required-scc: privileged
spec:
restartPolicy: Always

containers:
- name: jumpstarter-exporter
# TODO: we need a continuous release of this image in jumpstarter. i.e. quay.io/jumpstarter/jumpstarter-with-qemu:latest
image: quay.io/mangelajo/jumpstarter:rel6-qemu
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

securityContext:
privileged: true
imagePullPolicy: Always
resources:
limits:
cpu: 2000m
memory: "2G"
requests:
cpu: 100m
memory: "1G"
env:
- name: JUMPSTARTER_GRPC_INSECURE
value: "1"
# note for some reason jmp-exporter run $(cat /etc/hostname) won't find the config, neither does list
command: ["/bin/sh", "-c", "echo running exporter $(cat /etc/hostname); jmp run --exporter $(cat /etc/hostname)"]
# map the exporter-configs ConfigMap to /etc/jumpstarter/exporters
volumeMounts:
- name: exporter-configs
mountPath: /etc/jumpstarter/exporters
- mountPath: /shared
name: shared
- mountPath: /dev/kvm
name: dev-kvm
- mountPath: /dev/vhost-vsock
name: dev-vhost-vsock
volumes:
- name: exporter-configs
configMap:
name: exporter-configs
- name: shared
emptyDir: {}
- name: dev-kvm
hostPath:
path: /dev/kvm
type: CharDevice
- name: dev-vhost-vsock
hostPath:
path: /dev/vhost-vsock
type: CharDevice
6 changes: 3 additions & 3 deletions hack/demoenv/vcan-exporters-statefulset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ spec:
restartPolicy: Always
containers:
- name: jumpstarter-exporter
image: quay.io/jumpstarter-dev/jumpstarter:0.5.0
imagePullPolicy: IfNotPresent
image: quay.io/jumpstarter-dev/jumpstarter:latest
imagePullPolicy: Always
env:
- name: JUMPSTARTER_GRPC_INSECURE
value: "1"
# note for some reason jmp-exporter run $(cat /etc/hostname) won't find the config, neither does list
command: ["/bin/sh", "-c", "echo running exporter $(cat /etc/hostname); jmp-exporter run -c /etc/jumpstarter/exporters/$(cat /etc/hostname).yaml"]
command: ["/bin/sh", "-c", "echo running exporter $(cat /etc/hostname); jmp run --exporter $(cat /etc/hostname)"]
# map the exporter-configs ConfigMap to /etc/jumpstarter/exporters
volumeMounts:
- name: exporter-configs
Expand Down