diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index a3a1729..41c84f8 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,9 +1,953 @@
+=========
+Changelog
+=========
 
-===============
-jenkins-formula
-===============
+Version 2017.8
+=============================
 
-0.1
----
+commit 431a69479ff797f0561ee227931cadbae09bca89 (HEAD -> master, origin/master, origin/HEAD)
+Author: Jakub Josef <jakub.josef@gmail.com>
 
-- Initial commit to Community formula form
+    Fixed artifactory config enforcing
+
+commit ff4059c188205660d282c9a25e6ba09f75b9318a
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed jenkins artifactory server enforcement
+
+commit 63dd4028ea8634669ce53384ad7e992f0859397d
+Merge: f4e588d 6606be0
+Author: Jakub Josef <jjosef@mirantis.com>
+
+    Merge "Removed hardcode in the LDAP server name"
+
+commit f4e588ddf61e615319f3fb60400ba5fbed780228
+Merge: 9bb6865 6f97771
+Author: Alexander Evseev <aevseev@mirantis.com>
+
+    Merge "Add optional parameter to set JJB version from PIP"
+
+commit 6f977715b67ed56cb4ae1f178f34c697bb7c1eb1
+Author: Alexander Evseev <aevseev@mirantis.com>
+
+    Add optional parameter to set JJB version from PIP
+
+commit 9bb6865a1c17b483e04b7cdc5c1296620c554f6b
+Author: Alexander Evseev <aevseev@mirantis.com>
+
+    Don't fail if job_builder.config.path is not set
+
+commit d31123cfa2aa3333261951dd8c75edb904583c5a
+Author: Alexander Evseev <aevseev@mirantis.com>
+
+    Add optional path to job definitions for JJB
+
+commit 362c02fde248f36b13c8aa04738d36cd61f24360
+Author: Yuriy Taraday <yorik.sar@gmail.com>
+
+    Fix XML for workflow
+
+commit ea190435024c74dd2a213d51276b71fbf8914a6f
+Author: chnyda <chnyda@mirantis.com>
+
+    Fix grains and display
+
+commit 9c05a3d7487b6fa76045a9c26bc92ec6852b6eae
+Author: chnyda <chnyda@mirantis.com>
+
+    Use version instead of backupVersion for grains
+
+commit 2d78731b32469e7c2d251183d3af69df280bfbd7
+Author: chnyda <chnyda@mirantis.com>
+
+    Fix exception if jenkins job doesn't exist
+
+commit d6f7635933fb836d0d88c3a491a603323686c5a3
+Author: chnyda <chnyda@mirantis.com>
+
+    Fix grains in case python-jenkins not installed
+
+commit 124ca04baa3d08462aaf09bc9b219f7962595ee8
+Author: chnyda <chnyda@mirantis.com>
+
+    Fix job templates and grain
+
+commit 90f133f8b0095b9728758c01416d09ee93313200
+Author: chnyda <chnyda@mirantis.com>
+
+    Compare jobs files with their hash and update templates
+
+commit 6606be0354d76b97ad94cdbca599e28766cf4fab
+Author: Andrey <agrebennikov@mirantis.com>
+
+    Removed hardcode in the LDAP server name
+
+commit a58e828530683af882bfff3d5c1cb5862cadf972
+Author: Ales Komarek <ales.komarek@newt.cz>
+
+    Optional credentials for lib
+
+commit 9d9b0ed9fa5d89ca066a3ac7890ca7c41199a558
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Improved artifactory servers control
+
+commit 86686e9dd64b1ec8caf0301653478448705e8656
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed enforcing an artifactory config issue while setting up a new server
+
+commit da02b2e6b3201cbae7c1a6a31e6efa68104067b6
+Author: Ruslan Kamaldinov <rkamaldinov@mirantis.com>
+
+    Fix jobs cleanup
+
+commit 3d8bffe2d80ebdfb69bd89b434e763aa1847f978
+Author: Ilya Kharin <ikharin@mirantis.com>
+
+    Add verbose error messages at __virtual__
+
+commit 7f95b080009a9691cbab172da24d81c59b743340
+Author: Ilya Kharin <ikharin@mirantis.com>
+
+    Add python-bcrypt as a dependency for the formula
+
+commit cfafe5b2eedb7888964cbad107251af5b66058fb
+Author: chnyda <chnyda@mirantis.com>
+
+    Add support of regex in trigger from gerrit branch
+
+commit ff010661c80a8a1359bc6a36f6cb5de4a54d25d5
+Merge: 0a56d08 7339a00
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Merge "Fixed jenkins master node configuration"
+
+commit 7339a0044b9175e32ec9b5474727870780c88f29
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed jenkins master node configuration
+
+commit 0a56d08594b9ed8e31e7c47a67dc76f03c3b3a9e
+Merge: 86b7059 5878754
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Merge "Fixed Jenkins master configuration enforcing"
+
+commit 5878754461cc98125a0ef23be79050931203a363
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed Jenkins master configuration enforcing
+
+commit 86b7059c71882699c153bfb17a6de51c3a0dbe2e
+Merge: 1f0384a d2a6203
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Merge "Fixed labels in master node config enforcing"
+
+commit d2a62036b3707219e30102248c4772d6112b82df
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed labels in master node config enforcing
+
+commit 1f0384afa5bf6295a9ffdecfb2229847e8ce74da
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix invalid syntax
+
+commit 23d2c24d4ca3eda74533ad5237655c0ab07748c7
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix typo
+
+commit c03fdeccb91493cd6ce5aebaf4c6d3caca170ce3
+Merge: 5e528da b07ce1d
+Author: jenkins-mk jenkins-mk <jenkins-mk@gerrit.mcp.mirantis.net>
+
+    Merge "Fixed pipeline global library configuration saving error"
+
+commit b07ce1dd55ca6e8a16a5330c9b6398e52ac434cd
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed pipeline global library configuration saving error
+
+commit 5e528da06d09ccac3bb800b386eb84878f0de292
+Merge: c614fff 1bb7f44
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Merge "Added jenkins master configuration possibility"
+
+commit 1bb7f44575285ecd82986a453dbc0456285e7693
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Added jenkins master configuration possibility
+
+commit c614fff46199b7cbc2c3f8e4fd87e3ae708d809d
+Merge: 2c98794 269a104
+Author: Jakub Josef <jjosef@mirantis.com>
+
+    Merge "Remove newline at EOF in hudson.model.UpdateCenter.xml"
+
+commit 269a10492889946da76458675563b47ec059ad14
+Author: Yuriy Taraday <yorik.sar@gmail.com>
+
+    Remove newline at EOF in hudson.model.UpdateCenter.xml
+
+commit 2c9879445826a1c2fc7807615abc2c00c5225e51
+Merge: 69871cf 691fb37
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Merge "Fixed manipulation with global libraries in some weird cases"
+
+commit 691fb372db5e2cdfcb31cf654ec43f8a5d5714a6
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed manipulation with global libraries in some weird cases
+
+commit 69871cf67c946591523d9e09bca1be195c8c675b
+Merge: 1cd53c9 8fd8294
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Merge "Fixed SMTP settigns enforcing"
+
+commit 8fd829465463770d85d2697ed44cb65f83da8557
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed SMTP settigns enforcing
+
+commit 1cd53c9b300b459ecfe901b3807622fc4e996725
+Merge: 27d05b3 a081153
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Merge "Fixed jenkins smtp and admin email enforcing"
+
+commit a08115330f96151723121ade1ed333d8e9310d44
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed jenkins smtp and admin email enforcing
+
+commit 27d05b3a743b040b4ce1495d1a580e275fadb927
+Author: Tomáš Kukrál <tomkukral@users.noreply.github.com>
+
+    fix meta/salt with missing pillar
+
+commit 5b7ae22d1530b421c33efe5d75c9779356bd0e03
+Merge: 8ead66b 9f6c570
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Merge "Fixed typo in jenkins smtp server"
+
+commit 9f6c5702d49d0da4b7b3e989daf53ac8142ae19d
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed typo in jenkins smtp server
+
+commit 8ead66b72b8449459b4a039331496e46acfbd4e0
+Merge: c70d18b 0194025
+Author: Filip Pytloun <fpytloun@mirantis.com>
+
+    Merge "Implemented artifactory server enforcing"
+
+commit 01940256e608cddf7796c1fca75214df8fc4848c
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented artifactory server enforcing
+
+commit c70d18b393d78ba132ad383978e82d0f00fd3330
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Manage minion.d using support metadata
+
+commit b393e4ade6737e44f63f9cdfdee4df9a23c86abd
+Author: Mark Mastoras <mmastoras@dprails.com>
+
+    Update service.sls
+
+commit de52b1c11928600254b6bf782ee541675ce20e6e
+Merge: b66b2f6 dfb288c
+Author: Filip Pytloun <fpytloun@mirantis.com>
+
+    Merge "Improved Jenkins SMTP settings"
+
+commit dfb288c47f4ac01feea6e551ae5edecb98847e35
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Improved Jenkins SMTP settings
+
+commit b66b2f66b615e03a06f2668ef7fef17fceeeb1fa
+Merge: 70d2220 d97f0fa
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Merge "Revert "Improved Jenkins plugin installing""
+
+commit d97f0fa7d8d646d62d89c73e0c8eb4c2b630bed8
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Revert "Improved Jenkins plugin installing"
+
+commit 70d22201f2b1767162b65913a19c47c6e04b603b
+Merge: 07fc80d bd692e9
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Merge "Improved Jenkins plugin installing"
+
+commit bd692e97b54b69442dffc0d700479799c453f8c7
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Improved Jenkins plugin installing
+
+commit 07fc80dc252010e39de10fe2a935af2cdc6f3534
+Merge: 17e19f2 e74e7a6
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Merge "Fixed imports in categorized views"
+
+commit e74e7a62d516cd5c44445b322f554484c6d3ac6f
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed imports in categorized views
+
+commit 17e19f2d8f97696f627476a1aa08b865331aed99
+Author: Tomáš Kukrál <tomkukral@users.noreply.github.com>
+
+    empty timer means no timer
+
+commit 7d9fce3e18fd0d1c0e63e8f1d182eea923de6774
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Extended jenkins views enforcing by Categorize Views
+
+commit 0a03c2cee0c10e8890f7250332fbff16261f04b0
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fix script approvals from client side
+
+commit 1a6627c7b27280b53bd62a3b222979fdd2fb2915
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Added support for gerrit trigger silent modes
+
+commit 26956a684c470e4f7742d80fbee5e7719807532e
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    New version of jenkins user enforcing
+
+commit bf0b73ee16d72df647d719e33bcb6845200e7635
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented jenkins scripts approving from client size
+
+commit 1aa64a58fc56df4fdc8b16c89bc7aa9d16bfebbd
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fix existence checking in jenkins credential state
+
+commit 81e158a29d06e6395cfbdaad216bcccb8bf4023f
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Remove whitespace from gerrit trigger vote skipping
+
+commit 7a3d4955edba5826eb390b958ccdd0114c2766d4
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Deleted extra comma
+
+commit facfadd57fc059ce70448c098fda51ad4e7dac2a
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fix Jenkins credentials state
+
+commit 35553056075843b696ff6299d506da617ae14083
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed working with Jenkins credentials with same id
+
+commit e01cf3c78cae53c70d9c6c0e63b9539d0a10e65b
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented enforcing of Jenkins themes
+
+commit 2a847fa447ce19f0b87149d6d5ca437abf0c95e4
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Always set user and password in minion config
+
+commit 8539c8909fb4ec2d20292cee2b66cb44f153107b
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implement skip voting on gerrit triggers
+
+commit f2450bf995ad43b037d411932edcc68d62fe35ef
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Add posibility to set compare type in Gerrit triggers
+
+commit 301dff8e09a5d8fbead716be4479850fc634d6ec
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Accept None as value of slave.user
+
+commit 99bc3ef235caaa091fd02ce04403bff84e5e2d76
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Accept None as a parameter to client.master.username
+
+commit f4b304dc8db123ba9f9887fa7cfc70d7d9adc01d
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Always set default value for parameters
+
+commit a9cf2c65ad7540230f1958c037c684b2d963dfcb
+Author: Tomáš Kukrál <tomkukral@users.noreply.github.com>
+
+    add support for job timer
+
+commit 83129fc2b5ee567623fa878ffffc983744db69e4
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Add support for replacing more params using job templates
+
+commit 061f77c0043d573f58e6994a3505814879890a0d
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix job template
+
+commit dd9f47c54974132f8290a47f0501faddf894aebd
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Add support for defining quiet period
+
+commit 01b485a45558720f21161ab1f4dddd23d7eaa2f5
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Add gerrit triggers
+
+commit 0e1abdb54adc3dbd83d33d37a5523f14465e598a
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix jobs cleanup when job templating is used
+
+commit 73bf99530c491dada7b64022f4799f049ca0052c (gerrit/master)
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Improved Jenkins global lib config state.
+
+commit 6e0cda9a29b921503f3583e4f9b3fc7104d01c9f
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented Jenkins global libs configuration by salt.
+
+commit ffe8bb20cd59fefcba2d4959f9ab68f78c9d83c6
+Author: Ales Komarek <ales.komarek@newt.cz>
+
+    Jenkins job templating
+
+commit 120714d2a0911ca580b7f19d7347ca5b064308e6
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented max keep builds property on jobs
+
+commit adf72faea369c17baf628fa0434a533a28acd527 (tag: mcp0.5)
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Unify Makefile, .gitignore and update readme
+
+commit 654a148bb903c50214d217910a26c78d289444db
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed creating jobs diff generating.
+
+commit 2a7739bfbeae8dbbc0bd060638ad253be31c218f
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Impemented Jenkins jobs cleanup - uninstallation of all undefined jobs.
+
+commit a6d4c83d98c5334beba7cfda951a7b555b6943df
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented Jenkins Slack plugin configuration.
+
+commit 60cc9d2c2b6588fd48b8682a1424f629607e65dc
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented SMTP settings from client side via script api.
+
+commit 95ad9806f73bfa9a72a95b61b9d9d03500ed8a40
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Improved working with None due to weird YAML get() behaviour.
+
+commit 0ee470e197ea77c053b8286d10f66b324f980a9d
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Matrix security extended to use GlobalMatrixAuthStrategy or ProjectMatrixAuthStrategy
+
+commit 7bb17ab3b5a8c5897deccb259c169e30d39c8edc
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented Jenkins views enforcing.
+
+commit 063a75367eb49b369e6dd63655dd768d45422b87
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented LDAP config and matrix auth security enforcements.
+
+commit 10b4e10dceae8d75d2f8683c40747990b2b0958b
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented plugins management from client side.
+
+commit b395d8e9dd35bf5aed8e627d9a8a8125621e0781
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed jenkins credential params string generating.
+
+commit ebcf9dde381786dba6f3d9871881145932f4c5a9
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix joining list
+
+commit ff34813848dafd94270ba58e9f84472409a9678c
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Improved existence checking for SSH credentials.
+
+commit f740e037cd47e04fa09bacb9cb5dc404103c47bc
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix indent
+
+commit 96465fa0af4b2f08d01b6f9c5a85a0c37b9071dc
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix escape
+
+commit b6c60bcd088dbc2e64727866d5a908bf059e8433
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed creating private-key based creds.
+
+commit ae6bd09969cba0291cf40efcedf41ee8c868dd44
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Escape SSH key
+
+commit 929312cd88ef858e7a5952f5dd2b5c1d26317701
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed diffing in jenkins_job state, cleanups.
+
+Version 2016.12.1
+=============================
+
+commit d50c5fb1832f7b809d7736880a1b2bfc75013094 (tag: mk22-sl, tag: 2016.12.1)
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Add docs for jenkins.client
+
+commit 201f712f00f0d6fcbe4561347126855b2b51e4ec
+Author: Jaroslav Steinhaisl <jaroslav.steinhaisl@t-mobile.cz>
+
+    repair name for new module jenkins_common
+
+commit aa3991282685a9d0c57710469901de8a2b6e5ef3
+Author: Jaroslav Steinhaisl <jaroslav.steinhaisl@t-mobile.cz>
+
+    add missing endif statement
+
+commit e380798663e95c9ff58ecc6edce1304f06ad3333
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented new jenkins_job states.
+    Added forgotten node enforcement statement.
+    Fixed PEP8 errors.
+
+commit cd60ff2ea1da153145d33b0fdbd321eeebae117e
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix typo
+
+commit 7ae6b240dffcd44f183b8c26efae72003faaeff7
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented existence checking in user state.
+
+commit 98123aba83c4409dcb294799ba53d3585a658dfb
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Added credentials and nodes existence testing.
+
+commit 123be7a0d4f5d740b8183183efad00b068e24d06
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    First version of jenkins nodes enforcing.
+    Fixed python-bcrypt dependency definition.
+    Fixed plurals in state file names.
+
+commit d7d727fcdcaad27026492c5e3061f99062719de8
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Added python-bcrypt dependency to map.jinja.
+
+commit 3de91af0e07c04d3150d9b07ddbaf33a6aff1d86
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented jenkins user enforcing by script API from client side
+
+Version 2016.12
+=============================
+
+commit e13e2e7b5c11563fc1fce18f922064cbd6b6b89f
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Fixed credentials enforcing in case of disabled jenkins security
+
+commit 8e7385e2c01c9d601f96d15f0dc77682f939b4b7
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    First version of jenkins credentials enforcing via script API.
+
+commit 2c70a1c6560ed9d4b530ee892098bc4724fe7ce2 (origin/meta, gerrit/meta)
+Author: Ales Komarek <ales.komarek@newt.cz>
+
+    jenkins service metadata
+
+commit 65549fc399d3c5e1b713082e8b1d3def3e8ba5b3
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Improved user enforcing
+
+commit b36808c393fc53ddc9979e15b635e7abd154dc1a
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix external generation of users
+
+commit 7088b86fd6f139b9be24f109172c4a832a1e8186
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Implemented correct bcrypt hashing for jenkins users.
+
+commit a777269818f5aab25c6d8fe21e8987efff84023e
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Make user api token optional.
+
+commit f00e4538d3597d830551b4ace4093ea4fa6515f6
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Added API key to jenkins salt module config.
+
+commit 92b1732bcd510218b18d0260efeee02e02cedaa1
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix wait for jenkins startup and plugin install for no-auth jenkins
+
+commit 7d79c651637854b5770384e8ed20c97368a9810a
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix typos in meta/config.yml
+
+commit 6bc424009e1ecd555d5988464e7e014f72114224
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix dependency
+
+commit 41b6b767a9bb88381ee17e10c04372b10fb76289
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix no_config option
+
+commit d8e042998dac45243abed3208fcb27fee409138d
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    First version of password hashing for jenkins.
+
+commit 12e45943cdfbb3ae61be45628a70762a17137902
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Support users creation in external config generator
+
+commit 0bfdf47cd4778fb3b31825e0386cd01b3c64610e (origin/config, gerrit/config)
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix unwanted space
+
+commit b9b865235e8619c72e3a2f2b7b483b5edbe25fb7
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Add support for external config generation
+
+commit 0c290cf05eded09d96d0ed7a509779719caa5688
+Merge: 31883bb cdd4010
+Author: Aleš Komárek <mail@newt.cz>
+
+    Merge branch 'master' into 'master'
+
+commit cdd40100458e0bacad2cda77a65f3ac04d3883ee
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    First version of jenkins credentials enforcement.
+
+commit 31883bb1b79cf50fc092d3d42b788ebf83699394
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Added Java param for disable setup wizard.
+
+commit 2285d450754eb3340c91497f33451d0559cb112c
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Typo fix.
+
+commit e8d1560bc2e16c3c117c96ee64471927a1357ec2
+Author: Jakub Josef <jakub.josef@gmail.com>
+
+    Added basic SMTP settings enforcements.
+
+commit 62b03542cd838005e03711bf6b203a0b1e8b8aea (origin/approved_scripts, gerrit/approved_scripts)
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    Approved scripts
+
+commit aff292db58918ef2adc11977f379b00c656ff85b
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    Some unset job parameter handling
+
+commit 737e9b3c5691562f31e90beb7c7211997ad0e90d
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix credentialsId position
+
+commit 600aa1d31630e5bead37d42fdbd5883cec3c480d
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Allow using custom credentials id
+
+commit b0a7da7db99f3557d58d59dcc996bd35de6df6f6
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix weird issue with submitting complex default
+
+commit f6f9f4c633262f0715af1989e492069287cc598e
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Allow disabling sandbox in workflow job
+
+commit 81d0ffc60c1729948ef79497fa2a9db075656c2f (origin/workflow, gerrit/workflow)
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Start jenkins-slave using systemd on modern systems
+
+commit ebd4d171db705e409544e6384fec050851b72606
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Allow defining workflow-scm type of jobs
+
+commit e7d4cc585cfa2ea69b77dbcd435981de32068786
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Minor jenkins.client enhancements
+
+commit 938d2669f994574bfb91c7ff77371cb749bfd7a9
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Metadata for jenkins.client
+
+commit af967eeaccb562d71282aedda12cce694625b12f
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    Fixed import groovy, update site parameter
+
+commit 5e3f702a1c918eb82595bf3b62b987b4ba865c32
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    Fixing the libraries and outputs
+
+commit 5b672fd61e0c2c152c3a71bfb35d760cf9bda4fa
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    Multiple source repositories and shared libraries
+
+commit 965f9fb7e7bee5a4ea4e6c56fa76e4565814731b
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    Conditional master credentials
+
+commit daf31f7899a4b4636ac754aee6f8b85aa2f5378f
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    Load from files
+
+commit e5a1ed6a6f5e0bd04c8b29e1ddc5dfa67077ea57
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    Jenkins client for job enforcement
+
+commit 07793d5a385ff2ef2c0c99adea8b8b8c28625672
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Option to allow eatmydata in pbuilderrc
+
+commit 3018daa4c19ff5cac9b0f4d035035048b794271d
+Merge: cd13e44 9eba909
+Author: Filip Pytloun <filip.pytloun@tcpcloud.eu>
+
+    Merge branch 'hotfix/packages' into 'master'
+
+commit 9eba909e263be386bf9d635e2a7a241b24bd28fa
+Author: Michael Kutý <6du1ro.n@gmail.com>
+
+    Use shorter if syntax.
+
+commit 26736b5387ac4f33718f120054c3b1ee0cb1051c
+Author: Michael Kutý <6du1ro.n@gmail.com>
+
+    Support allow_empty_variables for job builder.
+    When expanding strings, by default jenkins-jobs will raise an exception if there’s a key in the string, that has not been declared in the input YAML files. Setting this option to True will replace it with the empty string, allowing you to use those strings without having to define all the keys it might be using.
+
+commit cd13e445a91652568191716657caede763f3b0ae
+Merge: 6e0f82c 6c9be58
+Author: Filip Pytloun <filip.pytloun@tcpcloud.eu>
+
+    Merge branch 'hotfix/packages' into 'master'
+
+commit 37a359582a5e322b02f4c214bfbc846ec49ad15f
+Author: Michael Kutý <6du1ro.n@gmail.com>
+
+    Add missing protocol to readme.
+
+commit 6c9be58aad4af4e24c7c1017aedf2566c9906d2e
+Author: Michael Kutý <6du1ro.n@gmail.com>
+
+    Do not force slack package in the defaults.
+
+commit 6e0f82c8754ff6242cd52e87f65dc958408aae1b
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Add metadata.yml
+
+commit 5b93440f4d1f21759397bcf6e6ce4eb3d26244ab
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Add missing Makefile
+
+commit a5f661f96f976d8b4d76e387d8647d358eb39c93
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Add salt-master into build depends
+
+commit 22ab0786f800e3994019c14b09ec8422321a58f5
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Add makefile, run tests during package build
+
+commit f12a506b0d3d4c3454c1ea5375b210e3864488a1
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    No sensu so far
+
+commit 5bba731529aad47123dd371f0ac5b4a2ea28fe1c
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Configuration for backupninja support
+
+commit 92083073829df0c5660e9ae25bfa9e06b8baba1a
+Merge: 9d149bf 9bb7409
+Author: Filip Pytloun <filip.pytloun@tcpcloud.eu>
+
+    Merge branch 'master_service' into 'master'
+
+commit 9bb7409aea3d94942c97aa8c1d7f68e45fbaa39e
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    Fix updates trying to setup before service does
+
+commit 9d149bf121b983968980ea2f14a231d2260d302e
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Support arm64
+
+commit 1b38503b8eea2bed1be6ca5da3cdc4e3fd67a48d
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix cowbuilder base
+
+commit c23be27c7cc84ff305646d55eeb39d684e791b39
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix typo
+
+commit c561e90110cb8ef454859972de1a063d4e95dd46
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Support for othermirror
+
+commit 4ed2b9b4d131e803bda3d747b06e8f495ae700a6
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Allow per-os definition in pbuilderrc
+
+commit e240bfa713417f53a754eb4e165637bdb23a2501
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Basic support for cross-compilation using pbuilder
+
+commit a04fae1cfe0af05f6a6d7435c04360c1d3e5c0f2
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix default/jenkins
+
+commit 505673cb84a10706598efd813ed0e8282b3265f0
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix init script
+
+commit cedc460b1f860dddf4c0e2c43de2d93e80a8fc12
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Fix getting slave.jar with authentication
+
+commit 52b9c2c471cc0d2419a201994d5ec28cee1f08c2
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Allow management of config.xml from UI
+
+commit 7e5efcac78c9b8cdd12726928b6ebaa11fecc75c
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    slave params
+
+commit 4c0bab1fd6bb6e419f64121bcc2a7fbbce4d064e
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    doc fixes
+
+commit e5bb098c69424d0efcfc201718091fb2451de1ed
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    jenkins support files
+
+commit 7b84b48a7347d9fde8c39c7d7ba7b7585efaccd0
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    Job builder tuning
+
+commit 8aef52bbad14cbd6255a4aedad8520d77f94b7a2
+Author: Ales Komarek <ales.komarek@tcpcloud.eu>
+
+    fix to parameters
+
+commit 214a77fb2703b8a563c1b765a60b273d7181c67a
+Author: Filip Pytloun <filip@pytloun.cz>
+
+    Set slave agent port
+
+commit 9258ab437e72033339b7f4a3c67ea5fecfea2e09
+Author: Alena Holanova <alena.holanova@tcpcloud.eu>
+
+    Add support metadata
+
+Version 0.2
+=============================
+
+
diff --git a/VERSION b/VERSION
index 3b04cfb..5787ae6 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.2
+2017.8
diff --git a/_modules/jenkins_common.py b/_modules/jenkins_common.py
index 64c5544..c7446fa 100644
--- a/_modules/jenkins_common.py
+++ b/_modules/jenkins_common.py
@@ -1,6 +1,7 @@
 import logging
 
 from salt.exceptions import SaltInvocationError
