Stackdriver: Migrate GCE default project (#22593)

* Ensure default project

* Remove debug logging

* Fix broken test

* Update snapshot
This commit is contained in:
Daniel Lee 2020-03-05 17:53:41 +01:00 committed by GitHub
parent e688f13535
commit f95c8b785c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 14 additions and 5 deletions

View File

@ -102,10 +102,8 @@ func (e *StackdriverExecutor) getGCEDefaultProject(ctx context.Context, tsdbQuer
gceDefaultProject, err := e.getDefaultProject(ctx) gceDefaultProject, err := e.getDefaultProject(ctx)
if err != nil { 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) 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) queryResult.Meta.Set("defaultProject", gceDefaultProject)
result.Results[refId] = queryResult result.Results[refId] = queryResult

View File

@ -111,7 +111,6 @@ export function Metrics(props: Props) {
return services.length > 0 ? _.uniqBy(services, s => s.value) : []; return services.length > 0 ? _.uniqBy(services, s => s.value) : [];
}; };
console.log('rerender', { service, metricType });
return ( return (
<> <>
<div className="gf-form-inline"> <div className="gf-form-inline">

View File

@ -11,6 +11,7 @@ const props: Props = {
datasource: { datasource: {
getProjects: () => Promise.resolve([]), getProjects: () => Promise.resolve([]),
getDefaultProject: () => Promise.resolve('projectName'), getDefaultProject: () => Promise.resolve('projectName'),
ensureGCEDefaultProject: () => {},
getMetricTypes: () => Promise.resolve([]), getMetricTypes: () => Promise.resolve([]),
getLabels: () => Promise.resolve([]), getLabels: () => Promise.resolve([]),
variables: [], variables: [],

View File

@ -56,6 +56,7 @@ export class QueryEditor extends React.Component<Props, State> {
async componentDidMount() { async componentDidMount() {
const { events, target, templateSrv, datasource } = this.props; const { events, target, templateSrv, datasource } = this.props;
await datasource.ensureGCEDefaultProject();
if (!target.projectName) { if (!target.projectName) {
target.projectName = datasource.getDefaultProject(); target.projectName = datasource.getDefaultProject();
} }

View File

@ -15,7 +15,7 @@ Array [
onClick={[Function]} onClick={[Function]}
> >
<a <a
className="gf-form-label query-part" className="gf-form-label query-part query-placeholder"
> >
Select Project Select Project
</a> </a>

View File

@ -41,6 +41,7 @@ export default class StackdriverDatasource extends DataSourceApi<StackdriverQuer
} }
async getTimeSeries(options: DataQueryRequest<StackdriverQuery>) { async getTimeSeries(options: DataQueryRequest<StackdriverQuery>) {
await this.ensureGCEDefaultProject();
const queries = options.targets const queries = options.targets
.filter((target: StackdriverQuery) => { .filter((target: StackdriverQuery) => {
return !target.hide && target.metricType; return !target.hide && target.metricType;
@ -173,6 +174,7 @@ export default class StackdriverDatasource extends DataSourceApi<StackdriverQuer
} }
async annotationQuery(options: any) { async annotationQuery(options: any) {
await this.ensureGCEDefaultProject();
const annotation = options.annotation; const annotation = options.annotation;
const queries = [ const queries = [
{ {
@ -218,6 +220,7 @@ export default class StackdriverDatasource extends DataSourceApi<StackdriverQuer
} }
async metricFindQuery(query: VariableQueryData) { async metricFindQuery(query: VariableQueryData) {
await this.ensureGCEDefaultProject();
const stackdriverMetricFindQuery = new StackdriverMetricFindQuery(this); const stackdriverMetricFindQuery = new StackdriverMetricFindQuery(this);
return stackdriverMetricFindQuery.execute(query); return stackdriverMetricFindQuery.execute(query);
} }
@ -320,12 +323,19 @@ export default class StackdriverDatasource extends DataSourceApi<StackdriverQuer
getDefaultProject(): string { getDefaultProject(): string {
const { defaultProject, authenticationType, gceDefaultProject } = this.instanceSettings.jsonData; const { defaultProject, authenticationType, gceDefaultProject } = this.instanceSettings.jsonData;
if (authenticationType === 'gce') { if (authenticationType === 'gce') {
return gceDefaultProject || defaultProject || ''; return gceDefaultProject || '';
} }
return defaultProject || ''; 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[]> { async getMetricTypes(projectName: string): Promise<MetricDescriptor[]> {
try { try {
if (!projectName) { if (!projectName) {