diff --git a/functions-common b/functions-common index 3dae8147b5..875c2e697d 100644 --- a/functions-common +++ b/functions-common @@ -588,6 +588,28 @@ function get_field { done } +# install default policy +# copy over a default policy.json and policy.d for projects +function install_default_policy { + local project=$1 + local project_uc=$(echo $1|tr a-z A-Z) + local conf_dir="${project_uc}_CONF_DIR" + # eval conf dir to get the variable + conf_dir="${!conf_dir}" + local project_dir="${project_uc}_DIR" + # eval project dir to get the variable + project_dir="${!project_dir}" + local sample_conf_dir="${project_dir}/etc/${project}" + local sample_policy_dir="${project_dir}/etc/${project}/policy.d" + + # first copy any policy.json + cp -p $sample_conf_dir/policy.json $conf_dir + # then optionally copy over policy.d + if [[ -d $sample_policy_dir ]]; then + cp -r $sample_policy_dir $conf_dir/policy.d + fi +} + # Add a policy to a policy.json file # Do nothing if the policy already exists # ``policy_add policy_file policy_name policy_permissions`` diff --git a/lib/nova b/lib/nova index 199daeea3d..1df06c345a 100644 --- a/lib/nova +++ b/lib/nova @@ -261,7 +261,7 @@ function configure_nova { fi sudo chown $STACK_USER $NOVA_CONF_DIR - cp -p $NOVA_DIR/etc/nova/policy.json $NOVA_CONF_DIR + install_default_policy nova configure_nova_rootwrap