Skip to content

Commit 7f266c4

Browse files
authored
Docker: Remove Hub GraphQL dependency from video recorder (#2813)
1 parent cdbf770 commit 7f266c4

File tree

2 files changed

+61
-13
lines changed

2 files changed

+61
-13
lines changed

Video/video.sh

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,17 @@ ts_format=${SE_LOG_TIMESTAMP_FORMAT:-"%Y-%m-%d %H:%M:%S,%3N"}
2222
process_name="video.recorder"
2323

2424
if [ "${SE_VIDEO_RECORD_STANDALONE}" = "true" ]; then
25-
JQ_SESSION_ID_QUERY=".value.nodes[]?.slots[]?.session?.sessionId"
25+
JQ_SESSION_ID_QUERY=".value.nodes[0]?.slots[-1]?.session?.sessionId"
26+
JQ_SESSION_CAPABILITIES_QUERY=".value.nodes[0]?.slots[-1]?.session?.capabilities"
2627
SE_NODE_PORT=${SE_NODE_PORT:-"4444"}
27-
NODE_STATUS_ENDPOINT="$(python3 /opt/bin/video_gridUrl.py)/status"
28-
NODE_OWNER_ENDPOINT="$(python3 /opt/bin/video_gridUrl.py)/se/grid/node/owner"
28+
NODE_STATUS_ENDPOINT="${SE_SERVER_PROTOCOL}://${DISPLAY_CONTAINER_NAME}:${SE_NODE_PORT}/status"
2929
else
30-
JQ_SESSION_ID_QUERY=".[]?.node?.slots | .[0]?.session?.sessionId"
30+
JQ_SESSION_ID_QUERY=".value.node?.slots[-1]?.session?.sessionId"
31+
JQ_SESSION_CAPABILITIES_QUERY=".value.node?.slots[-1]?.session?.capabilities"
3132
SE_NODE_PORT=${SE_NODE_PORT:-"5555"}
3233
NODE_STATUS_ENDPOINT="${SE_SERVER_PROTOCOL}://${DISPLAY_CONTAINER_NAME}:${SE_NODE_PORT}/status"
33-
NODE_OWNER_ENDPOINT="${SE_SERVER_PROTOCOL}://${DISPLAY_CONTAINER_NAME}:${SE_NODE_PORT}/se/grid/node/owner"
3434
fi
3535

36-
/opt/bin/validate_endpoint.sh "${NODE_STATUS_ENDPOINT}"
3736
if [ -n "${SE_ROUTER_USERNAME}" ] && [ -n "${SE_ROUTER_PASSWORD}" ]; then
3837
BASIC_AUTH="$(echo -en "${SE_ROUTER_USERNAME}:${SE_ROUTER_PASSWORD}" | base64 -w0)"
3938
BASIC_AUTH="Authorization: Basic ${BASIC_AUTH}"
@@ -92,6 +91,7 @@ function wait_for_display() {
9291
function check_if_api_respond() {
9392
endpoint_checks=$(curl --noproxy "*" -H "${BASIC_AUTH}" -sk -o /dev/null -w "%{http_code}" "${NODE_STATUS_ENDPOINT}")
9493
if [[ "${endpoint_checks}" != "200" ]]; then
94+
/opt/bin/validate_endpoint.sh "${NODE_STATUS_ENDPOINT}"
9595
return 1
9696
fi
9797
return 0
@@ -199,8 +199,8 @@ function stop_if_recording_inprogress() {
199199
}
200200

201201
function log_node_response() {
202-
if [[ -f "/tmp/graphQL_$session_id.json" ]]; then
203-
jq '.' "/tmp/graphQL_$session_id.json"
202+
if [[ -n "${session_capabilities}" ]]; then
203+
jq '.' <<<"${session_capabilities}"
204204
fi
205205
}
206206

@@ -249,15 +249,14 @@ else
249249
recorded_count=0
250250

251251
wait_for_api_respond
252-
while curl --noproxy "*" -H "${BASIC_AUTH}" -sk --request GET ${NODE_STATUS_ENDPOINT} >/tmp/status.json; do
253-
session_id=$(jq -r "${JQ_SESSION_ID_QUERY}" /tmp/status.json)
252+
while curl --noproxy "*" -H "${BASIC_AUTH}" -sk --request GET ${NODE_STATUS_ENDPOINT} >"/tmp/status.json"; do
253+
session_id="$(jq -r "${JQ_SESSION_ID_QUERY}" "/tmp/status.json")"
254254
if [[ "$session_id" != "null" && "$session_id" != "" && "$session_id" != "reserved" && "$recording_started" = "false" ]]; then
255255
echo "$(date -u +"${ts_format}") [${process_name}] - Session: $session_id is created"
256-
return_list=($(bash ${VIDEO_CONFIG_DIRECTORY}/video_graphQLQuery.sh "$session_id"))
256+
session_capabilities="$(jq -r "${JQ_SESSION_CAPABILITIES_QUERY}" "/tmp/status.json")"
257+
return_list=($(bash "${VIDEO_CONFIG_DIRECTORY}/video_nodeQuery.sh" "${session_id}" "${session_capabilities}"))
257258
caps_se_video_record="${return_list[0]}"
258259
video_file_name="${return_list[1]}.mp4"
259-
endpoint_url="${return_list[2]}"
260-
/opt/bin/validate_endpoint.sh "${endpoint_url}" "true"
261260
if [[ "$caps_se_video_record" = "true" ]]; then
262261
echo "$(date -u +"${ts_format}") [${process_name}] - Start recording: $caps_se_video_record, video file name: $video_file_name"
263262
log_node_response

Video/video_nodeQuery.sh

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/usr/bin/env bash
2+
3+
# Define parameters
4+
SESSION_ID=$1
5+
SESSION_CAPABILITIES=$2
6+
7+
VIDEO_CAP_NAME=${VIDEO_CAP_NAME:-"se:recordVideo"}
8+
TEST_NAME_CAP=${TEST_NAME_CAP:-"se:name"}
9+
VIDEO_NAME_CAP=${VIDEO_NAME_CAP:-"se:videoName"}
10+
VIDEO_FILE_NAME_TRIM=${SE_VIDEO_FILE_NAME_TRIM_REGEX:-"[:alnum:]-_"}
11+
VIDEO_FILE_NAME_SUFFIX=${SE_VIDEO_FILE_NAME_SUFFIX:-"true"}
12+
13+
if [ -n "${SESSION_CAPABILITIES}" ]; then
14+
# Extract the values from the response
15+
RECORD_VIDEO=$(jq -r '."'${VIDEO_CAP_NAME}'"' <<<"${SESSION_CAPABILITIES}")
16+
TEST_NAME=$(jq -r '."'${TEST_NAME_CAP}'"' <<<"${SESSION_CAPABILITIES}")
17+
VIDEO_NAME=$(jq -r '."'${VIDEO_NAME_CAP}'"' <<<"${SESSION_CAPABILITIES}")
18+
fi
19+
20+
# Check if enabling to record video
21+
if [ "${RECORD_VIDEO,,}" = "false" ]; then
22+
RECORD_VIDEO=false
23+
else
24+
RECORD_VIDEO=true
25+
fi
26+
27+
# Check if video file name is set via capabilities
28+
if [ "${VIDEO_NAME}" != "null" ] && [ -n "${VIDEO_NAME}" ]; then
29+
TEST_NAME="${VIDEO_NAME}"
30+
elif [ "${TEST_NAME}" != "null" ] && [ -n "${TEST_NAME}" ]; then
31+
TEST_NAME="${TEST_NAME}"
32+
else
33+
TEST_NAME=""
34+
fi
35+
36+
# Check if append session ID to the video file name suffix
37+
if [ -z "${TEST_NAME}" ]; then
38+
TEST_NAME="${SESSION_ID}"
39+
elif [ "${VIDEO_FILE_NAME_SUFFIX,,}" = "true" ]; then
40+
TEST_NAME="${TEST_NAME}_${SESSION_ID}"
41+
fi
42+
43+
# Normalize the video file name
44+
TEST_NAME="$(echo "${TEST_NAME}" | tr ' ' '_' | tr -dc "${VIDEO_FILE_NAME_TRIM}" | cut -c 1-251)"
45+
46+
return_array=("${RECORD_VIDEO}" "${TEST_NAME}")
47+
48+
# stdout the values for other scripts consuming
49+
echo "${return_array[@]}"

0 commit comments

Comments
 (0)