Add horizon
diff --git a/README b/README
index ef7a43e..99d6b5e 100644
--- a/README
+++ b/README
@@ -45,7 +45,7 @@
 export FORMULAS_BRANCH=master
 
 mkdir -p ${FORMULAS_PATH}
-declare -a formula_services=("linux" "reclass" "salt" "openssh" "ntp" "git" "nginx" "collectd" "sensu" "heka" "sphinx" "mysql" "grafana" "libvirt" "rsyslog" "memcached" "rabbitmq" "apache" "keystone" "glance" "nova" "neutron" "cinder" "heat")
+declare -a formula_services=("linux" "reclass" "salt" "openssh" "ntp" "git" "nginx" "collectd" "sensu" "heka" "sphinx" "mysql" "grafana" "libvirt" "rsyslog" "memcached" "rabbitmq" "apache" "keystone" "glance" "nova" "neutron" "cinder" "heat" "horizon")
 for formula_service in "${formula_services[@]}"; do
   _BRANCH=${FORMULAS_BRANCH}
     [ ! -d "${FORMULAS_PATH}/${formula_service}" ] && {
@@ -67,10 +67,14 @@
 
 Apply patches (check latest patchset):
 cd /root/formulas/nova
-git fetch https://gerrit.mcp.mirantis.net/salt-formulas/nova refs/changes/81/4381/5 && git checkout -b config FETCH_HEAD
+git fetch https://gerrit.mcp.mirantis.net/salt-formulas/nova refs/changes/81/4381/8 && git checkout -b config FETCH_HEAD
 make install
 
-salt-call state.apply salt
+fallocate -l 10G /lvm.img
+losetup /dev/loop0 /lvm.img
+echo -e '#!/bin/bash\nlosetup /dev/loop0 /lvm.img' > /etc/rc.local
+
+#salt-call state.apply salt
 salt-call state.apply linux,ntp,openssh
 salt-call state.apply memcached
 salt-call state.apply rabbitmq
@@ -79,18 +83,13 @@
 salt-call state.apply glance
 salt-call state.apply neutron
 salt-call state.apply nova.controller
+
 salt-call state.apply nova.compute
-
 service nova-compute restart
 
-fallocate -l 10G /lvm.img
-losetup /dev/loop0 /lvm.img
-echo -e '#!/bin/bash\nlosetup /dev/loop0 /lvm.img' > /etc/rc.local
-pvcreate /dev/loop0
-vgcreate cinder-volume /dev/loop0
-
 salt-call state.apply cinder
 salt-call state.apply heat
+salt-call state.apply horizon
 
 
 . /root/keystonercv3
@@ -107,3 +106,5 @@
 
 cinder create --name test 1
 nova volume-attach test 49a471ec-2e6d-4810-9161-6c191e1370f5 # UUID of volume
+
+# Horizon is available on port :8078
diff --git a/classes/cluster/virtual-mcp-allinone/openstack/init.yml b/classes/cluster/virtual-mcp-allinone/openstack/init.yml
index acea0b5..04663ba 100755
--- a/classes/cluster/virtual-mcp-allinone/openstack/init.yml
+++ b/classes/cluster/virtual-mcp-allinone/openstack/init.yml
@@ -24,6 +24,7 @@
 - system.cinder.control.backend.lvm
 - service.cinder.volume.single
 - system.cinder.volume.backend.lvm
+- system.horizon.server.single
 parameters:
   _param:
     openstack_version: ocata
@@ -38,6 +39,7 @@
     neutron_version: ${_param:openstack_version}
     cinder_version: ${_param:openstack_version}
     heat_version: ${_param:openstack_version}
+    horizon_version: ${_param:openstack_version}
     keystone_service_token: workshop
     keystone_admin_password: workshop
     keystone_ceilometer_password: workshop
@@ -64,6 +66,7 @@
     cluster_local_address: ${_param:single_address}
     tenant_address: ${_param:single_address}
     heat_domain_admin_password: workshop
+    horizon_secret_key: workshop
   keystone:
     server:
       tokens:
@@ -121,3 +124,6 @@
     server:
       message_queue:
         virtual_host: openstack
+  horizon:
+    server:
+      secure: False