+from string import Template
 
 try:
     import bcrypt
@@ -32,7 +33,8 @@
     return True
 
 
-def call_groovy_script(script, props, username=None, password=None, success_status_codes=[200]):
+def call_groovy_script(script, props, username=None,
+                       password=None, success_status_codes=[200]):
     """
     Common method for call Jenkins groovy script API
 
@@ -80,15 +82,16 @@
     return ret
 
 
-def render_groovy_script(script, props):
+def render_groovy_script(script_template, props):
     """
     Helper method for rendering groovy script with props
 
-    :param script: groovy script template
+    :param script_template: groovy script template
     :param props: groovy script properties
     :returns: generated groovy script
     """
-    return script.format(**props)
+    template = Template(script_template)
+    return template.safe_substitute(props)
 
 
 def get_api_crumb(jenkins_url=None, jenkins_user=None, jenkins_password=None):
diff --git a/_states/jenkins_approval.py b/_states/jenkins_approval.py
index e4b21b4..2764745 100644
--- a/_states/jenkins_approval.py
+++ b/_states/jenkins_approval.py
@@ -1,51 +1,52 @@
 import logging
+
 logger = logging.getLogger(__name__)
 
 approve_signature_groovy = """\
 import org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval
 import org.jenkinsci.plugins.scriptsecurity.scripts.languages.GroovyLanguage
 import org.jenkinsci.plugins.scriptsecurity.scripts.ApprovalContext
