Added direct HTTP deploy support

  The following new parameters were added to ironic.conf:
    - image_download_source: allowed values are swift,http.
      defaults to "swift"
    - http_image_subdir: The name of subdirectory under
      ronic-conductor node's HTTP root path. Defaults to
      "agent_images"

Related-Prod: PROD-32758
Change-Id: I468bcdb7b922292adf9e536339b857ab9c4ee4a4
diff --git a/README.rst b/README.rst
index ddf253f..e208f7b 100644
--- a/README.rst
+++ b/README.rst
@@ -259,6 +259,15 @@
           efi_system_partition_size: 200
           bios_boot_partition_size: 1
 
+Enable direct http deploy feature
+========================================================
+
+.. code-block:: yaml
+
+  ironic:
+    conductor:
+      image_download_source: http
+
 Upgrades
 ========
 
diff --git a/ironic/files/queens/ironic.conf b/ironic/files/queens/ironic.conf
index 8eb5ff6..b561448 100644
--- a/ironic/files/queens/ironic.conf
+++ b/ironic/files/queens/ironic.conf
@@ -665,6 +665,22 @@
 # is configured to "swift". (integer value)
 #deploy_logs_swift_days_to_expire = 30
 
+# Specifies whether direct deploy interface should try to use
+# the image source directly or if ironic should cache the
+# image on the conductor and serve it from ironic's own http
+# server. This option takes effect only when instance image is
+# provided from the Image service. (string value)
+# Possible values:
+# swift - IPA ramdisk retrieves instance image from the Object
+# Storage service.
+# http - IPA ramdisk retrieves instance image from HTTP
+# service served at conductor nodes.
+{%- if conductor.image_download_source is defined %}
+image_download_source = {{ conductor.image_download_source }}
+{%- else %}
+#image_download_source = swift
+{%- endif %}
+
 
 [ansible]
 
@@ -1369,6 +1385,17 @@
 # Deprecated group/name - [conductor]/configdrive_use_swift
 #configdrive_use_object_store = false
 
+# The name of subdirectory under ironic-conductor node's HTTP
+# root path which is used to place instance images for the
+# direct deploy interface, when local HTTP service is
+# incorporated to provide instance image instead of swift
+# tempurls. (string value)
+{%- if conductor.http_image_subdir is defined %}
+http_image_subdir = {{ conductor.http_image_subdir }}
+{%- else %}
+#http_image_subdir = agent_images
+{%- endif%}
+
 # Type of object store endpoint type to be used as a backend
 # (string value)
 # Possible values: