diff --git a/README.md b/README.md index 93d139621f..cb7752df0b 100644 --- a/README.md +++ b/README.md @@ -171,6 +171,7 @@ following settings in your `localrc` section: enable_service q-dhcp enable_service q-l3 enable_service q-meta + enable_service q-metering enable_service neutron # Optional, to enable tempest configuration as part of DevStack enable_service tempest diff --git a/lib/neutron b/lib/neutron index c4d9abcadc..70417be5d3 100644 --- a/lib/neutron +++ b/lib/neutron @@ -207,6 +207,12 @@ source $TOP_DIR/lib/neutron_plugins/$Q_PLUGIN # Hardcoding for 1 service plugin for now source $TOP_DIR/lib/neutron_plugins/services/loadbalancer +# Agent metering service plugin functions +# ------------------------------------------- + +# Hardcoding for 1 service plugin for now +source $TOP_DIR/lib/neutron_plugins/services/metering + # VPN service plugin functions # ------------------------------------------- # Hardcoding for 1 service plugin for now @@ -236,6 +242,9 @@ function configure_neutron() { if is_service_enabled q-lbaas; then _configure_neutron_lbaas fi + if is_service_enabled q-metering; then + _configure_neutron_metering + fi if is_service_enabled q-vpn; then _configure_neutron_vpn fi @@ -457,6 +466,10 @@ function start_neutron_agents() { if is_service_enabled q-lbaas; then screen_it q-lbaas "cd $NEUTRON_DIR && python $AGENT_LBAAS_BINARY --config-file $NEUTRON_CONF --config-file=$LBAAS_AGENT_CONF_FILENAME" fi + + if is_service_enabled q-metering; then + screen_it q-metering "cd $NEUTRON_DIR && python $AGENT_METERING_BINARY --config-file $NEUTRON_CONF --config-file $METERING_AGENT_CONF_FILENAME" + fi } # stop_neutron() - Stop running processes (non-screen) @@ -637,6 +650,11 @@ function _configure_neutron_lbaas() { neutron_agent_lbaas_configure_agent } +function _configure_neutron_metering() { + neutron_agent_metering_configure_common + neutron_agent_metering_configure_agent +} + function _configure_neutron_fwaas() { neutron_fwaas_configure_common neutron_fwaas_configure_driver diff --git a/lib/neutron_plugins/services/metering b/lib/neutron_plugins/services/metering new file mode 100644 index 0000000000..629f3b788a --- /dev/null +++ b/lib/neutron_plugins/services/metering @@ -0,0 +1,30 @@ +# Neutron metering plugin +# --------------------------- + +# Save trace setting +MY_XTRACE=$(set +o | grep xtrace) +set +o xtrace + + +AGENT_METERING_BINARY="$NEUTRON_BIN_DIR/neutron-metering-agent" +METERING_PLUGIN="neutron.services.metering.metering_plugin.MeteringPlugin" + +function neutron_agent_metering_configure_common() { + if [[ $Q_SERVICE_PLUGIN_CLASSES == '' ]]; then + Q_SERVICE_PLUGIN_CLASSES=$METERING_PLUGIN + else + Q_SERVICE_PLUGIN_CLASSES="$Q_SERVICE_PLUGIN_CLASSES,$METERING_PLUGIN" + fi +} + +function neutron_agent_metering_configure_agent() { + METERING_AGENT_CONF_PATH=/etc/neutron/services/metering + mkdir -p $METERING_AGENT_CONF_PATH + + METERING_AGENT_CONF_FILENAME="$METERING_AGENT_CONF_PATH/metering_agent.ini" + + cp $NEUTRON_DIR/etc/metering_agent.ini $METERING_AGENT_CONF_FILENAME +} + +# Restore xtrace +$MY_XTRACE