-def signature = '{signature}'
+def signature = '${signature}'
 def scriptApproval = ScriptApproval.get()
 def approvedSignatures = Arrays.asList(scriptApproval.approvedSignatures)
-if(approvedSignatures.contains(signature)){{
+if(approvedSignatures.contains(signature)){
     print("EXISTS")
-}}else{{
-    try{{
+}else{
+    try{
         scriptApproval.pendingSignatures.add(new ScriptApproval.PendingSignature(signature, false, ApprovalContext.create()))
         scriptApproval.approveSignature(signature)
-        if(Arrays.asList(scriptApproval.approvedSignatures).contains(signature)){{
+        if(Arrays.asList(scriptApproval.approvedSignatures).contains(signature)){
             print("SUCCESS")
-        }}else{{
+        }else{
             print("FAILED")
-        }}
-    }}catch(e){{
+        }
+    }catch(e){
         print(e)
-    }}
-}}
-""" # noqa
+    }
+}
+"""  # noqa
 
 deny_signature_groovy = """\
 import org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval
 import org.jenkinsci.plugins.scriptsecurity.scripts.languages.GroovyLanguage
 import org.jenkinsci.plugins.scriptsecurity.scripts.ApprovalContext
-def signature = '{signature}'
+def signature = '${signature}'
 def scriptApproval = ScriptApproval.get()
 def approvedSignatures = Arrays.asList(scriptApproval.approvedSignatures)
-if(approvedSignatures.contains(signature)){{
-    try{{
+if(approvedSignatures.contains(signature)){
+    try{
         scriptApproval.denySignature(signature)
-        if(!scriptApproval.approvedSignatures.contains(signature)){{
+        if(!scriptApproval.approvedSignatures.contains(signature)){
             print("SUCCESS")
-        }}else{{
+        }else{
             print("FAILED")
-        }}
-    }}catch(e){{
+        }
+    }catch(e){
         print(e)
-    }}
-}}else{{
+    }
+}else{
     print("NOT PRESENT")
-}}
+}
 
 
 """
@@ -81,22 +82,25 @@
     if test:
         status = "SUCCESS"
         ret['changes'][name] = status
-        ret['comment'] = 'Jenkins script approval config %s %s' % (name, status.lower())
+        ret['comment'] = 'Jenkins script approval config %s %s' % (
+            name, status.lower())
     else:
         call_result = __salt__['jenkins_common.call_groovy_script'](
-            approve_signature_groovy, {"signature":name})
-        if call_result["code"] == 200 and call_result["msg"] in ["SUCCESS", "EXISTS"]:
+            approve_signature_groovy, {"signature": name})
+        if call_result["code"] == 200 and call_result["msg"] in [
+                "SUCCESS", "EXISTS"]:
             status = call_result["msg"]
             if status == "SUCCESS":
                 ret['changes'][name] = status
-            ret['comment'] = 'Jenkins script approval config %s %s' % (name, status.lower())
+            ret['comment'] = 'Jenkins script approval config %s %s' % (
+                name, status.lower())
             result = True
         else:
             status = 'FAILED'
             logger.error(
                 "Jenkins script approval API call failure: %s", call_result["msg"])
             ret['comment'] = 'Jenkins script approval API call failure: %s' % (call_result[
-                                                                           "msg"])
+                "msg"])
     ret['result'] = None if test else result
     return ret
 
@@ -119,21 +123,24 @@
     if test:
         status = "SUCCESS"
         ret['changes'][name] = status
-        ret['comment'] = 'Jenkins script approval config %s %s' % (name, status.lower())
+        ret['comment'] = 'Jenkins script approval config %s %s' % (
+            name, status.lower())
     else:
         call_result = __salt__['jenkins_common.call_groovy_script'](
-            deny_signature_groovy, {"signature":name})
-        if call_result["code"] == 200 and call_result["msg"] in ["SUCCESS", "NOT PRESENT"]:
+            deny_signature_groovy, {"signature": name})
+        if call_result["code"] == 200 and call_result["msg"] in [
+                "SUCCESS", "NOT PRESENT"]:
             status = call_result["msg"]
             if status == "SUCCESS":
                 ret['changes'][name] = status
-            ret['comment'] = 'Jenkins script approval config %s %s' % (name, status.lower())
+            ret['comment'] = 'Jenkins script approval config %s %s' % (
+                name, status.lower())
             result = True
         else:
             status = 'FAILED'
             logger.error(
                 "Jenkins script approval API call failure: %s", call_result["msg"])
             ret['comment'] = 'Jenkins script approval lib API call failure: %s' % (call_result[
-                                                                           "msg"])
+                "msg"])
     ret['result'] = None if test else result
     return ret
diff --git a/_states/jenkins_artifactory.py b/_states/jenkins_artifactory.py
index 63a63d6..daccc2e 100644
--- a/_states/jenkins_artifactory.py
+++ b/_states/jenkins_artifactory.py
@@ -1,4 +1,5 @@
 import logging
+
 logger = logging.getLogger(__name__)
 
 add_artifactory_groovy = u"""\
@@ -8,42 +9,42 @@
 def inst = Jenkins.getInstance()
 def desc = inst.getDescriptor("org.jfrog.hudson.ArtifactoryBuilder")
 // empty artifactory servers is not empty list but null, but find can be called on null
-def server =  desc.getArtifactoryServers().find{{it -> it.name.equals("{name}")}}
+def server =  desc.getArtifactoryServers().find{it -> it.name.equals("${name}")}
 if(server &&
-   server.getName().equals("{name}") &&
-   server.getUrl().equals("{serverUrl}") &&
-   server.getDeployerCredentialsConfig().getCredentialsId().equals("{credentialsId}") &&
-   server.getResolverCredentialsConfig().getCredentialsId().equals("{credentialsId}")){{
+   server.getName().equals("${name}") &&
+   server.getUrl().equals("${serverUrl}") &&
+   (server.getDeployerCredentialsConfig() == null || server.getDeployerCredentialsConfig().getCredentialsId().equals("${credentialsId}")) &&
+   (server.getResolverCredentialsConfig() == null || server.getResolverCredentialsConfig().getCredentialsId().equals("${credentialsId}"))){
         print("EXISTS")
-}}else{{
+}else{
     // we must care about null here
-    if(desc.getArtifactoryServers() != null && !desc.getArtifactoryServers().isEmpty()){{
-        desc.getArtifactoryServers().removeIf{{it -> it.name.equals("{name}")}}
-    }}else{{
+    if(desc.getArtifactoryServers() != null && !desc.getArtifactoryServers().isEmpty()){
+        desc.getArtifactoryServers().removeIf{it -> it.name.equals("${name}")}
+    }else{
         desc.setArtifactoryServers([])
-    }}
+    }
     def newServer = new ArtifactoryServer(
-      "{name}",
-      "{serverUrl}",
-      new CredentialsConfig("", "", "{credentialsId}"),
-      new CredentialsConfig("", "", "{credentialsId}"),
+      "${name}",
+      "${serverUrl}",
+      new CredentialsConfig("", "", "${credentialsId}"),
+      new CredentialsConfig("", "", "${credentialsId}"),
       300,
       false,
       null)
     desc.getArtifactoryServers().add(newServer)
     desc.save()
     print("ADDED/CHANGED")
-}}
+}
 """  # noqa
 
 delete_artifactory_groovy = u"""\
 def inst = Jenkins.getInstance()
 def desc = inst.getDescriptor("org.jfrog.hudson.ArtifactoryBuilder")
-if(desc.getArtifactoryServers().removeIf{{it -> it.name.equals("{name}")}}){{
+if(desc.getArtifactoryServers().removeIf{it -> it.name.equals("${name}")}){
     print("REMOVED")
-}}else{{
+}else{
     print("NOT PRESENT")
-}}
+}
 """  # noqa
 
 
@@ -68,7 +69,8 @@
     :param credential_id: artifactory server credential id
     :returns: salt-specified state dict
     """
-    return _plugin_call(name, url, credential_id, add_artifactory_groovy, ["ADDED/CHANGED", "EXISTS"], **kwargs)
+    return _plugin_call(name, url, credential_id, add_artifactory_groovy, [
+                        "ADDED/CHANGED", "EXISTS"], **kwargs)
 
 
 def absent(name, **kwargs):
@@ -78,7 +80,8 @@
     :param name: artifactory server name
     :returns: salt-specified state dict
     """
-    return _plugin_call(name, None, None, delete_artifactory_groovy, ["REMOVED", "NOT PRESENT"], **kwargs)
+    return _plugin_call(name, None, None, delete_artifactory_groovy, [
+                        "REMOVED", "NOT PRESENT"], **kwargs)
 
 
 def _plugin_call(name, url, credentialsId, template, success_msgs, **kwargs):
diff --git a/_states/jenkins_credential.py b/_states/jenkins_credential.py
index b2470fc..3009673 100644
--- a/_states/jenkins_credential.py
+++ b/_states/jenkins_credential.py
@@ -1,4 +1,5 @@
 import logging
+
 logger = logging.getLogger(__name__)
 
 create_credential_groovy = u"""\
@@ -9,48 +10,48 @@
         com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
         Jenkins.instance
     )
-def key = \"\"\"{key}
+def key = \"\"\"${key}
 \"\"\"
 
-def result = creds.find{{
+def result = creds.find{
   (it instanceof com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl &&
-    it.username == "{username}" &&
-    it.id == "{name}" &&
-    it.description == "{desc}" &&
-    it.password.toString() == "{password}") ||
+    it.username == "${username}" &&
+    it.id == "${name}" &&
+    it.description == "${desc}" &&
+    it.password.toString() == "${password}") ||
   (it instanceof com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey &&
-    it.username == "{username}" &&
-    it.id == "{name}" &&
-    ("{password}" == "" || it.passphrase.toString() == "{password}") &&
-    it.description == "{desc}" &&
+    it.username == "${username}" &&
+    it.id == "${name}" &&
+    ("${password}" == "" || it.passphrase.toString() == "${password}") &&
+    it.description == "${desc}" &&
     it.privateKeySource.privateKey.equals(key.trim()))
-}}
+}
 
-if(result){{
+if(result){
     print("EXISTS")
-}}else{{
+}else{
     domain = Domain.global()
     store = Jenkins.instance.getExtensionList(
       'com.cloudbees.plugins.credentials.SystemCredentialsProvider'
     )[0].getStore()
 
-    credentials_new = new {clazz}(
-      {params}
+    credentials_new = new ${clazz}(
+      ${params}
     )
     // remove credentails with same if before created new one, if exists
     def existingCreds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
         com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
-        Jenkins.instance).find{{it -> it.id.equals("{name}")}}
-    if(existingCreds){{
+        Jenkins.instance).find{it -> it.id.equals("${name}")}
+    if(existingCreds){
         store.removeCredentials(domain, existingCreds)
-    }}
+    }
     ret = store.addCredentials(domain, credentials_new)
-    if (ret) {{
+    if (ret) {
       print("CREATED");
-    }} else {{
+    } else {
         print("FAILED");
-    }}
-}}
+    }
+}
 """  # noqa
 
 
