diff --git a/README.rst b/README.rst
index b90b39a..ed605ca 100644
--- a/README.rst
+++ b/README.rst
@@ -51,6 +51,10 @@
           user: openstack
           password: pwd
           virtual_host: '/openstack'
+       client:
+         connection_params:
+           connect_retries: 50
+           connect_retry_delay: 1
         backend:
           7k2_SAS:
             engine: storwize
@@ -693,6 +697,9 @@
           protocol: http
           endpoint_type: internalURL
           region_name: RegionOne
+        connection_params:
+          connect_retries: 5
+          connect_retry_delay: 1
         backend:
           ceph:
             type_name: standard-iops
diff --git a/_modules/cinderv3/arg_converter.py b/_modules/cinderv3/arg_converter.py
index 3a57f8b..90445fd 100644
--- a/_modules/cinderv3/arg_converter.py
+++ b/_modules/cinderv3/arg_converter.py
@@ -11,10 +11,10 @@
             return False
 
 
-def named_checker(resource, ref, cloud_name):
+def named_checker(resource, ref, cloud_name, **kwargs):
     resp_key = response_keys[resource]
     resp = resource_lists[resource](
-        name=ref, cloud_name=cloud_name)[resp_key]
+        name=ref, cloud_name=cloud_name, **kwargs)[resp_key]
     if len(resp) == 0:
         raise common.ResourceNotFound(resp_key, ref)
     elif len(resp) > 1:
@@ -22,10 +22,11 @@
     return resp[0]['id']
 
 
-def nameless_checker(resource, ref, cloud_name):
+def nameless_checker(resource, ref, cloud_name, **kwargs):
     item_id = None
     resp_key = response_keys[resource]
-    resp = resource_lists[resource](cloud_name=cloud_name)[resp_key]
+    resp = resource_lists[resource](
+        cloud_name=cloud_name, **kwargs)[resp_key]
     for item in resp:
         if item["name"] == ref:
             if item_id is not None:
@@ -60,6 +61,7 @@
         def wrapped_f(*args, **kwargs):
             results = []
             args_start = 0
+            connection_params = kwargs.pop('connection_params', {}) or {}
             for index, (resource, arg_name) in enumerate(
                     resource_arg_name_pairs):
                 if arg_name in kwargs:
@@ -73,9 +75,10 @@
                     results.append(ref)
                 else:
                     # Then we have name not uuid
-                    res = name_checkers[resource](resource, ref, cloud_name)
+                    res = name_checkers[resource](resource, ref, cloud_name,
+                                                  connection_params=connection_params)
                     results.append(res)
                 results.extend(args[args_start:])
             return func(*results, **kwargs)
         return wrapped_f
-    return wrap
\ No newline at end of file
+    return wrap
diff --git a/_modules/cinderv3/common.py b/_modules/cinderv3/common.py
index bc77cd9..df419e9 100644
--- a/_modules/cinderv3/common.py
+++ b/_modules/cinderv3/common.py
@@ -65,9 +65,11 @@
 def send(method):
     def wrap(func):
         def wrapped_f(*args, **kwargs):
-            connect_retries = 30
-            connect_retry_delay = 1
             cloud_name = kwargs.pop('cloud_name')
+            connection_params = kwargs.pop('connection_params', {}) or {}
+            connect_retries = connection_params.get('connect_retries', 60)
+            connect_retry_delay = connection_params.get('connect_retry_delay',
+                                                        1)
             if not cloud_name:
                 e = NoCredentials()
                 log.error('%s' % e)
diff --git a/_states/cinderv3.py b/_states/cinderv3.py
index c954c12..511ec5f 100644
--- a/_states/cinderv3.py
+++ b/_states/cinderv3.py
@@ -20,7 +20,7 @@
     try:
         method_name = '{}_get_details'.format(resource)
         exact_resource = _cinder_call(
-            method_name, name, cloud_name=cloud_name
+            method_name, name, cloud_name=cloud_name, **kwargs
         )[resource]
     except Exception as e:
         if 'ResourceNotFound' in repr(e):
@@ -56,11 +56,12 @@
     return _succeeded('no_changes', name, resource)
 
 
