# Neutron metering plugin
# ---------------------------

# Save trace setting
METER_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 {
    _neutron_service_plugin_class_add $METERING_PLUGIN
}

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
}

function neutron_metering_stop {
    :
}

# Restore xtrace
$METER_XTRACE