@@ -103,7 +104,8 @@
 
         call_result = __salt__['jenkins_common.call_groovy_script'](
             create_credential_groovy, {"name": name, "username": username, "password": password if password else "", "clazz": clazz, "params": params, "key": key if key else "", "desc": desc if desc else ""})
-        if call_result["code"] == 200 and call_result["msg"] in ["CREATED", "EXISTS"]:
+        if call_result["code"] == 200 and call_result["msg"] in [
+                "CREATED", "EXISTS"]:
             status = call_result["msg"]
             if call_result["msg"] == "CREATED":
                 ret['changes'][name] = status
diff --git a/_states/jenkins_job.py b/_states/jenkins_job.py
index 6f72d9d..dccac86 100644
--- a/_states/jenkins_job.py
+++ b/_states/jenkins_job.py
@@ -15,10 +15,10 @@
 
 # Jenkins
 try:
-  import jenkins
-  HAS_JENKINS = True
+    import jenkins
+    HAS_JENKINS = True
 except ImportError:
-  HAS_JENKINS = False
+    HAS_JENKINS = False
 
 log = logging.getLogger(__name__)
 
@@ -27,7 +27,12 @@
     '''
     Only load if jenkins_common module exist.
     '''
-    if HAS_JENKINS and 'jenkins_common.call_groovy_script' not in __salt__:
+    if not HAS_JENKINS:
+        return (
+            False,
+            'The jenkins_job state module cannot be loaded: '
+            'python Jenkins API client could not be imported')
+    if 'jenkins_common.call_groovy_script' not in __salt__:
         return (
             False,
             'The jenkins_job state module cannot be loaded: '
@@ -71,7 +76,6 @@
             else:
                 raise e
 
-
         if _job_exists:
             buf = six.moves.StringIO(_current_job_config)
             oldXMLstring = buf.read()
@@ -151,7 +155,7 @@
            'changes': {},
            'comment': "Cleanup not necessary"}
     list_jobs_groovy = """\
-        print(Jenkins.instance.items.collect{{it -> it.name}})
+        print(Jenkins.instance.items.collect{it -> it.name})
     """
     deleted_jobs = []
     if test:
@@ -159,7 +163,8 @@
         ret['changes'][name] = status
         ret['comment'] = 'Jobs %s' % status.lower()
     else:
-        call_result = __salt__['jenkins_common.call_groovy_script'](list_jobs_groovy,{})
+        call_result = __salt__['jenkins_common.call_groovy_script'](
+            list_jobs_groovy, {})
         if call_result["code"] == 200:
             existing_jobs = call_result["msg"]
             if existing_jobs:
diff --git a/_states/jenkins_lib.py b/_states/jenkins_lib.py
index 88f1a47..7af839e 100644
--- a/_states/jenkins_lib.py
+++ b/_states/jenkins_lib.py
@@ -1,4 +1,5 @@
 import logging
+
 logger = logging.getLogger(__name__)
 
 config_global_libs_groovy = """\
@@ -7,47 +8,47 @@
 import jenkins.plugins.git.GitSCMSource;
 
 def globalLibsDesc = Jenkins.getInstance().getDescriptor("org.jenkinsci.plugins.workflow.libs.GlobalLibraries")
-def existingLib = globalLibsDesc.get().getLibraries().find{{
-  (!it.retriever.class.name.equals("org.jenkinsci.plugins.workflow.libs.SCMSourceRetriever") || 
-   it.retriever.scm.remote.equals("{url}") &&
-   it.retriever.scm.credentialsId.equals("{credential_id}")) &&
-   it.name.equals("{lib_name}") &&
-   it.defaultVersion.equals("{branch}") &&
+def existingLib = globalLibsDesc.get().getLibraries().find{
+  (!it.retriever.class.name.equals("org.jenkinsci.plugins.workflow.libs.SCMSourceRetriever") ||
+   it.retriever.scm.remote.equals("${url}") &&
+   it.retriever.scm.credentialsId.equals("${credential_id}")) &&
+   it.name.equals("${lib_name}") &&
+   it.defaultVersion.equals("${branch}") &&
    it.implicit == true
-}}
-if(existingLib){{
+}
+if(existingLib){
     print("EXISTS")
-}}else{{
+}else{
     SCMSourceRetriever retriever = new SCMSourceRetriever(new GitSCMSource(
-        "{lib_name}",
-        "{url}",
-        "{credential_id}",
+        "${lib_name}",
+        "${url}",
+        "${credential_id}",
         "*",
         "",
         false))
-    LibraryConfiguration library = new LibraryConfiguration("{lib_name}", retriever)
-    library.setDefaultVersion("{branch}")
-    library.setImplicit({implicit})
-    if(globalLibsDesc.get().getLibraries().isEmpty()){{
+    LibraryConfiguration library = new LibraryConfiguration("${lib_name}", retriever)
+    library.setDefaultVersion("${branch}")
+    library.setImplicit(${implicit})
+    if(globalLibsDesc.get().getLibraries().isEmpty()){
       globalLibsDesc.get().setLibraries([library])
-    }}else{{
-      globalLibsDesc.get().getLibraries().removeIf{{ it.name.equals("{lib_name}")}}
+    }else{
+      globalLibsDesc.get().getLibraries().removeIf{ it.name.equals("${lib_name}")}
       globalLibsDesc.get().getLibraries().add(library)
-    }}
+    }
     globalLibsDesc.save()
     print("SUCCESS")
-}}
-""" # noqa
+}
+"""  # noqa
 
 remove_global_libs_groovy = """\
 def globalLibsDesc = Jenkins.getInstance().getDescriptor("org.jenkinsci.plugins.workflow.libs.GlobalLibraries")
-def existingLib = globalLibsDesc.get().getLibraries().removeIf{{it.name.equals("{lib_name}")}}
-if(existingLib){{
+def existingLib = globalLibsDesc.get().getLibraries().removeIf{it.name.equals("${lib_name}")}
+if(existingLib){
     globalLibsDesc.save()
     print("DELETED")
-}}else{{
+}else{
     print("NOT PRESENT")
-}}
+}
 """
 
 
@@ -63,7 +64,8 @@
     return True
 
 
-def present(name, url, branch="master", credential_id="", implicit=True, **kwargs):
+def present(name, url, branch="master",
+            credential_id="", implicit=True, **kwargs):
     """
     Jenkins Global pipeline library present state method
 
@@ -85,27 +87,30 @@
     if test:
         status = "SUCCESS"
         ret['changes'][name] = status
-        ret['comment'] = 'Jenkins pipeline lib config %s %s' % (name, status.lower())
+        ret['comment'] = 'Jenkins pipeline lib config %s %s' % (
+            name, status.lower())
     else:
         call_result = __salt__['jenkins_common.call_groovy_script'](
-            config_global_libs_groovy, {"lib_name":name,
-                                  "url": url,
-                                  "branch": branch,
-                                  "credential_id": credential_id if credential_id else "",
-                                  "implicit": "true" if implicit else "false"
-                                  })
-        if call_result["code"] == 200 and call_result["msg"] in ["SUCCESS", "EXISTS"]:
+            config_global_libs_groovy, {"lib_name": name,
+                                        "url": url,
+                                        "branch": branch,
+                                        "credential_id": credential_id if credential_id else "",
+                                        "implicit": "true" if implicit else "false"
+                                        })
+        if call_result["code"] == 200 and call_result["msg"] in [
+                "SUCCESS", "EXISTS"]:
             status = call_result["msg"]
             if status == "SUCCESS":
                 ret['changes'][name] = status
-            ret['comment'] = 'Jenkins pipeline lib config %s %s' % (name, status.lower())
+            ret['comment'] = 'Jenkins pipeline lib config %s %s' % (
+                name, status.lower())
             result = True
         else:
             status = 'FAILED'
             logger.error(
                 "Jenkins pipeline lib API call failure: %s", call_result["msg"])
             ret['comment'] = 'Jenkins pipeline lib API call failure: %s' % (call_result[
-                                                                           "msg"])
+                "msg"])
     ret['result'] = None if test else result
     return ret
 
@@ -128,21 +133,24 @@
     if test:
         status = "SUCCESS"
         ret['changes'][name] = status
-        ret['comment'] = 'Jenkins pipeline lib config %s %s' % (name, status.lower())
+        ret['comment'] = 'Jenkins pipeline lib config %s %s' % (
+            name, status.lower())
     else:
         call_result = __salt__['jenkins_common.call_groovy_script'](
-            remove_global_libs_groovy, {"lib_name":name})
-        if call_result["code"] == 200 and call_result["msg"] in ["DELETED", "NOT PRESENT"]:
+            remove_global_libs_groovy, {"lib_name": name})
+        if call_result["code"] == 200 and call_result["msg"] in [
+                "DELETED", "NOT PRESENT"]:
             status = call_result["msg"]
             if status == "DELETED":
                 ret['changes'][name] = status
-            ret['comment'] = 'Jenkins pipeline lib config %s %s' % (name, status.lower())
+            ret['comment'] = 'Jenkins pipeline lib config %s %s' % (
+                name, status.lower())
             result = True
         else:
             status = 'FAILED'
             logger.error(
                 "Jenkins pipeline lib API call failure: %s", call_result["msg"])
             ret['comment'] = 'Jenkins pipeline lib API call failure: %s' % (call_result[
-                                                                           "msg"])
+                "msg"])
     ret['result'] = None if test else result
     return ret
diff --git a/_states/jenkins_node.py b/_states/jenkins_node.py
index aa54efd..cb88fa8 100644
--- a/_states/jenkins_node.py
+++ b/_states/jenkins_node.py
@@ -1,6 +1,6 @@
 import logging
-logger = logging.getLogger(__name__)
 
+logger = logging.getLogger(__name__)
 
 create_node_groovy = u"""\
 import jenkins.model.*
@@ -8,48 +8,48 @@
 import hudson.slaves.*
 import hudson.plugins.sshslaves.*
 
-def result=Jenkins.instance.slaves.find{{
+def result=Jenkins.instance.slaves.find{
  it.name == '{name}' &&
  it.numExecutors == {num_executors} &&
- it.nodeDescription == "{desc}" &&
- it.remoteFS == "{remote_home}" &&
- it.labelString == "{label}" &&
+ it.nodeDescription == "${desc}" &&
+ it.remoteFS == "${remote_home}" &&
+ it.labelString == "${label}" &&
  it.mode == Node.Mode.{node_mode} &&
  it.launcher.getClass().getName().equals({launcher}.getClass().getName()) &&
- it.retentionStrategy.getClass().getName().equals(new hudson.slaves.RetentionStrategy.{ret_strategy}().getClass().getName())}}
-if(result){{
+ it.retentionStrategy.getClass().getName().equals(new hudson.slaves.RetentionStrategy.${ret_strategy}().getClass().getName())}
+if(result){
     print("EXISTS")
-}}else{{
+}else{
   Slave slave = new DumbSlave(
-                    "{name}",
-                    "{desc}",
-                    "{remote_home}",
-                    "{num_executors}",
-                    Node.Mode.{node_mode},
-                    "{label}",
-                    {launcher},
-                    new RetentionStrategy.{ret_strategy}(),
+                    "${name}",
+                    "${desc}",
+                    "${remote_home}",
+                    "${num_executors}",
+                    Node.Mode.${node_mode},
+                    "${label}",
+                    ${launcher},
+                    new RetentionStrategy.${ret_strategy}(),
                     new LinkedList())
   Jenkins.instance.addNode(slave)
   print("CREATED")
-}}
+}
 """  # noqa
 
 create_lbl_groovy = u"""\
 hudson = hudson.model.Hudson.instance
 updated = false
-hudson.slaves.find {{ slave -> slave.nodeName.equals("{name}")
-  if({append}){{
-    slave.labelString = slave.labelString + " " + "{lbl_text}"
-  }}else{{
-    slave.labelString = "{lbl_text}"
-  }}
+hudson.slaves.find { slave -> slave.nodeName.equals("${name}")
+  if({append}){
+    slave.labelString = slave.labelString + " " + "${lbl_text}"
+  }else{
+    slave.labelString = "${lbl_text}"
+  }
   updated = true
-  print "{lbl_text}"
-}}
-if(!updated){{
+  print "${lbl_text}"
+}
+if(!updated){
     print "FAILED"
-}}
+}
 hudson.save()
 """  # noqa
 
@@ -57,26 +57,26 @@
 def instance = Jenkins.instance
 def changed = false
 
-if(Jenkins.instance.numExecutors != {num_executors}){{
-    Jenkins.instance.setNumExecutors({num_executors})
+if(Jenkins.instance.numExecutors != ${num_executors}){
+    Jenkins.instance.setNumExecutors(${num_executors})
     changed = true
-}}
+}
 
