# enable connection tracking for protocal sctp
 # install the congress rpms
 # upload and explode the congress puppet module
+# install doctor driver ## Can be removed in Newton
 LIBGUESTFS_BACKEND=direct virt-customize \
     --upload ../opnfv-puppet-tripleo.tar.gz:/etc/puppet/modules \
     --run-command "sed -i 's/^#UseDNS.*$/UseDNS no/' /etc/ssh/sshd_config" \
     --install "python2-congressclient" \
     --upload puppet-congress.tar.gz:/etc/puppet/modules/ \
     --run-command "cd /etc/puppet/modules/ && tar xzf puppet-congress.tar.gz" \
+    --run-command "cd /usr/lib/python2.7/site-packages/congress/datasources && curl -O $doctor_driver" \
     -a overcloud-full_build.qcow2
 
 mv -f overcloud-full_build.qcow2 overcloud-full.qcow2
 
--- /dev/null
+From 26d39efbb931e04a5e95d504c27ede12d0a81c43 Mon Sep 17 00:00:00 2001
+From: Masahito Muroi <muroi.masahito@lab.ntt.co.jp>
+Date: Fri, 25 Mar 2016 14:06:00 +0900
+Subject: [PATCH] Allows DataSource's config field to have not dict type obj
+
+CongressClient expects all datasource driver has dict object in
+config field. It raises an error when a datasource doesn't have
+any config.
+
+This patch allows config fields to be None object.
+
+Change-Id: I73354f1073f3f814854652eaeaa4b3bbe4bfcf7d
+---
+
+diff --git a/congressclient/common/utils.py b/congressclient/common/utils.py
+index 9a381e8..b5cedd4 100644
+--- a/congressclient/common/utils.py
++++ b/congressclient/common/utils.py
+@@ -77,6 +77,8 @@
+     :param data: a dict
+     :rtype: a string formatted to {a:b, c:d}
+     """
++    if not isinstance(data, dict):
++        return str(data)
+     return str({str(key): str(value) for key, value in data.items()})
 
 # enabling ceph OSDs to live on the controller
 # OpenWSMan package update supports the AMT Ironic driver for the TealBox
 # seeding configuration files specific to OPNFV
+# add congress client and apply: https://review.openstack.org/#/c/297515/
 # add congress password to python-triploclient
 LIBGUESTFS_BACKEND=direct virt-customize \
     --upload ../opnfv-tht.tar.gz:/usr/share \
     --upload ../opnfv-environment.yaml:/home/stack/ \
     --upload ../virtual-environment.yaml:/home/stack/ \
     --install "python2-congressclient" \
+    --upload ../python-congressclient.diff:/tmp \
+    --run-command "cd /usr/lib/python2.7/site-packages && patch -p1 < /tmp/python-congressclient.diff" \
     --run-command "sed -i '/SERVICE_LIST/a\\    \x27congress\x27: {\x27password_field\x27: \x27OVERCLOUD_CONGRESS_PASSWORD\x27},' /usr/lib/python2.7/site-packages/tripleoclient/constants.py" \
     --run-command "sed -i '/PASSWORD_NAMES =/a\\    \"OVERCLOUD_CONGRESS_PASSWORD\",' /usr/lib/python2.7/site-packages/tripleoclient/utils.py" \
     --run-command "sed -i '/AodhPassword/a\\        parameters\[\x27CongressPassword\x27\] = passwords\[\x27OVERCLOUD_CONGRESS_PASSWORD\x27\]' /usr/lib/python2.7/site-packages/tripleoclient/v1/overcloud_deploy.py" \
 
 onos_jdk_uri=https://www.dropbox.com/s/qyujpib8zyhzeev
 onos_ovs_uri=https://www.dropbox.com/s/gm6o6k80l56pf0o
 openstack_congress=https://radez.fedorapeople.org/openstack-congress-2016.1-1.fc24.noarch.rpm
+doctor_driver=https://raw.githubusercontent.com/muroi/congress/doctor-poc/congress/datasources/doctor_driver.py
 
 dpdk_uri_base=http://artifacts.opnfv.org/ovsnfv
 dpdk_rpms=(
 
             --config password=\$OS_PASSWORD \\
             --config auth_url=\$OS_AUTH_URL
     done
+    openstack congress datasource create doctor "doctor"
 fi
 EOI