-def _resource_absent(resource, name, cloud_name):
+def _resource_absent(resource, name, cloud_name, connection_params=None):
     try:
         method_name = '{}_get_details'.format(resource)
         _cinder_call(
-            method_name, name, cloud_name=cloud_name
+            method_name, name, cloud_name=cloud_name,
+            connection_params=connection_params
         )[resource]
     except Exception as e:
         if 'ResourceNotFound' in repr(e):
@@ -70,7 +71,8 @@
     try:
         method_name = '{}_delete'.format(resource)
         _cinder_call(
-            method_name, name, cloud_name=cloud_name
+            method_name, name, cloud_name=cloud_name,
+            connection_params=connection_params
         )
     except Exception as e:
         log.error('Cinder delete {0} failed with {1}'.format(resource, e))
@@ -78,32 +80,36 @@
     return _succeeded('delete', name, resource)
 
 
-def service_enabled(name, binary, cloud_name):
+def service_enabled(name, binary, cloud_name, connection_params=None):
     """Ensures that the service is enabled on the host
 
-    :param name:    name of a host where service is running
-    :param binary:  name of the service have to be run
+    :param name:              name of a host where service is running
+    :param binary:            name of the service have to be run
+    :param connection_params: dictionary with salt internal connection params
     """
     changes = {}
     ret = []
 
-    services = _cinder_call('service_list', host=name, binary=binary, cloud_name=cloud_name)['services']
+    services = _cinder_call('service_list', host=name, binary=binary, cloud_name=cloud_name,
+                            connection_params=connection_params)['services']
 
     disabled_service = [s for s in services if s['status'] == 'disabled']
 
     if len(disabled_service):
         for service in disabled_service:
-            changes = _cinder_call('service_update', service['host'], binary, 'enable', cloud_name=cloud_name)
+            changes = _cinder_call('service_update', service['host'], binary, 'enable', cloud_name=cloud_name,
+                                   connection_params=connection_params)
             ret.append(changes)
         return _succeeded('update', name, binary, {'changes':ret})
     return  _succeeded('no_changes', name, binary)
 
 
-def service_disabled(name, binary, cloud_name, disabled_reason=None):
+def service_disabled(name, binary, cloud_name, disabled_reason=None, connection_params=None):
     """Ensures that the service is disabled on the host
 
     :param name:    name of a host where service is running
     :param binary:  name of the service have to be disabled
+    :param connection_params: dictionary with salt internal connection params
     """
     kwargs = {}
     ret = []
@@ -111,13 +117,16 @@
     if disabled_reason:
         kwargs['disabled_reason'] = disabled_reason
 
-    services = _cinder_call('service_list', host=name, binary=binary, cloud_name=cloud_name)['services']
+    services = _cinder_call('service_list', host=name, binary=binary, cloud_name=cloud_name,
+                            connection_params=connection_params)['services']
 
     enabled_services = [s for s in services if s['status'] == 'enabled']
 
     if len(enabled_services):
         for service in enabled_services:
-            changes = _cinder_call('service_update', service['host'], binary, 'disable', cloud_name=cloud_name, **kwargs)
+            changes = _cinder_call('service_update', service['host'], binary, 'disable',
+                                   cloud_name=cloud_name, connection_params=connection_params,
+                                   **kwargs)
             ret.append(changes)
         return _succeeded('update', name, binary, {'changes':ret})
     return  _succeeded('no_changes', name, binary)
@@ -127,8 +136,8 @@
     return _resource_present('volume_type', name, cloud_name, **kwargs)
 
 
-def volume_type_absent(name, cloud_name):
-    return _resource_absent('volume_type', name, cloud_name)
+def volume_type_absent(name, cloud_name, connection_params=None):
+    return _resource_absent('volume_type', name, cloud_name, connection_params)
 
 
 def volume_present(name, cloud_name, size, **kwargs):
@@ -138,18 +147,20 @@
     return _resource_present('volume', name, cloud_name, **kwargs)
 
 