-if(!Jenkins.instance.mode.name.equals(new String("{node_mode}").toUpperCase())){{
-    Jenkins.instance.setMode(Node.Mode.{node_mode})
+if(!Jenkins.instance.mode.name.equals(new String("${node_mode}").toUpperCase())){
+    Jenkins.instance.setMode(Node.Mode.${node_mode})
     changed = true
-}}
+}
 
-if(!Jenkins.instance.labelString.equals("{labels}")){{
-    Jenkins.instance.setLabelString("{labels}")
+if(!Jenkins.instance.labelString.equals("${labels}")){
+    Jenkins.instance.setLabelString("${labels}")
     changed = true
-}}
-if(changed){{
+}
+if(changed){
     Jenkins.instance.save()
     print("CREATED")
-}}else{{
+}else{
     print("EXISTS")
-}}
+}
 """
 
 
@@ -115,7 +115,8 @@
     else:
         call_result = __salt__['jenkins_common.call_groovy_script'](
             create_lbl_groovy, {'name': name, 'lbl_text': lbl_text, 'append': "true" if append else "false"})
-        if call_result["code"] == 200 and call_result["msg"].strip() == lbl_text:
+        if call_result["code"] == 200 and call_result["msg"].strip(
+        ) == lbl_text:
             status = "CREATED"
             ret['changes'][name] = status
             ret['comment'] = 'Label %s %s ' % (name, status.lower())
@@ -130,7 +131,8 @@
     return ret
 
 
-def present(name, remote_home, launcher, num_executors="1", node_mode="Normal", desc="", labels=[], ret_strategy="Always"):
+def present(name, remote_home, launcher, num_executors="1",
+            node_mode="Normal", desc="", labels=[], ret_strategy="Always"):
     """
     Jenkins node state method
 
@@ -176,7 +178,8 @@
                 "launcher": launcher_string,
                 "node_mode": node_mode.upper(),
                 "ret_strategy": ret_strategy if ret_strategy else "Always"})
-        if call_result["code"] == 200 and call_result["msg"] in ["CREATED", "EXISTS"]:
+        if call_result["code"] == 200 and call_result["msg"] in [
+                "CREATED", "EXISTS"]:
             status = call_result["msg"]
             if call_result["msg"] == "CREATED":
                 ret['changes'][name] = status
@@ -217,7 +220,8 @@
     else:
         call_result = __salt__['jenkins_common.call_groovy_script'](
             configure_master_groovy, {'num_executors': num_executors, 'labels': " ".join(labels), 'node_mode': node_mode.upper()})
-        if call_result["code"] == 200 and call_result["msg"] in ["CREATED", "EXISTS"]:
+        if call_result["code"] == 200 and call_result["msg"] in [
+                "CREATED", "EXISTS"]:
             status = call_result["msg"]
             if status == "CREATED":
                 ret['changes'][name] = status
diff --git a/_states/jenkins_plugin.py b/_states/jenkins_plugin.py
index cb54633..d9fe8e9 100644
--- a/_states/jenkins_plugin.py
+++ b/_states/jenkins_plugin.py
@@ -1,4 +1,5 @@
 import logging
+
 logger = logging.getLogger(__name__)
 
 install_plugin_groovy = """\
@@ -8,43 +9,43 @@
 def logger = Logger.getLogger("")
 def installed = false
 def exists = false
-def pluginName="{plugin}"
+def pluginName="${plugin}"
 def instance = Jenkins.getInstance()
 def pm = instance.getPluginManager()
 def uc = instance.getUpdateCenter()
-def needUpdateSites(maxOldInSec = 1800){{
+def needUpdateSites(maxOldInSec = 1800){
   long oldestTs = 0
-  for (UpdateSite s : Jenkins.instance.updateCenter.siteList) {{
-    if(oldestTs == 0 || s.getDataTimestamp()<oldestTs){{
+  for (UpdateSite s : Jenkins.instance.updateCenter.siteList) {
+    if(oldestTs == 0 || s.getDataTimestamp()<oldestTs){
        oldestTs = s.getDataTimestamp()
-    }}
-  }}
+    }
+  }
    return (System.currentTimeMillis()-oldestTs)/1000 > maxOldInSec
-}}
+}
 
-if (!pm.getPlugin(pluginName)) {{
-  if(needUpdateSites()) {{
+if (!pm.getPlugin(pluginName)) {
+  if(needUpdateSites()) {
      uc.updateAllSites()
-  }}
+  }
   def plugin = uc.getPlugin(pluginName)
-  if (plugin) {{
+  if (plugin) {
     plugin.deploy()
     installed = true
-  }}
-}}else{{
+  }
+}else{
     exists = true
     print("EXISTS")
-}}
-if (installed) {{
+}
+if (installed) {
   instance.save()
-  if({restart}){{
+  if({restart}){
       instance.doSafeRestart()
-   }}
+   }
   print("INSTALLED")
-}}else if(!exists){{
+}else if(!exists){
   print("FAILED")
-}}
-""" # noqa
+}
+"""  # noqa
 
 remove_plugin_groovy = """
 import jenkins.model.*
@@ -54,27 +55,27 @@
 def installed = false
 def initialized = false
 
-def pluginName="{plugin}"
+def pluginName="${plugin}"
 def instance = Jenkins.getInstance()
 def pm = instance.getPluginManager()
 
 def actPlugin = pm.getPlugin(pluginName)
-if (!actPlugin) {{
+if (!actPlugin) {
    def pluginToInstall = Jenkins.instance.updateCenter.getPlugin(pluginName)
-   if(!pluginToInstall){{
+   if(!pluginToInstall){
       print("FAILED")
-   }}else{{
+   }else{
       print("NOT PRESENT")
-   }}
-}} else {{
+   }
+} else {
    actPlugin.disable()
    actPlugin.archive.delete()
-   if({restart}){{
+   if({restart}){
       instance.doSafeRestart()
-   }}
+   }
    print("REMOVED")
-}}
-""" # noqa
+}
+"""  # noqa
 
 
 def __virtual__():
@@ -97,7 +98,8 @@
     :param restart: do you want to restart jenkins after plugin install?
     :returns: salt-specified state dict
     """
-    return _plugin_call(name, restart, install_plugin_groovy, ["INSTALLED", "EXISTS"])
+    return _plugin_call(name, restart, install_plugin_groovy, [
+                        "INSTALLED", "EXISTS"])
 
 
 def absent(name, restart=False):
@@ -108,7 +110,8 @@
     :param restart: do you want to restart jenkins after plugin remove?
     :returns: salt-specified state dict
     """
-    return _plugin_call(name, restart, remove_plugin_groovy, ["REMOVED", "NOT PRESENT"])
+    return _plugin_call(name, restart, remove_plugin_groovy, [
+                        "REMOVED", "NOT PRESENT"])
 
 
 def _plugin_call(name, restart, template, success_msgs):
@@ -131,13 +134,14 @@
             status = call_result["msg"]
             if status == success_msgs[0]:
                 ret['changes'][name] = status
-            ret['comment'] = 'Jenkins plugin %s %s%s' % (name, status.lower(), ", jenkins restarted" if status == success_msgs[0] and restart else "")
+            ret['comment'] = 'Jenkins plugin %s %s%s' % (name, status.lower(
+            ), ", jenkins restarted" if status == success_msgs[0] and restart else "")
             result = True
         else:
             status = 'FAILED'
             logger.error(
                 "Jenkins plugin API call failure: %s", call_result["msg"])
             ret['comment'] = 'Jenkins plugin API call failure: %s' % (call_result[
-                                                                           "msg"])
+                "msg"])
     ret['result'] = None if test else result
     return ret
diff --git a/_states/jenkins_security.py b/_states/jenkins_security.py
index c20cc83..98e8a70 100644
--- a/_states/jenkins_security.py
+++ b/_states/jenkins_security.py
@@ -1,4 +1,5 @@
 import logging
+
 logger = logging.getLogger(__name__)
 
 set_ldap_groovy = """\
@@ -6,24 +7,24 @@
 import hudson.security.*
 import org.jenkinsci.plugins.*
 
-def server = 'ldap://{server}'
-def rootDN = '{rootDN}'
-def userSearchBase = '{userSearchBase}'
-def userSearch = '{userSearch}'
-def groupSearchBase = '{groupSearchBase}'
-def managerDN = '{managerDN}'
-def managerPassword = '{managerPassword}'
+def server = '${server}'
+def rootDN = '${rootDN}'
+def userSearchBase = '${userSearchBase}'
+def userSearch = '${userSearch}'
+def groupSearchBase = '${groupSearchBase}'
+def managerDN = '${managerDN}'
+def managerPassword = '${managerPassword}'
 boolean inhibitInferRootDN = {inhibitInferRootDN}
 
-try{{
+try{
 ldapRealm = Class.forName("hudson.security.LDAPSecurityRealm").getConstructor(String.class, String.class, String.class, String.class, String.class, String.class, String.class, Boolean.TYPE)
 .newInstance(server, rootDN, userSearchBase, userSearch, groupSearchBase, managerDN, managerPassword, inhibitInferRootDN) 
 Jenkins.instance.setSecurityRealm(ldapRealm)
 Jenkins.instance.save()
 print("SUCCESS")
-}}catch(ClassNotFoundException e){{
+}catch(ClassNotFoundException e){
     print("Cannot instantiate LDAPSecurityRealm, maybe ldap plugin not installed")
-}}
+}
 """  # noqa
 
 set_matrix_groovy = """\
@@ -32,15 +33,15 @@
 import com.cloudbees.plugins.credentials.*
 
 def instance = Jenkins.getInstance()
-try{{
-def strategy = Class.forName("hudson.security.{matrix_class}").newInstance()
-{strategies}
+try{
+def strategy = Class.forName("hudson.security.${matrix_class}").newInstance()
+${strategies}
 instance.setAuthorizationStrategy(strategy)
 instance.save()
 print("SUCCESS")
-}}catch(ClassNotFoundException e){{
-    print("Cannot instantiate {matrix_class}, maybe auth-matrix plugin not installed")
-}}
+}catch(ClassNotFoundException e){
+    print("Cannot instantiate ${matrix_class}, maybe auth-matrix plugin not installed")
+}
 """  # noqa
 
 
@@ -56,12 +57,13 @@
     return True
 
 
-def ldap(name, server, root_dn, user_search_base, manager_dn, manager_password, user_search="", group_search_base="", inhibit_infer_root_dn=False):
+def ldap(name, server, root_dn, user_search_base, manager_dn, manager_password,
+         user_search="", group_search_base="", inhibit_infer_root_dn=False):
     """
     Jenkins ldap state method
 
     :param name: ldap state name
-    :param server: ldap server host (without ldap://)
+    :param server: ldap server host
     :param root_dn: root domain names
     :param user_search_base:
     :param manager_dn:
@@ -79,6 +81,9 @@
         'comment': '',
     }
     result = False
+    if not server.startswith("ldap:") and not server.startswith("ldaps:"):
+        server = "ldap://{server}".format(server=server)
+
     if test:
         status = 'CREATED'
         ret['changes'][name] = status
@@ -90,7 +95,7 @@
                               "managerDN": manager_dn if manager_dn else "",
                               "managerPassword": manager_password if manager_password else "",
                               "userSearch": user_search if user_search else "",
-                              "groupSearchBase": group_search_base if group_search_base else "", 
+                              "groupSearchBase": group_search_base if group_search_base else "",
                               "inhibitInferRootDN": "true" if inhibit_infer_root_dn else "false"})
         if call_result["code"] == 200 and call_result["msg"] == "SUCCESS":
             status = call_result["msg"]
@@ -152,7 +157,8 @@
 
 def _build_strategies(permissions):
     strategies_str = ""
-    for strategy in _to_strategies_list("strategy.add({},\"{}\")", _to_one_dict(permissions, "")):
+    for strategy in _to_strategies_list(
+            "strategy.add({},\"{}\")", _to_one_dict(permissions, "")):
         strategies_str += "{}\n".format(strategy)
     return strategies_str
 
diff --git a/_states/jenkins_slack.py b/_states/jenkins_slack.py
index cbe52ec..d0d5636 100644
--- a/_states/jenkins_slack.py
+++ b/_states/jenkins_slack.py
@@ -1,29 +1,30 @@
 import logging
+
 logger = logging.getLogger(__name__)
 
 config_slack_groovy = """\
 jenkins = jenkins.model.Jenkins.getInstance()
