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)
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

View File

@ -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">

View File

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

View File

@ -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();
}

View File

@ -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>

View File

@ -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;
@ -173,6 +174,7 @@ export default class StackdriverDatasource extends DataSourceApi<StackdriverQuer
}
async annotationQuery(options: any) {
await this.ensureGCEDefaultProject();
const annotation = options.annotation;
const queries = [
{
@ -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);
}
@ -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) {