-def volume_absent(name, cloud_name):
-    return _resource_absent('volume', name, cloud_name)
+def volume_absent(name, cloud_name, connection_params=None):
+    return _resource_absent('volume', name, cloud_name, connection_params)
 
 
-def volume_type_key_present(name=None, key=None, value=None, cloud_name=None):
+def volume_type_key_present(name=None, key=None, value=None, cloud_name=None,
+                            connection_params=None):
     """
     Ensures that the extra specs are present on a volume type.
     """
     keys = "{u'" + key + "': u'" + value + "'}"
     keys = ast.literal_eval(keys)
     signal_create = _cinder_call('keys_volume_type_set', name, keys=keys,
-                                 cloud_name=cloud_name)
+                                 cloud_name=cloud_name,
+                                 connection_params=connection_params)
     if signal_create["result"] is True:
         ret = {
             'name': name,
diff --git a/cinder/client.sls b/cinder/client.sls
index 233f31f..828743e 100644
--- a/cinder/client.sls
+++ b/cinder/client.sls
@@ -5,41 +5,15 @@
   pkg.installed:
   - names: {{ client.pkgs }}
 
-{% if client.identity is mapping %}
-{%- set identity = client.identity %}
-{%- else %}
-{%- set identity = salt['pillar.get']('keystone:client:server:'+client.identity) %}
-{%- endif %}
-
-{#- Keystone V3 is supported only from Ocata release (https://docs.openstack.org/releasenotes/python-cinderclient/ocata.html) #}
-{#- Therefore if api_version is not defined and OpenStack version is mitaka or newton use v2.0. #}
-{%- if 'api_version' in identity %}
-{%- set keystone_api_version = identity.get('api_version') %}
-{%- else %} 
-{%- if 'version' in client and client.version in ['mitaka', 'newton'] %}
-{%- set keystone_api_version = 'v2.0' %}
-{%- else %}
-{%- set keystone_api_version = 'v3' %}
-{%- endif %}
-{%- endif %}
-
-{%- set credentials = {'host': identity.host,
-                       'user': identity.user,
-                       'password': identity.password,
-                       'project_id': identity.project,
-                       'port': identity.get('port', 35357),
-                       'protocol': identity.get('protocol', 'http'),
-                       'region_name': identity.get('region', 'RegionOne'),
-                       'endpoint_type': identity.get('endpoint_type', 'internalURL'),
-                       'certificate': identity.get('certificate', client.cacert_file),
-                       'api_version': keystone_api_version} %}
-
 {%- for backend_name, backend in client.get('backend', {}).items() %}
 
 cinder_type_create_{{ backend_name }}:
   cinderv3.volume_type_present:
   - name: {{ backend.type_name }}
   - cloud_name: admin_identity
+  {%- if client.connection_params is defined %}
+  - connection_params:  {{ client.connection_params }}
+  {%- endif %}
   - require:
     - pkg: cinder_client_packages
 
@@ -49,6 +23,9 @@
   - key: volume_backend_name
   - value: {{ backend_name }}
   - cloud_name: admin_identity
+  {%- if client.connection_params is defined %}
+  - connection_params:  {{ client.connection_params }}
+  {%- endif %}
   - require:
     - cinderv3: cinder_type_create_{{ backend_name }}
 
@@ -60,6 +37,9 @@
   - key: {{ key_name }}
   - value: {{ key_value }}
   - cloud_name: admin_identity
+  {%- if client.connection_params is defined %}
+  - connection_params:  {{ client.connection_params }}
+  {%- endif %}
   - require:
     - cinderv3: cinder_type_create_{{ backend_name }}
 
diff --git a/cinder/controller.sls b/cinder/controller.sls
index f103550..8e7023c 100644
--- a/cinder/controller.sls
+++ b/cinder/controller.sls
@@ -363,6 +363,9 @@
   {%- if controller.get('role', 'primary') == 'secondary' %}
   - onlyif: /bin/false
   {%- endif %}
+  {%- if controller.get('client', {}).connection_params is defined %}
+  - connection_params:  {{ controller.client.connection_params }}
+  {%- endif %}
   - require:
     - service: cinder_controller_services
 
@@ -375,6 +378,9 @@
   {%- if controller.get('role', 'primary') == 'secondary' %}
   - onlyif: /bin/false
   {%- endif %}
+  {%- if controller.get('client', {}).connection_params is defined %}
+  - connection_params:  {{ controller.client.connection_params }}
+  {%- endif %}
   - require:
     - cinderv3: cinder_type_create_{{ backend_name }}
 
