diff --git a/_states/barbicanv1.py b/_states/barbicanv1.py
index 493f52a..34aca58 100644
--- a/_states/barbicanv1.py
+++ b/_states/barbicanv1.py
@@ -96,21 +96,28 @@
     return _deleted(name, 'secret')
 
 
-def glance_image_signed(image_name, secret_name, pk_fname, out_fname,
-                        cloud_name, file_name=None, force_resign=False):
+def glance_image_signed(name, secret_name, pk_fname, out_fname,
+                        cloud_name, file_name=None, force_resign=False,
+                        image_name=None):
     """
 
-    :param image_name: The name of the image to sign
+    :param name: The name of the image to sign
     :param secret_name: Secret's name with certificate
     :param pk_fname: private_key file name
     :param out_fname: output filename for signature
     :param cloud_name: name of the cloud in cloud_yaml
     :param file_name: name of the file where downloaded image is.
     :param force_resign: if the image is already signed, resign it.
+    :param image_name: The name of the image to sign DEPRECATED, use name instead.
     """
+
+    # TODO(vsaeinko): remove once deprecation period passed in Q2.2019.
+    if image_name is not None:
+      name = image_name
+
     if not GLANCE_LOADED or not CMD_LOADED:
         return {
-            'name': image_name,
+            'name': name,
             'changes': {},
             'comment': 'Cant sign an image, glancev2 and/or cmd module '
                        'are/is absent',
@@ -118,11 +125,11 @@
         }
     try:
         image = _glancev2_call(
-            'image_get_details', name=image_name, cloud_name=cloud_name
+            'image_get_details', name=name, cloud_name=cloud_name
         )
     except Exception as e:
         log.error('Barbicanv1 sign_image find image failed with {}'.format(e))
-        return _create_failed(image_name, 'image')
+        return _create_failed(name, 'image')
 
     sign_properties = (
         'img_signature', 'img_signature_certificate_uuid',
@@ -130,7 +137,7 @@
     )
 
     if not force_resign and all(key in image for key in sign_properties):
-        return _no_changes(image_name, 'image_signature')
+        return _no_changes(name, 'image_signature')
 
     file_name = file_name or image['id']
     dir_path = tempfile.mkdtemp()
@@ -138,7 +145,7 @@
         file_path = os.path.join(dir_path, file_name)
 
         _glancev2_call(
-            'image_download', name=image_name,
+            'image_download', name=name,
             file_name=file_path,
             cloud_name=cloud_name
         )
@@ -147,7 +154,7 @@
             "Barbicanv1 sign image can't download image."
             " failed with {}".format(e)
         )
-        return _create_failed(image_name, 'downloading_image')
+        return _create_failed(name, 'downloading_image')
 
     try:
         retcode = _cmd_call(
@@ -165,7 +172,7 @@
         log.error(
             'Barbicanv1 sign image failed because of cmd with {}'.format(e)
         )
-        return _create_failed(image_name, 'cmd_module')
+        return _create_failed(name, 'cmd_module')
     shutil.rmtree(dir_path)
 
     secret_ref = _barbicanv1_call(
@@ -202,15 +209,15 @@
     ]
     try:
         resp = _glancev2_call(
-            'image_update', image_name, to_update, cloud_name=cloud_name,
+            'image_update', name, to_update, cloud_name=cloud_name,
             headers={
                 "Content-Type": "application/openstack-images-v2.1-json-patch"
             }
         )
     except Exception as e:
         log.error('Barbicanv1 sign image failed with {}'.format(e))
-        return _create_failed(image_name, 'sign_image')
-    return _created(image_name, 'sign_image', resp)
+        return _create_failed(name, 'sign_image')
+    return _created(name, 'sign_image', resp)
 
 
 def secret_acl_present(name, cloud_name, **kwargs):
diff --git a/barbican/client/image_sign.sls b/barbican/client/image_sign.sls
index 894989f..c9ce5c4 100644
--- a/barbican/client/image_sign.sls
+++ b/barbican/client/image_sign.sls
@@ -9,10 +9,10 @@
 barbican_sign_image_{{ image_params.name }}:
   barbicanv1.glance_image_signed:
     - cloud_name: {{ image_params.cloud_name }}
-    - image_name: {{ image_params.name }}
+    - name: {{ image_params.name }}
     - pk_fname: {{ image_params.cert_key }}
     - secret_name: {{ image_params.secret_name }}
     - out_fname: /tmp/signature_{{ image_params.name }}
 
 {%- endfor %}
-{%- endif %}
\ No newline at end of file
+{%- endif %}