-try{{
+try{
 slack = jenkins.getDescriptorByType(jenkins.plugins.slack.SlackNotifier.DescriptorImpl)
-if(slack.teamDomain.equals("{team_domain}") &&
-   slack.token.equals("{token}") &&
-   slack.tokenCredentialId.equals("{token_credential_id}") &&
-   slack.room.equals("{room}") &&
-   slack.sendAs.equals("{send_as}")){{
+if(slack.teamDomain.equals("${team_domain}") &&
+   slack.token.equals("${token}") &&
+   slack.tokenCredentialId.equals("${token_credential_id}") &&
+   slack.room.equals("${room}") &&
+   slack.sendAs.equals("${send_as}")){
         print("EXISTS")
-}}else{{
-    slack.teamDomain = "{team_domain}"
-    slack.token = "{token}"
-    slack.tokenCredentialId = "{token_credential_id}"
-    slack.room = "{room}"
-    slack.sendAs = "{send_as}"
+}else{
+    slack.teamDomain = "${team_domain}"
+    slack.token = "${token}"
+    slack.tokenCredentialId = "${token_credential_id}"
+    slack.room = "${room}"
+    slack.sendAs = "${send_as}"
     slack.save()
     print("SUCCESS")
-}}
-}}catch(all){{
+}
+}catch(all){
     print("Cannot instantiate Jenkins Slack plugin, maybe plugin is not installed")
-}}
-""" # noqa
+}
+"""  # noqa
 
 
 def __virtual__():
@@ -38,7 +39,8 @@
     return True
 
 
-def config(name, team_domain, token, token_credential_id="", room="", send_as=None):
+def config(name, team_domain, token,
+           token_credential_id="", room="", send_as=None):
     """
     Jenkins Slack config state method
 
@@ -64,22 +66,24 @@
         ret['comment'] = 'Jenkins Slack config %s %s' % (name, status.lower())
     else:
         call_result = __salt__['jenkins_common.call_groovy_script'](
-            config_slack_groovy, {"team_domain":team_domain,
-                                  "token":token,
+            config_slack_groovy, {"team_domain": team_domain,
+                                  "token": token,
                                   "token_credential_id": token_credential_id if token_credential_id else "",
                                   "room": room if room else "",
                                   "send_as": send_as if send_as else ""})
-        if call_result["code"] == 200 and call_result["msg"] in ["SUCCESS", "EXISTS"]:
+        if call_result["code"] == 200 and call_result["msg"] in [
+                "SUCCESS", "EXISTS"]:
             status = call_result["msg"]
             if status == "SUCCESS":
                 ret['changes'][name] = status
-            ret['comment'] = 'Jenkins Slack config %s %s' % (name, status.lower())
+            ret['comment'] = 'Jenkins Slack config %s %s' % (
+                name, status.lower())
             result = True
         else:
             status = 'FAILED'
             logger.error(
                 "Jenkins slack API call failure: %s", call_result["msg"])
             ret['comment'] = 'Jenkins slack API call failure: %s' % (call_result[
-                                                                           "msg"])
+                "msg"])
     ret['result'] = None if test else result
     return ret
diff --git a/_states/jenkins_smtp.py b/_states/jenkins_smtp.py
index f27972e..b3029b7 100644
--- a/_states/jenkins_smtp.py
+++ b/_states/jenkins_smtp.py
@@ -1,48 +1,49 @@
 import logging
+
 logger = logging.getLogger(__name__)
 
 set_smtp_groovy = """\
 def result = ""
-for(desc in [Jenkins.getInstance().getDescriptor("hudson.plugins.emailext.ExtendedEmailPublisher"),Jenkins.getInstance().getDescriptor("hudson.tasks.Mailer")]){{
-    if(desc.getSmtpServer().equals("{host}") &&
-       ((desc instanceof hudson.plugins.emailext.ExtendedEmailPublisherDescriptor && desc.getSmtpAuthUsername().equals("{username}")) ||
-        (desc instanceof hudson.tasks.Mailer$DescriptorImpl && desc.getSmtpAuthUserName().equals("{username}"))) &&
-       desc.getSmtpAuthPassword().toString().equals("{password}") &&
-       desc.getSmtpPort().equals("{port}") &&
-       desc.getUseSsl() == {ssl} &&
-       desc.getCharset().equals("{charset}") &&
-       (!{reply_to_exists} || desc.getReplyAddress().equals("{reply_to}"))){{
+for(desc in [Jenkins.getInstance().getDescriptor("hudson.plugins.emailext.ExtendedEmailPublisher"),Jenkins.getInstance().getDescriptor("hudson.tasks.Mailer")]){
+    if(desc.getSmtpServer().equals("${host}") &&
+       ((desc instanceof hudson.plugins.emailext.ExtendedEmailPublisherDescriptor && desc.getSmtpAuthUsername().equals("${username}")) ||
+        (desc instanceof hudson.tasks.Mailer$DescriptorImpl && desc.getSmtpAuthUserName().equals("${username}"))) &&
+       desc.getSmtpAuthPassword().toString().equals("${password}") &&
+       desc.getSmtpPort().equals("${port}") &&
+       desc.getUseSsl() == ${ssl} &&
+       desc.getCharset().equals("${charset}") &&
+       (!{reply_to_exists} || desc.getReplyAddress().equals("${reply_to}"))){
             result = "EXISTS"
-    }}else{{
-        desc.setSmtpAuth("{username}", "{password}")
-        desc.setUseSsl({ssl})
-        if(desc instanceof hudson.plugins.emailext.ExtendedEmailPublisherDescriptor){{
-            desc.setSmtpServer("{host}")
-        }}else{{
-            desc.setSmtpHost("{host}")
-        }}
-        desc.setSmtpPort("{port}")
-        desc.setCharset("{charset}")
-        if({reply_to_exists}){{
-            desc.setReplyToAddress("{reply_to}")
-        }}
+    }else{
+        desc.setSmtpAuth("${username}", "${password}")
+        desc.setUseSsl(${ssl})
+        if(desc instanceof hudson.plugins.emailext.ExtendedEmailPublisherDescriptor){
+            desc.setSmtpServer("${host}")
+        }else{
+            desc.setSmtpHost("${host}")
+        }
+        desc.setSmtpPort("${port}")
+        desc.setCharset("${charset}")
+        if({reply_to_exists}){
+            desc.setReplyToAddress("${reply_to}")
+        }
         desc.save()
         result = "SUCCESS"
-    }}
-}}
+    }
+}
 print(result)
-""" # noqa
+"""  # noqa
 
 set_admin_email_groovy = """
 def jenkinsLocationConfiguration = JenkinsLocationConfiguration.get()
-if(jenkinsLocationConfiguration.getAdminAddress().equals("{email}")){{
+if(jenkinsLocationConfiguration.getAdminAddress().equals("${email}")){
     print("EXISTS")
-}}else{{
-    jenkinsLocationConfiguration.setAdminAddress("{email}")
+}else{
+    jenkinsLocationConfiguration.setAdminAddress("${email}")
     jenkinsLocationConfiguration.save()
     print("SUCCESS")
-}}
-""" # noqa
+}
+"""  # noqa
 
 
 def __virtual__():
@@ -57,7 +58,8 @@
     return True
 
 
-def config(name, host, username, password, reply_to=None, port=25, ssl=False, charset="UTF-8"):
+def config(name, host, username, password, reply_to=None,
+           port=25, ssl=False, charset="UTF-8"):
     """
     Jenkins SMTP server config state method
 
@@ -85,24 +87,26 @@
         ret['comment'] = 'Jenkins SMTP config %s %s' % (name, status.lower())
     else:
         call_result = __salt__['jenkins_common.call_groovy_script'](
-            set_smtp_groovy, {"username": username, "password": password, "host": host, 
+            set_smtp_groovy, {"username": username, "password": password, "host": host,
                               "reply_to_exists": "true" if reply_to else "false",
                               "reply_to": reply_to,
                               "port": port if port else 25,
                               "ssl": "true" if ssl else "false",
                               "charset": charset if charset else "UTF-8"})
-        if call_result["code"] == 200 and call_result["msg"] in ["SUCCESS", "EXISTS"]:
+        if call_result["code"] == 200 and call_result["msg"] in [
+                "SUCCESS", "EXISTS"]:
             status = call_result["msg"]
             if status == "SUCCESS":
                 ret['changes'][name] = status
-            ret['comment'] = 'Jenkins smtp config %s %s' % (name, status.lower())
+            ret['comment'] = 'Jenkins smtp config %s %s' % (
+                name, status.lower())
             result = True
         else:
             status = 'FAILED'
             logger.error(
                 "Jenkins smtp API call failure: %s", call_result["msg"])
             ret['comment'] = 'Jenkins smtp API call failure: %s' % (call_result[
-                                                                           "msg"])
+                "msg"])
     ret['result'] = None if test else result
     return ret
 
@@ -125,15 +129,18 @@
     if test:
         status = "SUCCESS"
         ret['changes'][name] = status
-        ret['comment'] = 'Jenkins admin email config %s %s' % (name, status.lower())
+        ret['comment'] = 'Jenkins admin email config %s %s' % (
+            name, status.lower())
     else:
         call_result = __salt__['jenkins_common.call_groovy_script'](
             set_admin_email_groovy, {"email": email})
-        if call_result["code"] == 200 and call_result["msg"] in ["SUCCESS", "EXISTS"]:
+        if call_result["code"] == 200 and call_result["msg"] in [
+                "SUCCESS", "EXISTS"]:
             status = call_result["msg"]
             if status == "SUCCESS":
                 ret['changes'][name] = status
-            ret['comment'] = 'Jenkins admin email config %s %s' % (name, status.lower())
+            ret['comment'] = 'Jenkins admin email config %s %s' % (
+                name, status.lower())
             result = True
         else:
             status = 'FAILED'
diff --git a/_states/jenkins_theme.py b/_states/jenkins_theme.py
index 2f0208b..c27b0a2 100644
--- a/_states/jenkins_theme.py
+++ b/_states/jenkins_theme.py
@@ -2,26 +2,27 @@
 logger = logging.getLogger(__name__)
 
 set_theme_groovy = """\
-try{{
-    if(Class.forName("org.codefirst.SimpleThemeDecorator")){{
+try{
+    if(Class.forName("org.codefirst.SimpleThemeDecorator")){
         def state;
-        for (pd in PageDecorator.all()) {{
-          if (pd instanceof org.codefirst.SimpleThemeDecorator) {{
-            if(!pd.cssUrl.equals("{css_url}") || !pd.jsUrl.equals("{js_url}")){{
-                pd.cssUrl = "{css_url}"
-                pd.jsUrl = "{js_url}"
+        for (pd in PageDecorator.all()) {
+          if (pd instanceof org.codefirst.SimpleThemeDecorator) {
+            if(!pd.cssUrl.equals("${css_url}") || !pd.jsUrl.equals("${js_url}")){
+                pd.cssUrl = "${css_url}"
+                pd.jsUrl = "${js_url}"
                 state="SUCCESS"
-            }}else{{
+            }else{
                 state="EXISTS"
-            }}
-          }}
-        }}
+            }
+          }
+        }
         print(state)
-    }}
-}}catch(ClassNotFoundException e){{
+    }
+}catch(ClassNotFoundException e){
     print("Cannot user SimpleThemeDecorator, maybe Simple Theme Plugin not installed")
-}}
-""" # noqa
+}
+"""  # noqa
+
 
 def __virtual__():
     '''
@@ -59,17 +60,19 @@
     else:
         call_result = __salt__['jenkins_common.call_groovy_script'](
             set_theme_groovy, {"css_url": css_url, "js_url": js_url})
-        if call_result["code"] == 200 and call_result["msg"] in ["SUCCESS", "EXISTS"]:
+        if call_result["code"] == 200 and call_result["msg"] in [
+                "SUCCESS", "EXISTS"]:
             status = call_result["msg"]
             if status == "SUCCESS":
                 ret['changes'][name] = status
-            ret['comment'] = 'Jenkins theme config %s %s' % (name, status.lower())
+            ret['comment'] = 'Jenkins theme config %s %s' % (
+                name, status.lower())
             result = True
         else:
             status = 'FAILED'
             logger.error(
                 "Jenkins theme API call failure: %s", call_result["msg"])
             ret['comment'] = 'Jenkins theme API call failure: %s' % (call_result[
-                                                                           "msg"])
+                "msg"])
     ret['result'] = None if test else result
     return ret
diff --git a/_states/jenkins_user.py b/_states/jenkins_user.py
index c2f2d9b..ed34877 100644
--- a/_states/jenkins_user.py
+++ b/_states/jenkins_user.py
@@ -1,40 +1,41 @@
 import logging
+
 logger = logging.getLogger(__name__)
 
 create_admin_groovy = u"""\
 import jenkins.model.*
 import hudson.security.*
 def instance = Jenkins.getInstance()
-if(hudson.model.User.getAll().find{{u->u.fullName.equals("{username}")}}){{
+if(hudson.model.User.getAll().find{u->u.fullName.equals("${username}")}){
     print("EXISTS")
-}}else{{
+}else{
     def hudsonRealm = new HudsonPrivateSecurityRealm(false)
-    def result=hudsonRealm.createAccount("{username}","{password}")
+    def result=hudsonRealm.createAccount("${username}","${password}")
     instance.setSecurityRealm(hudsonRealm)
     def strategy = new hudson.security.FullControlOnceLoggedInAuthorizationStrategy()
     strategy.setAllowAnonymousRead(false)
     instance.setAuthorizationStrategy(strategy)
     instance.save()
-    if(result.toString().equals("{username}")){{
+    if(result.toString().equals("${username}")){
         print("SUCCESS")
-    }}else{{
+    }else{
         print("FAILED")
-    }}
-}}
+    }
+}
 """  # noqa
 
 
 create_user_groovy = u"""\
