Keepalived notification
diff --git a/README.rst b/README.rst
index 639d612..f078f2b 100644
--- a/README.rst
+++ b/README.rst
@@ -17,12 +17,14 @@
         enabled: True
         instance:
           VIP1:
+            nopreempt: True
             priority: 100 (highest priority must be on primary server, different for cluster members)
             virtual_router_id: 51
             password: pass
             address: 192.168.10.1
             interface: eth0
           VIP2:
+            nopreempt: True
             priority: 150 (highest priority must be on primary server, different for cluster members)
             virtual_router_id: 52
             password: pass
@@ -38,6 +40,56 @@
         enabled: True
         instance:
           VIP1:
+            nopreempt: True
+            priority: 100 (highest priority must be on primary server, different for cluster members)
+            virtual_router_id: 51
+            password: pass
+            addresses:
+            - 192.168.10.1
+            - 192.168.10.2
+            interface: eth0
+
+Disable nopreempt mode to have Master. Highest priority is taken in all cases.
+
+.. code-block:: yaml
+
+    keepalived:
+      cluster:
+        enabled: True
+        instance:
+          VIP1:
+            nopreempt: False
+            priority: 100 (highest priority must be on primary server, different for cluster members)
+            virtual_router_id: 51
+            password: pass
+            addresses:
+            - 192.168.10.1
+            - 192.168.10.2
+            interface: eth0
+
+Notify action in keepalived.
+
+.. code-block:: yaml
+
+    keepalived:
+      cluster:
+        enabled: True
+        instance:
+          VIP1:
+            nopreempt: True
+            notify_action: 
+              master: |
+                /usr/bin/docker start jenkins
+                /usr/bin/docker start gerrit
+                exit 0
+              backup: |
+                /usr/bin/docker stop jenkins
+                /usr/bin/docker stop gerrit
+                exit 0
+              fault: |
+                /usr/bin/docker stop jenkins
+                /usr/bin/docker stop gerrit
+                exit 0
             priority: 100 (highest priority must be on primary server, different for cluster members)
             virtual_router_id: 51
             password: pass
diff --git a/keepalived/cluster.sls b/keepalived/cluster.sls
index 85b107f..1c6abbf 100644
--- a/keepalived/cluster.sls
+++ b/keepalived/cluster.sls
@@ -14,6 +14,25 @@
   - require:
     - pkg: keepalived_packages
 
+{% for instance_name, instance in cluster.instance.iteritems() %}
+
+{{%- if instance.notify_action is defined }}
+
+keepalived_{{ instance_name }}_notify:
+  file.managed:
+  - name: /usr/local/bin/keepalivednotify_{{ instance_name }}.sh
+  - mode: 744
+  - source: salt://keepalived/files/keepalivednotify.sh
+  - template: jinja
+  - require:
+    - pkg: keepalived_packages
+  - require_in:
+    - service: keepalived_service
+
+{%- endif %}
+
+{% endfor %}
+
 keepalived_service:
   service.running:
   - name: {{ cluster.service }}
diff --git a/keepalived/files/keepalived.conf b/keepalived/files/keepalived.conf
index ed429be..af62535 100644
--- a/keepalived/files/keepalived.conf
+++ b/keepalived/files/keepalived.conf
@@ -4,11 +4,18 @@
 
 {% for instance_name, instance in cluster.instance.iteritems() %}
 vrrp_instance {{ instance_name }} {
+    {{%- if instance.get('nopreempt', True) }}
     state BACKUP
     nopreempt
     garp_master_delay 5
     garp_master_repeat 3
     garp_master_refresh 1
+    {%- else %}
+    state MASTER
+    {%- endif %}
+    {{%- if instance.notify_action is defined }}
+    notify /usr/local/bin/keepalivednotify_{{ instance_name }}.sh
+    {%- endif %}
     interface {{ instance.interface }}
     virtual_router_id {{ instance.virtual_router_id }}
     priority {{ instance.priority }}
diff --git a/keepalived/files/keepalivednotify.sh b/keepalived/files/keepalivednotify.sh
new file mode 100644
index 0000000..a4f1496
--- /dev/null
+++ b/keepalived/files/keepalivednotify.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+TYPE=$1
+NAME=$2
+STATE=$3
+
+case $STATE in
+        "MASTER") /usr/bin/docker start jenkins
+                  /usr/bin/docker start artifactory
+                  exit 0
+                  ;;
+        "BACKUP") /usr/bin/docker stop jenkins
+                  /usr/bin/docker stop artifactory
+                  exit 0
+                  ;;
+        "FAULT")  /usr/bin/docker stop jenkins
+                  /usr/bin/docker stop artifactory
+                  exit 0
+                  ;;
+        *)        echo "unknown state"
+                  exit 1
+                  ;;
+esac
\ No newline at end of file