Make sure tgt is using config.d approach

Fixes bug 1045358.

On ubuntu Oneiric, the tgt configuration was not using the config.d
approach. tgt was unable to find the config files, so no volumes could
be created. This fix makes sure, that the config.d directory is there,
and the configuration includes files from there.

Was Cinder only, added same fix for Nova volumes

Change-Id: I6752cb628dd22e91e640f0f584fafefa4cd6d0f1
diff --git a/lib/cinder b/lib/cinder
index 5f0b255..ec491dd 100644
--- a/lib/cinder
+++ b/lib/cinder
@@ -189,10 +189,19 @@
     git_clone $CINDERCLIENT_REPO $CINDERCLIENT_DIR $CINDERCLIENT_BRANCH
 }
 
+# apply config.d approach (e.g. Oneiric does not have this)
+function _configure_tgt_for_config_d() {
+    if [[ ! -d /etc/tgt/conf.d/ ]]; then
+        sudo mkdir /etc/tgt/conf.d
+        echo "include /etc/tgt/conf.d/*.conf" | sudo tee -a /etc/tgt/targets.conf
+    fi
+}
+
 # start_cinder() - Start running processes, including screen
 function start_cinder() {
     if is_service_enabled c-vol; then
         if [[ "$os_PACKAGE" = "deb" ]]; then
+            _configure_tgt_for_config_d
             if [[ ! -f /etc/tgt/conf.d/cinder.conf ]]; then
                echo "include $CINDER_DIR/volumes/*" | sudo tee /etc/tgt/conf.d/cinder.conf
             fi
diff --git a/lib/n-vol b/lib/n-vol
index 30be0cd..a9d1c7d 100644
--- a/lib/n-vol
+++ b/lib/n-vol
@@ -5,6 +5,7 @@
 # - functions
 # - KEYSTONE_AUTH_* must be defined
 # SERVICE_{TENANT_NAME|PASSWORD} must be defined
+# _configure_tgt_for_config_d() from lib/cinder
 
 # stack.sh
 # ---------
@@ -94,6 +95,7 @@
 function start_nvol() {
     # Setup the tgt configuration file
     if [[ ! -f /etc/tgt/conf.d/nova.conf ]]; then
+        _configure_tgt_for_config_d
        sudo mkdir -p /etc/tgt/conf.d
        echo "include $NOVA_DIR/volumes/*" | sudo tee /etc/tgt/conf.d/nova.conf
     fi