Skip to content

Commit

Permalink
Stackdriver: Migrate GCE default project (grafana#22593)
Browse files Browse the repository at this point in the history
* Ensure default project

* Remove debug logging

* Fix broken test

* Update snapshot
  • Loading branch information
daniellee authored Mar 5, 2020
1 parent e688f13 commit f95c8b7
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 5 deletions.
2 changes: 0 additions & 2 deletions pkg/tsdb/stackdriver/stackdriver.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,8 @@ func (e *StackdriverExecutor) getGCEDefaultProject(ctx context.Context, tsdbQuer

gceDefaultProject, err := e.getDefaultProject(ctx)
if err != nil {
slog.Debug("Stackdriver", "Auth", "Failed to use GCE auth: ", err)
return nil, fmt.Errorf("Failed to retrieve default project from GCE metadata server. error: %v", err)
}
slog.Debug("Stackdriver", "Auth", "Successfully use GCE auth: ", gceDefaultProject)

queryResult.Meta.Set("defaultProject", gceDefaultProject)
result.Results[refId] = queryResult
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@ export function Metrics(props: Props) {
return services.length > 0 ? _.uniqBy(services, s => s.value) : [];
};

console.log('rerender', { service, metricType });
return (
<>
<div className="gf-form-inline">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const props: Props = {
datasource: {
getProjects: () => Promise.resolve([]),
getDefaultProject: () => Promise.resolve('projectName'),
ensureGCEDefaultProject: () => {},
getMetricTypes: () => Promise.resolve([]),
getLabels: () => Promise.resolve([]),
variables: [],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ export class QueryEditor extends React.Component<Props, State> {

async componentDidMount() {
const { events, target, templateSrv, datasource } = this.props;
await datasource.ensureGCEDefaultProject();
if (!target.projectName) {
target.projectName = datasource.getDefaultProject();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Array [
onClick={[Function]}
>
<a
className="gf-form-label query-part"
className="gf-form-label query-part query-placeholder"
>
Select Project
</a>
Expand Down
12 changes: 11 additions & 1 deletion public/app/plugins/datasource/stackdriver/datasource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ export default class StackdriverDatasource extends DataSourceApi<StackdriverQuer
}

async getTimeSeries(options: DataQueryRequest<StackdriverQuery>) {
await this.ensureGCEDefaultProject();
const queries = options.targets
.filter((target: StackdriverQuery) => {
return !target.hide && target.metricType;
Expand Down Expand Up @@ -173,6 +174,7 @@ export default class StackdriverDatasource extends DataSourceApi<StackdriverQuer
}

async annotationQuery(options: any) {
await this.ensureGCEDefaultProject();
const annotation = options.annotation;
const queries = [
{
Expand Down Expand Up @@ -218,6 +220,7 @@ export default class StackdriverDatasource extends DataSourceApi<StackdriverQuer
}

async metricFindQuery(query: VariableQueryData) {
await this.ensureGCEDefaultProject();
const stackdriverMetricFindQuery = new StackdriverMetricFindQuery(this);
return stackdriverMetricFindQuery.execute(query);
}
Expand Down Expand Up @@ -320,12 +323,19 @@ export default class StackdriverDatasource extends DataSourceApi<StackdriverQuer
getDefaultProject(): string {
const { defaultProject, authenticationType, gceDefaultProject } = this.instanceSettings.jsonData;
if (authenticationType === 'gce') {
return gceDefaultProject || defaultProject || '';
return gceDefaultProject || '';
}

return defaultProject || '';
}

async ensureGCEDefaultProject() {
const { authenticationType, gceDefaultProject } = this.instanceSettings.jsonData;
if (authenticationType === 'gce' && !gceDefaultProject) {
this.instanceSettings.jsonData.gceDefaultProject = await this.getGCEDefaultProject();
}
}

async getMetricTypes(projectName: string): Promise<MetricDescriptor[]> {
try {
if (!projectName) {
Expand Down

0 comments on commit f95c8b7

Please sign in to comment.