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,
