diff --git a/comac-in-a-box/resources/simpleovs b/comac-in-a-box/resources/simpleovs
new file mode 100755
index 0000000..f43b8a1
--- /dev/null
+++ b/comac-in-a-box/resources/simpleovs
@@ -0,0 +1,77 @@
+#!/bin/bash -x
+#
+# Copyright 2019-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -o errexit
+set -o pipefail
+set -o nounset
+
+exec 3>&1
+exec &>>/var/log/simple-ovs-cni.log
+
+PATH="$CNI_PATH:$(dirname "${BASH_SOURCE[0]}"):$PATH"
+CNI_CONF=$(cat /dev/stdin)
+
+get_bridge() {
+	echo "br-$(echo $CNI_CONF | jq -r '.name')"
+}
+
+ipam() {
+	local plugin=$(echo $CNI_CONF | jq -r '.ipam.type')
+	local res=$(echo $"$CNI_CONF" | "$plugin" | jq -c '.')
+	echo $res
+}
+
+add_br_and_port() {
+	mkdir -p /var/run/netns/
+        ln -sfT $CNI_NETNS /var/run/netns/$CNI_CONTAINERID
+
+	local bridge=$(get_bridge)
+	local ip=$1
+
+	ovs-vsctl --may-exist add-br $bridge
+	ovs-vsctl add-port $bridge $CNI_IFNAME -- set Interface $CNI_IFNAME type=internal
+
+	ip link set $CNI_IFNAME netns $CNI_CONTAINERID
+        ip netns exec $CNI_CONTAINERID ip addr add $ip dev $CNI_IFNAME
+        ip netns exec $CNI_CONTAINERID ip link set $CNI_IFNAME up
+}
+
+delete_br_and_port() {
+	local bridge="br-$(echo $CNI_CONF | jq -r '.name')"
+	ovs-vsctl del-port $CNI_IFNAME
+	if [ -z "$(ovs-vsctl list-ports $bridge)" ]; then
+		ovs-vsctl del-br $bridge
+	fi
+}
+
+case $CNI_COMMAND in
+ADD)
+	res=$(ipam)
+	ip=$(echo $res | jq -r '.ip4.ip')
+	add_br_and_port $ip
+        echo '{"cniVersion":"0.2.0"}' | jq -c --arg ip $ip '.ip4.ip = $ip' >&3
+	;;
+DEL)
+	set +o errexit
+	ipam
+	delete_br_and_port
+	set -o errexit
+	;;
+*)
+	echo "CNI_COMMAND=[ADD|DEL] only supported"
+	exit 1
+	;;
+esac
