Skip to content

Commit

Permalink
feat(stackdriver): Add support for composing ec2 queries. (#154)
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt Duftler committed Dec 14, 2017
1 parent 3f4fde2 commit 016813b
Showing 1 changed file with 14 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -99,21 +99,30 @@ public List<MetricSet> queryMetrics(String metricsAccountName,
StackdriverCanaryMetricSetQueryConfig stackdriverMetricSetQuery = (StackdriverCanaryMetricSetQueryConfig)canaryMetricConfig.getQuery();
String projectId = stackdriverCanaryScope.getProject();
String region = stackdriverCanaryScope.getRegion();
String resourceType = stackdriverCanaryScope.getResourceType();

if (StringUtils.isEmpty(projectId)) {
projectId = stackdriverCredentials.getProject();
}

String customFilter = expandCustomFilter(canaryConfig, stackdriverMetricSetQuery, stackdriverCanaryScope);
// TODO(duftler): Make this filter general-purpose so it is full-featured for more than just GCE.
String filter = "metric.type=\"" + stackdriverMetricSetQuery.getMetricType() + "\"" +
" AND resource.labels.project_id=" + projectId +
" AND resource.type=" + stackdriverCanaryScope.getResourceType() +
" AND resource.type=" + resourceType +
" AND ";

// TODO(duftler): Replace direct string-manipulating with helper functions.
// TODO-maybe(duftler): Replace this logic with a library of templates, one for each resource type.
if (StringUtils.isEmpty(customFilter)) {
filter += "resource.metadata.tag.spinnaker-region=" + region +
" AND resource.metadata.tag.spinnaker-server-group=" + stackdriverCanaryScope.getScope();
if ("gce_instance".equals(resourceType)) {
filter += "resource.labels.project_id=" + projectId +
" AND metadata.user_labels.\"spinnaker-region\"=" + region +
" AND metadata.user_labels.\"spinnaker-server-group\"=" + stackdriverCanaryScope.getScope();
} else if ("aws_ec2_instance".equals(resourceType)) {
filter += "resource.labels.region=\"aws:" + region + "\"" +
" AND metadata.user_labels.\"aws:autoscaling:groupname\"=" + stackdriverCanaryScope.getScope();
} else {
throw new IllegalArgumentException("Resource type '" + resourceType + "' not yet supported.");
}
} else {
filter += customFilter;
}
Expand Down

0 comments on commit 016813b

Please sign in to comment.