diff --git a/monascastatsd/client.py b/monascastatsd/client.py index ffdd07c..34391cb 100644 --- a/monascastatsd/client.py +++ b/monascastatsd/client.py @@ -40,6 +40,7 @@ """Monasca-Statsd is a Python client for Statsd that adds dimensions. """ +from monascastatsd import common from monascastatsd.connection import Connection from monascastatsd.counter import Counter from monascastatsd.gauge import Gauge @@ -106,24 +107,11 @@ class Client(object): name that was passed in on instantiation. """ - if self._name: - metric = self._name - if name: - metric = metric + "." + name - else: - metric = name - return metric + return common.update_name(self._name, name) def _update_dimensions(self, dimensions): """Update the dimensions list with the default dimensions that were passed in on instantiation. """ - if self._dimensions: - new_dimensions = self._dimensions.copy() - else: - new_dimensions = {} - if dimensions: - new_dimensions.update(dimensions) - - return new_dimensions + return common.update_dimensions(self._dimensions, dimensions) diff --git a/monascastatsd/common.py b/monascastatsd/common.py new file mode 100644 index 0000000..782cca1 --- /dev/null +++ b/monascastatsd/common.py @@ -0,0 +1,25 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +def update_dimensions(dimensions_base=None, dimensions=None): + new_dimensions = (dimensions_base or {}).copy() + new_dimensions.update(dimensions or {}) + + return new_dimensions + + +def update_name(name_base=None, postfix=None): + if name_base and postfix: + return "{}.{}".format(name_base, postfix) + else: + return name_base or postfix diff --git a/monascastatsd/metricbase.py b/monascastatsd/metricbase.py index a9cf62a..55d88e1 100644 --- a/monascastatsd/metricbase.py +++ b/monascastatsd/metricbase.py @@ -38,6 +38,8 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +from monascastatsd import common + class MetricBase(object): """Base class for all metric types. @@ -54,24 +56,11 @@ class MetricBase(object): dimensions that were passed in on instantiation. """ - if self._dimensions: - new_dimensions = self._dimensions.copy() - else: - new_dimensions = {} - if dimensions: - new_dimensions.update(dimensions) - - return new_dimensions + return common.update_dimensions(self._dimensions, dimensions) def update_name(self, name): """Update the metric name with the metric base name that was passed in on instantiation. """ - if self._name: - metric = self._name - if name: - metric = metric + "." + name - else: - metric = name - return metric + return common.update_name(self._name, name)