diff --git a/manifests/policy/base.pp b/manifests/policy/base.pp
index a0d81230..efdbeddc 100644
--- a/manifests/policy/base.pp
+++ b/manifests/policy/base.pp
@@ -8,7 +8,8 @@
 #    (required) Path to the policy.json file
 #
 #  [*key*]
-#    (required) The key to replace the value for
+#    (optional) The key to replace the value for
+#    Defaults to $name
 #
 #  [*value*]
 #    (optional) The value to set
@@ -38,7 +39,7 @@
 #
 define openstacklib::policy::base (
   Stdlib::Absolutepath $file_path,
-  String[1] $key,
+  String[1] $key                    = $name,
   String $value                     = '',
   $file_mode                        = '0640',
   $file_user                        = undef,
diff --git a/spec/defines/openstacklib_policy_base_spec.rb b/spec/defines/openstacklib_policy_base_spec.rb
index c15d07ae..40ccf126 100644
--- a/spec/defines/openstacklib_policy_base_spec.rb
+++ b/spec/defines/openstacklib_policy_base_spec.rb
@@ -2,15 +2,14 @@ require 'spec_helper'
 
 describe 'openstacklib::policy::base' do
   shared_examples 'openstacklib::policy::base' do
-    context 'with policy.json' do
-      let :title do
-        'nova-contest_is_admin'
-      end
+    let :title do
+      'context_is_admin or owner'
+    end
 
+    context 'with policy.json' do
       let :params do
         {
           :file_path   => '/etc/nova/policy.json',
-          :key         => 'context_is_admin or owner',
           :value       => 'foo:bar',
           :file_mode   => '0644',
           :file_user   => 'foo',
@@ -45,14 +44,9 @@ describe 'openstacklib::policy::base' do
     end
 
     context 'with policy.yaml' do
-      let :title do
-        'nova-contest_is_admin'
-      end
-
       let :params do
         {
           :file_path   => '/etc/nova/policy.yaml',
-          :key         => 'context_is_admin or owner',
           :value       => 'foo:bar',
           :file_mode   => '0644',
           :file_user   => 'foo',
@@ -105,14 +99,9 @@ describe 'openstacklib::policy::base' do
     end
 
     context 'with purge_config enabled' do
-      let :title do
-        'nova-contest_is_admin'
-      end
-
       let :params do
         {
           :file_path    => '/etc/nova/policy.yaml',
-          :key          => 'context_is_admin or owner',
           :value        => 'foo:bar',
           :file_mode    => '0644',
           :file_user    => 'foo',
@@ -132,14 +121,9 @@ describe 'openstacklib::policy::base' do
     end
 
     context 'with json file_path and yaml file format' do
-      let :title do
-        'nova-contest_is_admin'
-      end
-
       let :params do
         {
           :file_path   => '/etc/nova/policy.json',
-          :key         => 'context_is_admin or owner',
           :value       => 'foo:bar',
           :file_mode   => '0644',
           :file_user   => 'foo',
@@ -150,6 +134,26 @@ describe 'openstacklib::policy::base' do
 
       it { should raise_error(Puppet::Error) }
     end
+
+    context 'with key overridden' do
+      let :params do
+        {
+          :file_path   => '/etc/nova/policy.yaml',
+          :key         => 'context_is_admin',
+          :value       => 'foo:bar',
+          :file_mode   => '0644',
+          :file_user   => 'foo',
+          :file_group  => 'bar',
+          :file_format => 'yaml',
+        }
+      end
+
+      it { should contain_file_line('/etc/nova/policy.yaml-context_is_admin').with(
+        :path  => '/etc/nova/policy.yaml',
+        :line  => '\'context_is_admin\': \'foo:bar\'',
+        :match => '^[\'"]?context_is_admin(?!:)[\'"]?\s*:.+'
+      ) }
+    end
   end
 
   on_supported_os({