Skip to content

Commit 229761b

Browse files
authored
Pull KVP on a post request (#256)
1 parent 2898641 commit 229761b

File tree

5 files changed

+28
-3
lines changed

5 files changed

+28
-3
lines changed

.github/workflows/e2e-testing.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ jobs:
6565
- name: Output KVP telemetry
6666
if: always()
6767
run: |
68-
docker exec azureinit-provisioning-agent cat /var/lib/hyperv/.kvp_pool_1
68+
docker exec azure-testing-server cat /tmp/testinit.kvp_pool_1
6969
7070
- name: Output Azure-init log
7171
if: always()

testinit/docker-compose.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ services:
1313
volumes:
1414
- /sys/fs/cgroup:/sys/fs/cgroup:rw
1515
- /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:rw
16+
- /tmp/testinit:/var/lib/hyperv:rw
1617
stdin_open: true
1718
tty: true
1819
container_name: azureinit-provisioning-agent

testinit/start-all.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#!/bin/bash
22

3+
mkdir -p /tmp/testinit
4+
35
# Accept base image as first argument, default to ubuntu:24.04 if not provided
46
BASE_IMAGE=${1:-ubuntu:24.04}
57

testinit/testing-server/docker-compose.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ services:
1010
- SYS_MODULE
1111
ports:
1212
- "80:80"
13+
volumes:
14+
- /tmp/testinit:/var/lib/hyperv:rw
1315
networks:
1416
imds-network:
1517
ipv4_address: 169.254.169.254
1618
wireserver-network:
1719
ipv4_address: 168.63.129.16
1820
healthcheck:
19-
test: ["CMD", "curl", "-f", "-H", "Metadata: true", "http://localhost:80/metadata/instance?api-version=2021-02-01"]
21+
test: [ "CMD", "curl", "-f", "-H", "Metadata: true", "http://localhost:80/metadata/instance?api-version=2021-02-01" ]
2022
interval: 30s
2123
timeout: 10s
2224
retries: 3
@@ -30,7 +32,7 @@ networks:
3032
config:
3133
- subnet: 169.254.0.0/16
3234
gateway: 169.254.0.1
33-
35+
3436
wireserver-network:
3537
driver: bridge
3638
name: wireserver-network

testinit/testing-server/wireserver_handler.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from http.server import BaseHTTPRequestHandler
22
import time
33
import json
4+
import os
45
import xml.etree.ElementTree as ET
56

67
from utils import logger
@@ -54,6 +55,23 @@ def load_responses(cls):
5455
logger.info("Outputting loaded custom WireServer responses")
5556
logger.info(json.dumps(cls._responses, indent=2))
5657

58+
def store_kvp_file(self):
59+
kvp_file_path = "/var/lib/hyperv/.kvp_pool_1"
60+
output_file_path = "/tmp/testinit.kvp_pool_1"
61+
62+
if os.path.exists(kvp_file_path):
63+
with open(kvp_file_path, "r") as f:
64+
kvp_data = f.read()
65+
66+
# Write to output file, overwriting if it exists since this gets
67+
# called multiple times with a failure.
68+
with open(output_file_path, "w") as f:
69+
f.write(kvp_data)
70+
71+
logger.info(f"KVP data written to {output_file_path}")
72+
else:
73+
logger.error("KVP file not found")
74+
5775
def write_custom_response(self):
5876
responses_list = self._responses
5977

@@ -106,6 +124,8 @@ def do_POST(self):
106124
logger.info(f"WireServer POST request: {self.path}")
107125
logger.info(f"POST data: {post_data.decode('utf-8', errors='ignore')}")
108126

127+
self.store_kvp_file()
128+
109129
if self._responses is not None:
110130
self.write_custom_response()
111131
return

0 commit comments

Comments
 (0)