func CreateGCMSink(uri *url.URL) (core.DataSink, error) { if len(uri.Scheme) > 0 { return nil, fmt.Errorf("scheme should not be set for GCM sink") } if len(uri.Host) > 0 { return nil, fmt.Errorf("host should not be set for GCM sink") } opts, err := url.ParseQuery(uri.RawQuery) metrics := "all" if len(opts["metrics"]) > 0 { metrics = opts["metrics"][0] } var metricFilter MetricFilter = metricsAll switch metrics { case "all": metricFilter = metricsAll case "autoscaling": metricFilter = metricsOnlyAutoscaling default: return nil, fmt.Errorf("invalid metrics parameter: %s", metrics) } if err := gce_util.EnsureOnGCE(); err != nil { return nil, err } // Detect project ID projectId, err := gce.ProjectID() if err != nil { return nil, err } // Create Google Cloud Monitoring service. client := oauth2.NewClient(oauth2.NoContext, google.ComputeTokenSource("")) gcmService, err := gcm.New(client) if err != nil { return nil, err } sink := &gcmSink{ registered: false, project: projectId, gcmService: gcmService, metricFilter: metricFilter, } glog.Infof("created GCM sink") if err := sink.registerAllMetrics(); err != nil { glog.Warningf("Error during metrics registration: %v", err) } return sink, nil }
func CreateGCLSink(uri *url.URL) (core.EventSink, error) { if err := gce_util.EnsureOnGCE(); err != nil { return nil, err } // Detect project ID projectId, err := gce.ProjectID() if err != nil { return nil, err } // Create Google Cloud Logging service. client := oauth2.NewClient(oauth2.NoContext, google.ComputeTokenSource("")) gclService, err := gcl.New(client) if err != nil { return nil, err } sink := &gclSink{project: projectId, gclService: gclService} glog.Info("created GCL sink") return sink, nil }