From 4c271a57d5495198c3ba72f01e98b79cf033f3e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Nussbaumer?= Date: Wed, 5 Aug 2020 10:29:05 +0200 Subject: [PATCH] Pull underlying capabilities up to 00-multus.conf Using Python, we analyze the content of the master plugin configuration, and we integrate any capabilities from the underlying chained plugins declaration. We only pull enabled capabilties from the underlying (chained) plugin definitions. Fixes intel#544 Signed-off-by: --- images/entrypoint.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/images/entrypoint.sh b/images/entrypoint.sh index d931696b9..cc98a6cb2 100755 --- a/images/entrypoint.sh +++ b/images/entrypoint.sh @@ -302,6 +302,24 @@ if [ "$MULTUS_CONF_FILE" == "auto" ]; then MASTER_PLUGIN_NET_NAME="multus-cni-network" fi + capabilities_python_filter_tmpfile=$(mktemp) + cat << EOF > $capabilities_python_filter_tmpfile +import json,sys +conf = json.load(sys.stdin) +capabilities = {} +for capa in [p['capabilities'] for p in conf['plugins'] if 'capabilities' in p]: + capabilities.update({capability:enabled for (capability,enabled) in capa.items() if enabled}) +if len(capabilities) > 0: + print("""\"capabilities\": """ + json.dumps(capabilities) + ",") +else: + print("") +EOF + + NESTED_CAPABILITIES_STRING="$(cat $MULTUS_AUTOCONF_DIR/$MASTER_PLUGIN | \ + python $capabilities_python_filter_tmpfile)" + rm $capabilities_python_filter_tmpfile + log "Nested capabilities string: $NESTED_CAPABILITIES_STRING" + MASTER_PLUGIN_LOCATION=$MULTUS_AUTOCONF_DIR/$MASTER_PLUGIN MASTER_PLUGIN_JSON="$(cat $MASTER_PLUGIN_LOCATION)" log "Using $MASTER_PLUGIN_LOCATION as a source to generate the Multus configuration" @@ -310,6 +328,7 @@ if [ "$MULTUS_CONF_FILE" == "auto" ]; then $CNI_VERSION_STRING "name": "$MASTER_PLUGIN_NET_NAME", "type": "multus", + $NESTED_CAPABILITIES_STRING $ISOLATION_STRING $LOG_LEVEL_STRING $LOG_FILE_STRING