diff --git a/loki/schemas/queries/loki-log-query/migrate/migrate.cue b/loki/schemas/queries/loki-log-query/migrate/migrate.cue new file mode 100644 index 00000000..be5bb424 --- /dev/null +++ b/loki/schemas/queries/loki-log-query/migrate/migrate.cue @@ -0,0 +1,34 @@ +// Copyright The Perses Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package migrate + +#target: { + datasource: { + type: "loki" + ... + } + expr: string + ... +} + +kind: "LokiLogQuery" +spec: { + if #target.datasource.uid != _|_ { + datasource: { + kind: "LokiDatasource" + name: #target.datasource.uid + } + } + query: #target.expr +} diff --git a/loki/schemas/queries/loki-log-query/migrate/tests/basic/expected.json b/loki/schemas/queries/loki-log-query/migrate/tests/basic/expected.json new file mode 100644 index 00000000..190ba022 --- /dev/null +++ b/loki/schemas/queries/loki-log-query/migrate/tests/basic/expected.json @@ -0,0 +1,10 @@ +{ + "kind": "LokiLogQuery", + "spec": { + "datasource": { + "kind": "LokiDatasource", + "name": "loki" + }, + "query": "{container=\"nginx\"}" + } +} diff --git a/loki/schemas/queries/loki-log-query/migrate/tests/basic/input.json b/loki/schemas/queries/loki-log-query/migrate/tests/basic/input.json new file mode 100644 index 00000000..31f0afea --- /dev/null +++ b/loki/schemas/queries/loki-log-query/migrate/tests/basic/input.json @@ -0,0 +1,8 @@ +{ + "datasource": { + "type": "loki", + "uid": "loki" + }, + "expr": "{container=\"nginx\"}", + "refId": "A" +} diff --git a/loki/schemas/queries/loki-log-query/migrate/tests/no-uid/expected.json b/loki/schemas/queries/loki-log-query/migrate/tests/no-uid/expected.json new file mode 100644 index 00000000..346c369e --- /dev/null +++ b/loki/schemas/queries/loki-log-query/migrate/tests/no-uid/expected.json @@ -0,0 +1,6 @@ +{ + "kind": "LokiLogQuery", + "spec": { + "query": "{job=\"nginx\"} |= \"error\"" + } +} diff --git a/loki/schemas/queries/loki-log-query/migrate/tests/no-uid/input.json b/loki/schemas/queries/loki-log-query/migrate/tests/no-uid/input.json new file mode 100644 index 00000000..859782b6 --- /dev/null +++ b/loki/schemas/queries/loki-log-query/migrate/tests/no-uid/input.json @@ -0,0 +1,7 @@ +{ + "datasource": { + "type": "loki" + }, + "expr": "{job=\"nginx\"} |= \"error\"", + "refId": "A" +} diff --git a/loki/schemas/queries/loki-log-query/migrate/tests/with-pipe-filter/expected.json b/loki/schemas/queries/loki-log-query/migrate/tests/with-pipe-filter/expected.json new file mode 100644 index 00000000..7541ac54 --- /dev/null +++ b/loki/schemas/queries/loki-log-query/migrate/tests/with-pipe-filter/expected.json @@ -0,0 +1,10 @@ +{ + "kind": "LokiLogQuery", + "spec": { + "datasource": { + "kind": "LokiDatasource", + "name": "loki" + }, + "query": "{pod_name=~\"$pod\"} |~ \"$search\"" + } +} diff --git a/loki/schemas/queries/loki-log-query/migrate/tests/with-pipe-filter/input.json b/loki/schemas/queries/loki-log-query/migrate/tests/with-pipe-filter/input.json new file mode 100644 index 00000000..3942ef62 --- /dev/null +++ b/loki/schemas/queries/loki-log-query/migrate/tests/with-pipe-filter/input.json @@ -0,0 +1,8 @@ +{ + "datasource": { + "type": "loki", + "uid": "loki" + }, + "expr": "{pod_name=~\"$pod\"} |~ \"$search\"", + "refId": "A" +}