-if(hudson.model.User.getAll().find{{u->u.fullName.equals("{username}")}}){{
+if(hudson.model.User.getAll().find{u->u.fullName.equals("${username}")}){
     print("EXISTS")
-}}else{{
-    def result=jenkins.model.Jenkins.instance.securityRealm.createAccount("{username}", "{password}")
-    if(result.toString().equals("{username}")){{
+}else{
+    def result=jenkins.model.Jenkins.instance.securityRealm.createAccount("${username}", "${password}")
+    if(result.toString().equals("${username}")){
         print("SUCCESS")
-    }}else{{
+    }else{
         print("FAILED")
-    }}
-}}
+    }
+}
 """  # noqa
 
 
@@ -75,7 +76,8 @@
     else:
         call_result = __salt__['jenkins_common.call_groovy_script'](
             create_admin_groovy if admin else create_user_groovy, {"username": username, "password": password})
-        if call_result["code"] == 200 and call_result["msg"] in ["SUCCESS", "EXISTS"]:
+        if call_result["code"] == 200 and call_result["msg"] in [
+                "SUCCESS", "EXISTS"]:
             if call_result["msg"] == "SUCCESS":
                 status = "CREATED" if not admin else "ADMIN CREATED"
                 ret['changes'][username] = status
diff --git a/_states/jenkins_view.py b/_states/jenkins_view.py
index dc941e9..e229a11 100644
--- a/_states/jenkins_view.py
+++ b/_states/jenkins_view.py
@@ -1,73 +1,75 @@
 import logging
+
 from json import dumps
+
 logger = logging.getLogger(__name__)
 
 add_view_groovy = """\
 import java.util.stream.Collectors
 import org.jenkinsci.plugins.categorizedview.CategorizedJobsView
 import org.jenkinsci.plugins.categorizedview.GroupingRule
-view = Jenkins.instance.getView("{view_name}")
-if(view){{
-  if(view.getClass().getName().equals("hudson.model.ListView")){{
-    include_regex="{include_regex}"
-    if(include_regex != "" && !view.getIncludeRegex().equals(include_regex)){{
+view = Jenkins.instance.getView("${view_name}")
+if(view){
+  if(view.getClass().getName().equals("hudson.model.ListView")){
+    include_regex="${include_regex}"
+    if(include_regex != "" && !view.getIncludeRegex().equals(include_regex)){
         view.setIncludeRegex(include_regex)
         print("ADDED/CHANGED")
-    }}else{{
+    }else{
         print("EXISTS")
-    }}
-  }}else if(view.getClass().getName().equals("org.jenkinsci.plugins.categorizedview.CategorizedJobsView")){{
+    }
+  }else if(view.getClass().getName().equals("org.jenkinsci.plugins.categorizedview.CategorizedJobsView")){
     def jsonSlurper = new groovy.json.JsonSlurper()
-    def inputCategories = jsonSlurper.parseText('{categories_string}')
-    def groupRegexes = inputCategories.stream().map{{e -> e["group_regex"]}}.collect(Collectors.toList())
-    def namingRules = inputCategories.stream().map{{e -> e["naming_rule"]}}.collect(Collectors.toList())
+    def inputCategories = jsonSlurper.parseText('${categories_string}')
+    def groupRegexes = inputCategories.stream().map{e -> e["group_regex"]}.collect(Collectors.toList())
+    def namingRules = inputCategories.stream().map{e -> e["naming_rule"]}.collect(Collectors.toList())
     def actualCategories = view.categorizationCriteria
     def equals = !actualCategories.isEmpty()
-    def include_regex="{include_regex}"
-    if(include_regex != "" && !view.getIncludeRegex().equals(include_regex)){{
+    def include_regex="${include_regex}"
+    if(include_regex != "" && !view.getIncludeRegex().equals(include_regex)){
         view.setIncludeRegex(include_regex)
         equals = false
-    }}
-    for(int i=0;i<actualCategories.size();i++){{
-      if(!groupRegexes.contains(actualCategories[i].groupRegex) || !namingRules.contains(actualCategories[i].namingRule)){{
+    }
+    for(int i=0;i<actualCategories.size();i++){
+      if(!groupRegexes.contains(actualCategories[i].groupRegex) || !namingRules.contains(actualCategories[i].namingRule)){
         equals = false
-      }}
-    }}
-    if(!equals){{
+      }
+    }
+    if(!equals){
       view.categorizationCriteria.clear()
-      for(int i=0;i<inputCategories.size();i++){{
+      for(int i=0;i<inputCategories.size();i++){
         view.categorizationCriteria.add(new GroupingRule(inputCategories[i].group_regex,inputCategories[i].naming_rule))
-      }}
+      }
       print("ADDED/CHANGED")
-    }}else{{
+    }else{
       print("EXISTS")
-    }}
-  }}else{{
+    }
+  }else{
     print("EXISTS")
-  }}
-}}else{{
-  try{{
-    {view_def}
+  }
+}else{
+  try{
+    ${view_def}
     Jenkins.instance.addView(view)
     print("ADDED/CHANGED")
-  }}catch(Exception e){{
+  }catch(Exception e){
     print("FAILED")
-  }}
-}}
+  }
+}
 """  # noqa
 
 remove_view_groovy = """\
-view = Jenkins.instance.getView("{view_name}")
-if(view){{
-  try{{
+view = Jenkins.instance.getView("${view_name}")
+if(view){
+  try{
     Jenkins.instance.deleteView(view)
     print("REMOVED")
-  }}catch(Exception e){{
+  }catch(Exception e){
     print("FAILED")
-  }}
-}}else{{
+  }
+}else{
   print("NOT PRESENT")
-}}
+}
 """  # noqa
 
 
@@ -91,7 +93,8 @@
     :param type: view type (default ListView)
     :returns: salt-specified state dict
     """
-    return _plugin_call(name, type, add_view_groovy, ["ADDED/CHANGED", "EXISTS"], **kwargs)
+    return _plugin_call(name, type, add_view_groovy, [
+                        "ADDED/CHANGED", "EXISTS"], **kwargs)
 
 
 def absent(name, **kwargs):
