Permalink
Browse files

registry: refactor AddMetricByString

  • Loading branch information...
1 parent 5f6dc1e commit f7de99f874fa8df146d06e834519a9d0207cb2de @suyash suyash committed Aug 3, 2016
Showing with 28 additions and 20 deletions.
  1. +28 −20 registry.go
View
@@ -258,37 +258,31 @@ func parseString(s string) (metric string, indom string, instances []string, err
return
}
-// AddMetricByString dynamically creates a PCPMetric
-func (r *PCPRegistry) AddMetricByString(str string, val interface{}, s MetricSemantics, t MetricType, u MetricUnit) (Metric, error) {
- metric, indom, instances, err := parseString(str)
+func (r *PCPRegistry) addSingletonMetricByString(name string, val interface{}, t MetricType, s MetricSemantics, u MetricUnit) (Metric, error) {
+ m, err := NewPCPSingletonMetric(val, name, t, s, u)
if err != nil {
return nil, err
}
- var m Metric
-
- if instances == nil {
- // singleton metric
- m, err = NewPCPSingletonMetric(val, metric, t, s, u)
- if err != nil {
- return nil, err
- }
-
- err = r.AddMetric(m)
- if err != nil {
- return nil, err
- }
-
- return m, nil
+ err = r.AddMetric(m)
+ if err != nil {
+ return nil, err
}
+ return m, nil
+}
+
+func (r *PCPRegistry) addInstanceMetricByString(name string, val interface{}, indom string, instances []string, t MetricType, s MetricSemantics, u MetricUnit) (Metric, error) {
// instance metric
mp, ok := val.(Instances)
if !ok {
return nil, errors.New("to define an instance metric, a Instances type is required")
}
- var id InstanceDomain
+ var (
+ id InstanceDomain
+ err error
+ )
if !r.HasInstanceDomain(indom) {
id, err = r.AddInstanceDomainByName(indom, instances)
@@ -301,7 +295,7 @@ func (r *PCPRegistry) AddMetricByString(str string, val interface{}, s MetricSem
return nil, fmt.Errorf("a different instance domain under the name %v already exists in the registry", indom)
}
- m, err = NewPCPInstanceMetric(mp, metric, id.(*PCPInstanceDomain), t, s, u)
+ m, err := NewPCPInstanceMetric(mp, name, id.(*PCPInstanceDomain), t, s, u)
if err != nil {
return nil, err
}
@@ -313,3 +307,17 @@ func (r *PCPRegistry) AddMetricByString(str string, val interface{}, s MetricSem
return m, nil
}
+
+// AddMetricByString dynamically creates a PCPMetric
+func (r *PCPRegistry) AddMetricByString(str string, val interface{}, s MetricSemantics, t MetricType, u MetricUnit) (Metric, error) {
+ metric, indom, instances, err := parseString(str)
+ if err != nil {
+ return nil, err
+ }
+
+ if instances == nil {
+ return r.addSingletonMetricByString(metric, val, t, s, u)
+ }
+
+ return r.addInstanceMetricByString(metric, val, indom, instances, t, s, u)
+}

0 comments on commit f7de99f

Please sign in to comment.