CONFIG=${CONFIG:-'/var/opt/opnfv'}
 RESOURCES=${RESOURCES:-"$CONFIG/images"}
 LIB=${LIB:-"$CONFIG/lib"}
-VALID_CMDS="undercloud overcloud debug-stack -h --help"
+VALID_CMDS="undercloud overcloud opendaylight debug-stack -h --help"
 
 source $LIB/utility-functions.sh
 
   echo -e "                                     user    Optional: Defaults to 'stack'\n"
   echo -e "                                     command Optional: Defaults to none\n"
   echo -e ""
+  echo -e "   opendaylight                      Connect to OpenDaylight Karaf console\n"
+  echo -e ""
   echo -e "   overcloud  [ node [ command ] ]   Connect to an Overcloud node and optionally execute a command\n"
   echo -e "                                     node    Required: in format controller|compute<number>.  Example: controller0\n"
   echo -e "                                     command Optional: Defaults to none\n"
                 fi
                 exit 0
             ;;
+        opendaylight)
+                opendaylight_connect
+                exit 0
+            ;;
         debug-stack)
                 undercloud_connect stack "$(typeset -f debug_stack); debug_stack"
                 exit 0
 
   fi
 }
 
+##connects to opendaylight karaf console
+##params: None
+function opendaylight_connect {
+  local opendaylight_ip
+  opendaylight_ip=$(undercloud_connect "stack" "cat overcloudrc | grep SDN_CONTROLLER_IP | grep -Eo [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
+
+  if [ "$opendaylight_ip" == "" ]; then
+    echo -e "Unable to find IP for OpenDaylight in overcloudrc"
+    return 1
+  else
+    echo -e "Connecting to ODL Karaf console.  Default password is 'karaf'"
+  fi
+
+  ssh -p 8101 ${SSH_OPTIONS[@]} karaf@${opendaylight_ip}
+}
+
 ##outputs heat stack deployment failures
 ##params: none
 function debug_stack {