@@ -101,7 +104,8 @@
     :param name: view name
     :returns: salt-specified state dict
     """
-    return _plugin_call(name, None, remove_view_groovy, ["REMOVED", "NOT PRESENT"], **kwargs)
+    return _plugin_call(name, None, remove_view_groovy, [
+                        "REMOVED", "NOT PRESENT"], **kwargs)
 
 
 def _plugin_call(name, type, template, success_msgs, **kwargs):
diff --git a/debian/changelog b/debian/changelog
index 5d7eafa..d5fd774 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+salt-formula-jenkins (2017.8) trusty; urgency=medium
+
+  * New version
+
+ -- Filip Pytloun <filip.pytloun@tcpcloud.eu>  Wed, 16 Aug 2017 18:35:51 +0200
+
 salt-formula-jenkins (0.2) trusty; urgency=medium
 
   * First public release
diff --git a/jenkins/files/grafana_dashboards/jenkins_prometheus.json b/jenkins/files/grafana_dashboards/jenkins_prometheus.json
new file mode 100644
index 0000000..54cce69
--- /dev/null
+++ b/jenkins/files/grafana_dashboards/jenkins_prometheus.json
@@ -0,0 +1,1092 @@
+{%- raw %}
+{
+  "annotations": {
+    "list": []
+  },
+  "description": "Jobs queue speeds and rates, Executors availability, Nodes status, Jenkins and JVM resource usage.\r\n\r\nCreated as copy of a bit nicer dashboard, which is using graphite datasource.",
+  "editable": true,
+  "gnetId": 306,
+  "graphTooltip": 0,
+  "hideControls": false,
+  "id": null,
+  "links": [],
+  "refresh": false,
+  "rows": [
+    {
+      "collapse": false,
+      "height": "250px",
+      "panels": [
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": false,
+          "colors": [
+            "rgba(50, 172, 45, 0.97)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(245, 54, 54, 0.9)"
+          ],
+          "editable": true,
+          "error": false,
+          "format": "none",
+          "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+          },
+          "id": 12,
+          "interval": null,
+          "links": [],
+          "mappingType": 1,
+          "mappingTypes": [
+            {
+              "name": "value to text",
+              "value": 1
+            },
+            {
+              "name": "range to text",
+              "value": 2
+            }
+          ],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": " jobs/min",
+          "postfixFontSize": "70%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "rangeMaps": [
+            {
+              "from": "null",
+              "text": "N/A",
+              "to": "null"
+            }
+          ],
+          "span": 2,
+          "sparkline": {
+            "fillColor": "rgba(189, 31, 138, 0.18)",
+            "full": false,
+            "lineColor": "rgb(151, 31, 193)",
+            "show": true
+          },
+          "tableColumn": "",
+          "targets": [
+            {
+              "expr": "rate(jenkins_job_building_duration_count[1m])",
+              "step": 120
+            }
+          ],
+          "thresholds": "6,10",
+          "title": "Processing speed",
+          "type": "singlestat",
+          "valueFontSize": "150%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "N/A",
+              "value": "null"
+            }
+          ],
+          "valueName": "current"
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "dashLength": 10,
+          "dashes": false,
+          "editable": true,
+          "error": false,
+          "fill": 1,
+          "grid": {},
+          "id": 4,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "spaceLength": 10,
+          "span": 8,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "expr": "jenkins_job_queuing_duration",
+              "step": 10
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Job queue duration",
+          "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+          },
+          "type": "graph",
+          "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": false,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "editable": true,
+          "error": false,
+          "format": "none",
+          "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+          },
+          "id": 13,
+          "interval": null,
+          "links": [],
+          "mappingType": 1,
+          "mappingTypes": [
+            {
+              "name": "value to text",
+              "value": 1
+            },
+            {
+              "name": "range to text",
+              "value": 2
+            }
+          ],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": " jobs/min",
+          "postfixFontSize": "70%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "rangeMaps": [
+            {
+              "from": "null",
+              "text": "N/A",
+              "to": "null"
+            }
+          ],
+          "span": 2,
+          "sparkline": {
+            "fillColor": "rgba(31, 184, 189, 0.18)",
+            "full": false,
+            "lineColor": "rgb(31, 193, 185)",
+            "show": true
+          },
+          "tableColumn": "",
+          "targets": [
+            {
+              "expr": "rate(jenkins_job_queuing_duration_count[1m])",
+              "step": 120
+            }
+          ],
+          "thresholds": "",
+          "title": "Queued rate",
+          "type": "singlestat",
+          "valueFontSize": "150%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "N/A",
+              "value": "null"
+            }
+          ],
+          "valueName": "current"
+        }
+      ],
+      "repeat": null,
+      "repeatIteration": null,
+      "repeatRowId": null,
+      "showTitle": false,
+      "title": "New row",
+      "titleSize": "h6"
+    },
+    {
+      "collapse": false,
+      "height": "150px",
+      "panels": [
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": false,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "decimals": 1,
+          "editable": true,
+          "error": false,
+          "format": "percent",
+          "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+          },
+          "id": 7,
+          "interval": null,
+          "links": [],
+          "mappingType": 1,
+          "mappingTypes": [
+            {
+              "name": "value to text",
+              "value": 1
+            },
+            {
+              "name": "range to text",
+              "value": 2
+            }
+          ],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "50%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "rangeMaps": [
+            {
+              "from": "null",
+              "text": "N/A",
+              "to": "null"
+            }
+          ],
+          "span": 2,
+          "sparkline": {
+            "fillColor": "rgba(85, 189, 31, 0.18)",
+            "full": false,
+            "lineColor": "rgb(60, 193, 31)",
+            "show": true
+          },
+          "tableColumn": "",
+          "targets": [
+            {
+              "expr": "(vm_memory_total_max{job=\"jenkins\"} - vm_memory_total_used{job=\"jenkins\"}) / vm_memory_total_max{job=\"jenkins\"} * 100.0",
+              "step": 120,
+              "textEditor": false
+            }
+          ],
+          "thresholds": "",
+          "title": "JVM free memory",
+          "type": "singlestat",
+          "valueFontSize": "100%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "N/A",
+              "value": "null"
+            }
+          ],
+          "valueName": "current"
+        },
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": false,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "decimals": 1,
+          "editable": true,
+          "error": false,
+          "format": "ms",
+          "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+          },
+          "id": 6,
+          "interval": null,
+          "links": [],
+          "mappingType": 1,
+          "mappingTypes": [
+            {
+              "name": "value to text",
+              "value": 1
+            },
+            {
+              "name": "range to text",
+              "value": 2
+            }
+          ],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "50%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "rangeMaps": [
+            {
+              "from": "null",
+              "text": "N/A",
+              "to": "null"
+            }
+          ],
+          "span": 2,
+          "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": false,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": false
+          },
+          "tableColumn": "",
+          "targets": [
+            {
+              "expr": "vm_uptime_milliseconds{job=\"jenkins\"}",
+              "step": 120,
+              "textEditor": false
+            }
+          ],
+          "thresholds": "",
+          "title": "JVM uptime",
+          "type": "singlestat",
+          "valueFontSize": "100%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "N/A",
+              "value": "null"
+            }
+          ],
+          "valueName": "current"
+        },
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": true,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "decimals": 1,
+          "editable": true,
+          "error": false,
+          "format": "none",
+          "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+          },
+          "id": 8,
+          "interval": null,
+          "links": [],
+          "mappingType": 1,
+          "mappingTypes": [
+            {
+              "name": "value to text",
+              "value": 1
+            },
+            {
+              "name": "range to text",
+              "value": 2
+            }
+          ],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "50%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "rangeMaps": [
+            {
+              "from": "null",
+              "text": "N/A",
+              "to": "null"
+            }
+          ],
+          "span": 2,
+          "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": false,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": false
+          },
+          "tableColumn": "",
+          "targets": [
+            {
+              "expr": "jenkins_health_check_score",
+              "step": 120,
+              "textEditor": false
+            }
+          ],
+          "thresholds": "1,1",
+          "title": "Jenkins health",
+          "type": "singlestat",
+          "valueFontSize": "100%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "Good!",
+              "value": "1.0"
+            },
+            {
+              "op": "=",
+              "text": "Check :/",
+              "value": "*"
+            }
+          ],
+          "valueName": "current"
+        },
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": true,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "decimals": 1,
+          "editable": true,
+          "error": false,
+          "format": "none",
+          "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+          },
+          "id": 9,
+          "interval": null,
+          "links": [],
+          "mappingType": 1,
+          "mappingTypes": [
+            {
+              "name": "value to text",
+              "value": 1
+            },
+            {
+              "name": "range to text",
+              "value": 2
+            }
+          ],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "50%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "rangeMaps": [
+            {
+              "from": "null",
+              "text": "N/A",
+              "to": "null"
+            }
+          ],
+          "span": 2,
+          "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": false,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": false
+          },
+          "tableColumn": "",
+          "targets": [
+            {
+              "expr": "jenkins_plugins_failed",
+              "step": 120,
+              "textEditor": false
+            }
+          ],
+          "thresholds": "0,0",
+          "title": "Jenkins plugins failed",
+          "type": "singlestat",
+          "valueFontSize": "100%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "None!",
+              "value": "0"
+            }
+          ],
+          "valueName": "current"
+        },
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": true,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "decimals": 1,
+          "editable": true,
+          "error": false,
+          "format": "none",
+          "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+          },
+          "id": 10,
+          "interval": null,
+          "links": [],
+          "mappingType": 1,
+          "mappingTypes": [
+            {
+              "name": "value to text",
+              "value": 1
+            },
+            {
+              "name": "range to text",
+              "value": 2
+            }
+          ],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "50%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "rangeMaps": [
+            {
+              "from": "null",
+              "text": "N/A",
+              "to": "null"
+            }
+          ],
+          "span": 2,
+          "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": false,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": false
+          },
+          "tableColumn": "",
+          "targets": [
+            {
+              "expr": "jenkins_node_offline_value",
+              "step": 120,
+              "textEditor": false
+            }
+          ],
+          "thresholds": "0,0",
+          "title": "Jenkins nodes offline",
+          "type": "singlestat",
+          "valueFontSize": "100%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "None!",
+              "value": "0"
+            }
+          ],
+          "valueName": "current"
+        },
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": false,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "decimals": 1,
+          "editable": true,
+          "error": false,
+          "format": "none",
+          "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+          },
+          "id": 11,
+          "interval": null,
+          "links": [],
+          "mappingType": 1,
+          "mappingTypes": [
+            {
+              "name": "value to text",
+              "value": 1
+            },
+            {
+              "name": "range to text",
+              "value": 2
+            }
+          ],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "50%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "rangeMaps": [
+            {
+              "from": "null",
+              "text": "N/A",
+              "to": "null"
+            }
+          ],
+          "span": 2,
+          "sparkline": {
+            "fillColor": "rgba(189, 31, 31, 0.18)",
+            "full": false,
+            "lineColor": "rgb(193, 31, 31)",
+            "show": true
+          },
+          "tableColumn": "",
+          "targets": [
+            {
+              "expr": "jenkins_queue_size_value",
+              "step": 120,
+              "textEditor": false
+            }
+          ],
+          "thresholds": "0,0",
+          "title": "Jenkins queue size",
+          "type": "singlestat",
+          "valueFontSize": "100%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "N/A",
+              "value": "null"
+            }
+          ],
+          "valueName": "current"
+        }
+      ],
+      "repeat": null,
+      "repeatIteration": null,
+      "repeatRowId": null,
+      "showTitle": false,
+      "title": "New row",
+      "titleSize": "h6"
+    },
+    {
+      "collapse": false,
+      "height": "250px",
+      "panels": [
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": false,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "editable": true,
+          "error": false,
+          "format": "none",
+          "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+          },
+          "height": "",
+          "id": 2,
+          "interval": null,
+          "links": [],
+          "mappingType": 1,
+          "mappingTypes": [
+            {
+              "name": "value to text",
+              "value": 1
+            },
+            {
+              "name": "range to text",
+              "value": 2
+            }
+          ],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "50%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "rangeMaps": [
+            {
+              "from": "null",
+              "text": "N/A",
+              "to": "null"
+            }
+          ],
+          "span": 2,
+          "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": false,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": true
+          },
+          "tableColumn": "",
+          "targets": [
+            {
+              "expr": "jenkins_executor_free_value",
+              "step": 120
+            }
+          ],
+          "thresholds": "",
+          "title": "Executor free",
+          "type": "singlestat",
+          "valueFontSize": "150%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "N/A",
+              "value": "null"
+            }
+          ],
+          "valueName": "current"
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "dashLength": 10,
+          "dashes": false,
+          "editable": true,
+          "error": false,
+          "fill": 1,
+          "grid": {},
+          "id": 1,
+          "legend": {
+            "alignAsTable": false,
+            "avg": false,
+            "current": false,
+            "hideEmpty": false,
+            "hideZero": false,
+            "max": false,
+            "min": false,
+            "rightSide": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "spaceLength": 10,
+          "span": 8,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "expr": "avg(jenkins_job_building_duration_sum/jenkins_job_building_duration_count)",
+              "step": 10
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Executors health",
+          "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "cumulative"
+          },
+          "transparent": false,
+          "type": "graph",
+          "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "short",
+              "label": "",
+              "logBase": 2,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "short",
+              "label": "",
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": false,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "editable": true,
+          "error": false,
+          "format": "none",
+          "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": false,
+            "thresholdLabels": false,
+            "thresholdMarkers": true
+          },
+          "height": "",
+          "id": 3,
+          "interval": null,
+          "links": [],
+          "mappingType": 1,
+          "mappingTypes": [
+            {
+              "name": "value to text",
+              "value": 1
+            },
+            {
+              "name": "range to text",
+              "value": 2
+            }
+          ],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "50%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "rangeMaps": [
+            {
+              "from": "null",
+              "text": "N/A",
+              "to": "null"
+            }
+          ],
+          "span": 2,
+          "sparkline": {
+            "fillColor": "rgba(189, 174, 31, 0.18)",
+            "full": false,
+            "lineColor": "rgb(193, 185, 31)",
+            "show": true
+          },
+          "tableColumn": "",
+          "targets": [
+            {
+              "expr": "jenkins_executor_in_use_value",
+              "step": 120
+            }
+          ],
+          "thresholds": "",
+          "title": "Executor In-use",
+          "type": "singlestat",
+          "valueFontSize": "150%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "N/A",
+              "value": "null"
+            }
+          ],
+          "valueName": "current"
+        }
+      ],
+      "repeat": null,
+      "repeatIteration": null,
+      "repeatRowId": null,
+      "showTitle": false,
+      "title": "Row",
+      "titleSize": "h6"
+    },
+    {
+      "collapse": false,
+      "height": "250px",
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "dashLength": 10,
+          "dashes": false,
+          "editable": true,
+          "error": false,
+          "fill": 1,
+          "grid": {},
+          "id": 5,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 2,
+          "links": [],
+          "nullPointMode": "connected",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "spaceLength": 10,
+          "span": 12,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "expr": "vm_cpu_load{job=\"jenkins\"}",
+              "step": 5
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Resource usage",
+          "tooltip": {
+            "msResolution": false,
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "percent",
+              "label": "",
+              "logBase": 2,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "short",
+              "label": "",
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        }
+      ],
+      "repeat": null,
+      "repeatIteration": null,
+      "repeatRowId": null,
+      "showTitle": false,
+      "title": "New row",
+      "titleSize": "h6"
+    }
+  ],
+  "schemaVersion": 14,
+  "style": "dark",
+  "tags": [],
+  "templating": {
+    "list": []
+  },
+  "time": {
+    "from": "now-3h",
+    "to": "now"
+  },
+  "timepicker": {
+    "refresh_intervals": [
+      "5s",
+      "10s",
+      "30s",
+      "1m",
+      "5m",
+      "15m",
+      "30m",
+      "1h",
+      "2h",
+      "1d"
+    ],
+    "time_options": [
+      "5m",
+      "15m",
+      "1h",
+      "6h",
+      "12h",
+      "24h",
+      "2d",
+      "7d",
+      "30d"
+    ]
+  },
+  "timezone": "browser",
+  "title": "Jenkins",
+  "version": 0
+}
+{%- endraw %}
diff --git a/jenkins/files/jobs/_parameters.xml b/jenkins/files/jobs/_parameters.xml
index 0f63ad5..08fd728 100755
--- a/jenkins/files/jobs/_parameters.xml
+++ b/jenkins/files/jobs/_parameters.xml
@@ -18,7 +18,7 @@
             </a>
           </choices>
           {%- endif %}
-          {%- if param.default is defined %}
+          {%- if param.default is defined and param.default != '' %}
           <defaultValue>{{ param.get('default') }}</defaultValue>
           {%- else %}
           <defaultValue/>
diff --git a/jenkins/job_builder.sls b/jenkins/job_builder.sls
index 01c5238..c71ad67 100644
--- a/jenkins/job_builder.sls
+++ b/jenkins/job_builder.sls
@@ -25,7 +25,7 @@
 jenkins_job_builder_install:
   pip.installed:
   - names:
-    - jenkins-job-builder
+    - 'jenkins-job-builder{{ job_builder.source.version|default("") }}'
   - require:
     - pkg: jenkins_job_builder_packages
   - require_in:
@@ -62,7 +62,7 @@
 
 jenkins_job_builder_jobs_update:
   cmd.run:
-  - name: jenkins-jobs update /srv/jenkins/job_builder_config/{{ job_builder.config.path }}
+  - name: jenkins-jobs update /srv/jenkins/job_builder_config/{{ job_builder.config.path|default("") }}
   - require:
     - git: {{ job_builder.config.address }}
     - file: {{ job_builder.dir.conf }}/jenkins_jobs.ini
diff --git a/jenkins/master/user.sls b/jenkins/master/user.sls
index d8df637..96639c3 100644
--- a/jenkins/master/user.sls
+++ b/jenkins/master/user.sls
@@ -22,5 +22,6 @@
   file.touch:
   - require:
     - file: {{ master.home }}/users/{{ user_name }}/config.xml
+  - unless: test -e {{ master.home }}/users/{{ user_name }}/.config_created
 
 {%- endfor %}
diff --git a/jenkins/meta/grafana.yml b/jenkins/meta/grafana.yml
new file mode 100644
index 0000000..039d2e8
--- /dev/null
+++ b/jenkins/meta/grafana.yml
@@ -0,0 +1,5 @@
+dashboard:
+  jenkins_prometheus:
+    datasource: prometheus
+    format: json
+    template: jenkins/files/grafana_dashboards/jenkins_prometheus.json
diff --git a/jenkins/meta/prometheus.yml b/jenkins/meta/prometheus.yml
new file mode 100644
index 0000000..c7384e6
--- /dev/null
+++ b/jenkins/meta/prometheus.yml
@@ -0,0 +1,11 @@
+{%- if grains.get('jenkins_plugins', {}).get('prometheus', {}).get('version', False) and pillar.get('jenkins', {}).get('client',{}).get('master') %}
+{%- from "jenkins/map.jinja" import client with context %}
+server:
+  target:
+    static:
+      jenkins:
+        metrics_path: /prometheus
+        endpoint:
+          - address: {{ client.master.host }}
+            port: {{ client.master.port }}
+{%- endif %}
diff --git a/metadata.yml b/metadata.yml
index 7222bf8..715b870 100644
--- a/metadata.yml
+++ b/metadata.yml
@@ -1,3 +1,3 @@
 name: "jenkins"
-version: "0.2"
+version: "2017.8"
 source: "https://github.com/tcpcloud/salt-formula-jenkins"
diff --git a/metadata/service/support.yml b/metadata/service/support.yml
index 785dd4f..4a6a4cc 100644
--- a/metadata/service/support.yml
+++ b/metadata/service/support.yml
@@ -13,3 +13,8 @@
         enabled: true
       config:
         enabled: true
+      grafana:
+        enabled: true
+      prometheus:
+       enabled: true
+
