From d6032e8c7dafcdd5abedc592081d36b951f87230 Mon Sep 17 00:00:00 2001 From: Brad Williams Date: Mon, 8 Jun 2026 14:27:50 -0400 Subject: [PATCH 01/18] Release Qualifying Jobs Support rh-pre-commit.version: 2.4.0 rh-pre-commit.check-secrets: ENABLED --- cmd/release-controller-api/controller.go | 7 + cmd/release-controller-api/http.go | 443 +- cmd/release-controller-api/http_helper.go | 60 +- cmd/release-controller-api/main.go | 23 + .../static/css/custom.css | 9 + .../static/releasePageHtml.tmpl | 4 +- .../static/releaseStreamPageHtml.tmpl | 6 +- cmd/release-controller/config_validate.go | 33 +- .../config_validate_test.go | 168 + .../sync_release_payload.go | 3 + .../sync_release_payload_test.go | 27 +- .../results/bquxjob_65df743f_19de556b6a3.json | 1429 + go.mod | 14 +- go.sum | 20 + pkg/bigquery/bigquery.go | 90 + pkg/bigquery/bigquery_test.go | 292 + pkg/bigquery/cached_client.go | 88 + pkg/bigquery/cached_client_test.go | 282 + pkg/bigquery/fake.go | 189 + pkg/bigquery/prowjobs.go | 97 + pkg/bigquery/prowjobs_test.go | 359 + pkg/cmd/release-payload-controller/cmd.go | 96 +- .../jira_escalations_controller.go | 954 + .../jira_escalations_controller_test.go | 3081 ++ .../job_state_controller.go | 28 +- .../payload_verification_controller_test.go | 273 + .../qualifiers_summary_controller.go | 114 + .../qualifiers_summary_controller_test.go | 1113 + ...release_creation_status_controller_test.go | 3 +- pkg/jira/jira.go | 2 +- pkg/release-controller/types.go | 6 - pkg/releasepayload/qualifiers/helpers.go | 321 + pkg/releasepayload/qualifiers/helpers_test.go | 1797 + pkg/releasepayload/v1alpha1helpers/helpers.go | 12 + .../v1alpha1helpers/helpers_test.go | 123 + pkg/releasequalifiers/config_loader.go | 229 + pkg/releasequalifiers/config_loader_test.go | 809 + pkg/releasequalifiers/merge.go | 134 + pkg/releasequalifiers/merge_test.go | 1267 + .../notifications/jira/escalation_test.go | 499 + pkg/releasequalifiers/prettyprint.go | 51 + pkg/releasequalifiers/prettyprint_test.go | 682 + pkg/releasequalifiers/types.go | 5 + pkg/releasequalifiers/validation.go | 17 + pkg/releasequalifiers/validation_test.go | 98 + .../cloud.google.com/go/bigquery/CHANGES.md | 1045 + vendor/cloud.google.com/go/bigquery/LICENSE | 202 + vendor/cloud.google.com/go/bigquery/README.md | 47 + vendor/cloud.google.com/go/bigquery/arrow.go | 297 + .../cloud.google.com/go/bigquery/bigquery.go | 314 + .../go/bigquery/bigquery.replay | 28376 ++++++++++++++++ vendor/cloud.google.com/go/bigquery/copy.go | 143 + .../cloud.google.com/go/bigquery/dataset.go | 1129 + vendor/cloud.google.com/go/bigquery/doc.go | 357 + vendor/cloud.google.com/go/bigquery/error.go | 106 + .../cloud.google.com/go/bigquery/external.go | 576 + .../cloud.google.com/go/bigquery/extract.go | 158 + vendor/cloud.google.com/go/bigquery/file.go | 167 + vendor/cloud.google.com/go/bigquery/gcs.go | 81 + vendor/cloud.google.com/go/bigquery/iam.go | 142 + .../cloud.google.com/go/bigquery/inserter.go | 249 + .../go/bigquery/internal/query/order.go | 67 + .../go/bigquery/internal/version.go | 19 + .../go/bigquery/intervalvalue.go | 321 + .../cloud.google.com/go/bigquery/iterator.go | 422 + vendor/cloud.google.com/go/bigquery/job.go | 1160 + vendor/cloud.google.com/go/bigquery/load.go | 268 + vendor/cloud.google.com/go/bigquery/model.go | 303 + vendor/cloud.google.com/go/bigquery/nulls.go | 410 + vendor/cloud.google.com/go/bigquery/params.go | 751 + vendor/cloud.google.com/go/bigquery/query.go | 526 + vendor/cloud.google.com/go/bigquery/random.go | 56 + .../go/bigquery/rangevalue.go | 28 + .../cloud.google.com/go/bigquery/routine.go | 534 + vendor/cloud.google.com/go/bigquery/schema.go | 766 + .../go/bigquery/standardsql.go | 255 + .../go/bigquery/storage/apiv1/auxiliary.go | 17 + .../bigquery/storage/apiv1/auxiliary_go123.go | 19 + .../storage/apiv1/big_query_read_client.go | 332 + .../storage/apiv1/big_query_write_client.go | 467 + .../go/bigquery/storage/apiv1/doc.go | 81 + .../go/bigquery/storage/apiv1/helpers.go | 63 + .../go/bigquery/storage/apiv1/info.go | 33 + .../storage/apiv1/storagepb/annotations.pb.go | 119 + .../storage/apiv1/storagepb/arrow.pb.go | 352 + .../storage/apiv1/storagepb/avro.pb.go | 288 + .../storage/apiv1/storagepb/protobuf.pb.go | 227 + .../storage/apiv1/storagepb/storage.pb.go | 3282 ++ .../storage/apiv1/storagepb/stream.pb.go | 1231 + .../storage/apiv1/storagepb/table.pb.go | 628 + .../go/bigquery/storage/apiv1/version.go | 23 + .../go/bigquery/storage_client.go | 176 + .../go/bigquery/storage_iterator.go | 377 + vendor/cloud.google.com/go/bigquery/table.go | 1282 + vendor/cloud.google.com/go/bigquery/value.go | 1082 + vendor/cloud.google.com/go/civil/civil.go | 488 + .../go/internal/detect/detect.go | 69 + .../go/internal/fields/fields.go | 482 + .../go/internal/fields/fold.go | 154 + .../cloud.google.com/go/internal/uid/uid.go | 149 + .../apache/arrow/go/v15/LICENSE.txt | 1791 + .../apache/arrow/go/v15/arrow/.editorconfig | 21 + .../apache/arrow/go/v15/arrow/.gitignore | 35 + .../apache/arrow/go/v15/arrow/Gopkg.lock | 44 + .../apache/arrow/go/v15/arrow/Gopkg.toml | 23 + .../apache/arrow/go/v15/arrow/Makefile | 54 + .../apache/arrow/go/v15/arrow/array.go | 129 + .../apache/arrow/go/v15/arrow/array/array.go | 186 + .../apache/arrow/go/v15/arrow/array/binary.go | 453 + .../arrow/go/v15/arrow/array/binarybuilder.go | 704 + .../arrow/go/v15/arrow/array/boolean.go | 126 + .../go/v15/arrow/array/booleanbuilder.go | 263 + .../arrow/go/v15/arrow/array/bufferbuilder.go | 261 + .../go/v15/arrow/array/bufferbuilder_byte.go | 30 + .../arrow/array/bufferbuilder_numeric.gen.go | 124 + .../array/bufferbuilder_numeric.gen.go.tmpl | 61 + .../arrow/go/v15/arrow/array/builder.go | 373 + .../arrow/go/v15/arrow/array/compare.go | 854 + .../apache/arrow/go/v15/arrow/array/concat.go | 938 + .../apache/arrow/go/v15/arrow/array/data.go | 275 + .../arrow/go/v15/arrow/array/decimal128.go | 365 + .../arrow/go/v15/arrow/array/decimal256.go | 364 + .../arrow/go/v15/arrow/array/dictionary.go | 1953 ++ .../apache/arrow/go/v15/arrow/array/diff.go | 315 + .../apache/arrow/go/v15/arrow/array/doc.go | 20 + .../arrow/go/v15/arrow/array/encoded.go | 520 + .../arrow/go/v15/arrow/array/extension.go | 244 + .../go/v15/arrow/array/extension_builder.go | 23 + .../go/v15/arrow/array/fixed_size_list.go | 372 + .../go/v15/arrow/array/fixedsize_binary.go | 123 + .../arrow/array/fixedsize_binarybuilder.go | 261 + .../arrow/go/v15/arrow/array/float16.go | 113 + .../go/v15/arrow/array/float16_builder.go | 263 + .../arrow/go/v15/arrow/array/interval.go | 953 + .../arrow/go/v15/arrow/array/json_reader.go | 205 + .../apache/arrow/go/v15/arrow/array/list.go | 1574 + .../apache/arrow/go/v15/arrow/array/map.go | 361 + .../apache/arrow/go/v15/arrow/array/null.go | 218 + .../arrow/go/v15/arrow/array/numeric.gen.go | 1430 + .../go/v15/arrow/array/numeric.gen.go.tmpl | 158 + .../go/v15/arrow/array/numericbuilder.gen.go | 3664 ++ .../arrow/array/numericbuilder.gen.go.tmpl | 447 + .../array/numericbuilder.gen_test.go.tmpl | 276 + .../apache/arrow/go/v15/arrow/array/record.go | 411 + .../apache/arrow/go/v15/arrow/array/string.go | 718 + .../apache/arrow/go/v15/arrow/array/struct.go | 491 + .../apache/arrow/go/v15/arrow/array/table.go | 421 + .../arrow/go/v15/arrow/array/timestamp.go | 381 + .../apache/arrow/go/v15/arrow/array/union.go | 1370 + .../apache/arrow/go/v15/arrow/array/util.go | 523 + .../apache/arrow/go/v15/arrow/arrio/arrio.go | 92 + .../arrow/go/v15/arrow/bitutil/Makefile | 62 + .../arrow/go/v15/arrow/bitutil/bitmap_ops.go | 109 + .../go/v15/arrow/bitutil/bitmap_ops_amd64.go | 41 + .../go/v15/arrow/bitutil/bitmap_ops_arm64.go | 27 + .../arrow/bitutil/bitmap_ops_avx2_amd64.go | 52 + .../v15/arrow/bitutil/bitmap_ops_avx2_amd64.s | 373 + .../go/v15/arrow/bitutil/bitmap_ops_noasm.go | 27 + .../v15/arrow/bitutil/bitmap_ops_ppc64le.go | 27 + .../go/v15/arrow/bitutil/bitmap_ops_s390x.go | 27 + .../arrow/bitutil/bitmap_ops_sse4_amd64.go | 52 + .../v15/arrow/bitutil/bitmap_ops_sse4_amd64.s | 501 + .../arrow/go/v15/arrow/bitutil/bitmaps.go | 747 + .../arrow/go/v15/arrow/bitutil/bitutil.go | 217 + .../go/v15/arrow/bitutil/endian_default.go | 34 + .../go/v15/arrow/bitutil/endian_s390x.go | 32 + .../apache/arrow/go/v15/arrow/compare.go | 153 + .../apache/arrow/go/v15/arrow/datatype.go | 411 + .../arrow/go/v15/arrow/datatype_binary.go | 139 + .../arrow/go/v15/arrow/datatype_encoded.go | 69 + .../arrow/go/v15/arrow/datatype_extension.go | 180 + .../arrow/go/v15/arrow/datatype_fixedwidth.go | 823 + .../arrow/go/v15/arrow/datatype_nested.go | 993 + .../arrow/go/v15/arrow/datatype_null.go | 33 + .../go/v15/arrow/datatype_numeric.gen.go | 206 + .../go/v15/arrow/datatype_numeric.gen.go.tmpl | 45 + .../arrow/datatype_numeric.gen.go.tmpldata | 66 + .../arrow/go/v15/arrow/datatype_viewheader.go | 141 + .../v15/arrow/datatype_viewheader_inline.go | 31 + .../datatype_viewheader_inline_go1.19.go | 35 + .../datatype_viewheader_inline_tinygo.go | 35 + .../go/v15/arrow/decimal128/decimal128.go | 627 + .../go/v15/arrow/decimal256/decimal256.go | 708 + .../apache/arrow/go/v15/arrow/doc.go | 48 + .../arrow/go/v15/arrow/encoded/ree_utils.go | 219 + .../apache/arrow/go/v15/arrow/endian/big.go | 30 + .../arrow/go/v15/arrow/endian/endian.go | 41 + .../arrow/go/v15/arrow/endian/little.go | 30 + .../apache/arrow/go/v15/arrow/errors.go | 28 + .../arrow/go/v15/arrow/float16/float16.go | 201 + .../go/v15/arrow/internal/debug/assert_off.go | 24 + .../go/v15/arrow/internal/debug/assert_on.go | 28 + .../arrow/go/v15/arrow/internal/debug/doc.go | 32 + .../go/v15/arrow/internal/debug/log_off.go | 21 + .../go/v15/arrow/internal/debug/log_on.go | 32 + .../arrow/go/v15/arrow/internal/debug/util.go | 37 + .../go/v15/arrow/internal/dictutils/dict.go | 411 + .../go/v15/arrow/internal/flatbuf/Binary.go | 51 + .../v15/arrow/internal/flatbuf/BinaryView.go | 57 + .../go/v15/arrow/internal/flatbuf/Block.go | 74 + .../arrow/internal/flatbuf/BodyCompression.go | 89 + .../internal/flatbuf/BodyCompressionMethod.go | 52 + .../go/v15/arrow/internal/flatbuf/Bool.go | 50 + .../go/v15/arrow/internal/flatbuf/Buffer.go | 73 + .../arrow/internal/flatbuf/CompressionType.go | 45 + .../go/v15/arrow/internal/flatbuf/Date.go | 71 + .../go/v15/arrow/internal/flatbuf/DateUnit.go | 45 + .../go/v15/arrow/internal/flatbuf/Decimal.go | 107 + .../arrow/internal/flatbuf/DictionaryBatch.go | 108 + .../internal/flatbuf/DictionaryEncoding.go | 135 + .../arrow/internal/flatbuf/DictionaryKind.go | 47 + .../go/v15/arrow/internal/flatbuf/Duration.go | 65 + .../v15/arrow/internal/flatbuf/Endianness.go | 47 + .../go/v15/arrow/internal/flatbuf/Feature.go | 71 + .../go/v15/arrow/internal/flatbuf/Field.go | 188 + .../v15/arrow/internal/flatbuf/FieldNode.go | 76 + .../arrow/internal/flatbuf/FixedSizeBinary.go | 67 + .../arrow/internal/flatbuf/FixedSizeList.go | 67 + .../arrow/internal/flatbuf/FloatingPoint.go | 65 + .../go/v15/arrow/internal/flatbuf/Footer.go | 162 + .../go/v15/arrow/internal/flatbuf/Int.go | 80 + .../go/v15/arrow/internal/flatbuf/Interval.go | 65 + .../arrow/internal/flatbuf/IntervalUnit.go | 48 + .../go/v15/arrow/internal/flatbuf/KeyValue.go | 75 + .../v15/arrow/internal/flatbuf/LargeBinary.go | 52 + .../v15/arrow/internal/flatbuf/LargeList.go | 52 + .../arrow/internal/flatbuf/LargeListView.go | 52 + .../v15/arrow/internal/flatbuf/LargeUtf8.go | 52 + .../go/v15/arrow/internal/flatbuf/List.go | 50 + .../go/v15/arrow/internal/flatbuf/ListView.go | 53 + .../go/v15/arrow/internal/flatbuf/Map.go | 92 + .../go/v15/arrow/internal/flatbuf/Message.go | 133 + .../arrow/internal/flatbuf/MessageHeader.go | 65 + .../arrow/internal/flatbuf/MetadataVersion.go | 65 + .../go/v15/arrow/internal/flatbuf/Null.go | 51 + .../v15/arrow/internal/flatbuf/Precision.go | 48 + .../v15/arrow/internal/flatbuf/RecordBatch.go | 214 + .../arrow/internal/flatbuf/RunEndEncoded.go | 55 + .../internal/flatbuf/RunLengthEncoded.go | 50 + .../go/v15/arrow/internal/flatbuf/Schema.go | 159 + .../flatbuf/SparseMatrixCompressedAxis.go | 45 + .../internal/flatbuf/SparseMatrixIndexCSR.go | 181 + .../internal/flatbuf/SparseMatrixIndexCSX.go | 200 + .../arrow/internal/flatbuf/SparseTensor.go | 175 + .../internal/flatbuf/SparseTensorIndex.go | 51 + .../internal/flatbuf/SparseTensorIndexCOO.go | 179 + .../internal/flatbuf/SparseTensorIndexCSF.go | 291 + .../go/v15/arrow/internal/flatbuf/Struct_.go | 53 + .../go/v15/arrow/internal/flatbuf/Tensor.go | 163 + .../v15/arrow/internal/flatbuf/TensorDim.go | 83 + .../go/v15/arrow/internal/flatbuf/Time.go | 94 + .../go/v15/arrow/internal/flatbuf/TimeUnit.go | 51 + .../v15/arrow/internal/flatbuf/Timestamp.go | 201 + .../go/v15/arrow/internal/flatbuf/Type.go | 123 + .../go/v15/arrow/internal/flatbuf/Union.go | 101 + .../v15/arrow/internal/flatbuf/UnionMode.go | 45 + .../go/v15/arrow/internal/flatbuf/Utf8.go | 51 + .../go/v15/arrow/internal/flatbuf/Utf8View.go | 57 + .../arrow/go/v15/arrow/internal/utils.go | 59 + .../arrow/go/v15/arrow/ipc/compression.go | 137 + .../arrow/go/v15/arrow/ipc/endian_swap.go | 166 + .../arrow/go/v15/arrow/ipc/file_reader.go | 770 + .../arrow/go/v15/arrow/ipc/file_writer.go | 394 + .../apache/arrow/go/v15/arrow/ipc/ipc.go | 199 + .../apache/arrow/go/v15/arrow/ipc/message.go | 242 + .../apache/arrow/go/v15/arrow/ipc/metadata.go | 1317 + .../apache/arrow/go/v15/arrow/ipc/reader.go | 285 + .../apache/arrow/go/v15/arrow/ipc/writer.go | 1044 + .../apache/arrow/go/v15/arrow/memory/Makefile | 66 + .../arrow/go/v15/arrow/memory/allocator.go | 27 + .../arrow/go/v15/arrow/memory/buffer.go | 157 + .../go/v15/arrow/memory/cgo_allocator.go | 108 + .../arrow/memory/cgo_allocator_defaults.go | 23 + .../v15/arrow/memory/cgo_allocator_logging.go | 23 + .../go/v15/arrow/memory/checked_allocator.go | 221 + .../go/v15/arrow/memory/default_allocator.go | 25 + .../go/v15/arrow/memory/default_mallocator.go | 29 + .../apache/arrow/go/v15/arrow/memory/doc.go | 22 + .../arrow/go/v15/arrow/memory/go_allocator.go | 47 + .../memory/internal/cgoalloc/allocator.cc | 71 + .../memory/internal/cgoalloc/allocator.go | 108 + .../memory/internal/cgoalloc/allocator.h | 39 + .../arrow/memory/internal/cgoalloc/helpers.h | 52 + .../go/v15/arrow/memory/mallocator/doc.go | 21 + .../v15/arrow/memory/mallocator/mallocator.go | 115 + .../arrow/go/v15/arrow/memory/memory.go | 33 + .../arrow/go/v15/arrow/memory/memory_amd64.go | 33 + .../arrow/go/v15/arrow/memory/memory_arm64.go | 31 + .../go/v15/arrow/memory/memory_avx2_amd64.go | 41 + .../go/v15/arrow/memory/memory_avx2_amd64.s | 85 + .../go/v15/arrow/memory/memory_js_wasm.go | 23 + .../go/v15/arrow/memory/memory_neon_arm64.go | 31 + .../go/v15/arrow/memory/memory_neon_arm64.s | 43 + .../arrow/go/v15/arrow/memory/memory_noasm.go | 23 + .../go/v15/arrow/memory/memory_sse4_amd64.go | 31 + .../go/v15/arrow/memory/memory_sse4_amd64.s | 84 + .../apache/arrow/go/v15/arrow/memory/util.go | 45 + .../arrow/go/v15/arrow/numeric.schema.json | 15 + .../arrow/go/v15/arrow/numeric.tmpldata | 135 + .../apache/arrow/go/v15/arrow/record.go | 49 + .../apache/arrow/go/v15/arrow/schema.go | 301 + .../apache/arrow/go/v15/arrow/table.go | 193 + .../apache/arrow/go/v15/arrow/tools.go | 25 + .../apache/arrow/go/v15/arrow/type_string.go | 65 + .../apache/arrow/go/v15/arrow/type_traits.go | 162 + .../arrow/go/v15/arrow/type_traits_boolean.go | 28 + .../go/v15/arrow/type_traits_decimal128.go | 58 + .../go/v15/arrow/type_traits_decimal256.go | 53 + .../arrow/go/v15/arrow/type_traits_float16.go | 57 + .../go/v15/arrow/type_traits_interval.go | 135 + .../go/v15/arrow/type_traits_numeric.gen.go | 524 + .../v15/arrow/type_traits_numeric.gen.go.tmpl | 78 + .../type_traits_numeric.gen_test.go.tmpl | 61 + .../go/v15/arrow/type_traits_timestamp.go | 54 + .../arrow/go/v15/arrow/type_traits_view.go | 48 + .../arrow/go/v15/arrow/unionmode_string.go | 25 + .../internal/bitutils/bit_block_counter.go | 452 + .../v15/internal/bitutils/bit_run_reader.go | 151 + .../internal/bitutils/bit_set_run_reader.go | 361 + .../v15/internal/bitutils/bitmap_generate.go | 109 + .../go/v15/internal/hashing/hash_funcs.go | 90 + .../go/v15/internal/hashing/hash_string.go | 26 + .../internal/hashing/hash_string_go1.19.go | 37 + .../go/v15/internal/hashing/types.tmpldata | 42 + .../internal/hashing/xxh3_memo_table.gen.go | 2833 ++ .../hashing/xxh3_memo_table.gen.go.tmpl | 349 + .../v15/internal/hashing/xxh3_memo_table.go | 443 + .../apache/arrow/go/v15/internal/json/json.go | 51 + .../arrow/go/v15/internal/json/json_tinygo.go | 51 + .../arrow/go/v15/internal/utils/Makefile | 80 + .../arrow/go/v15/internal/utils/buf_reader.go | 212 + .../go/v15/internal/utils/endians_default.go | 30 + .../go/v15/internal/utils/endians_s390x.go | 33 + .../arrow/go/v15/internal/utils/math.go | 33 + .../arrow/go/v15/internal/utils/min_max.go | 212 + .../go/v15/internal/utils/min_max_amd64.go | 55 + .../go/v15/internal/utils/min_max_arm64.go | 65 + .../v15/internal/utils/min_max_avx2_amd64.go | 90 + .../v15/internal/utils/min_max_avx2_amd64.s | 927 + .../v15/internal/utils/min_max_neon_arm64.go | 56 + .../v15/internal/utils/min_max_neon_arm64.s | 324 + .../go/v15/internal/utils/min_max_noasm.go | 31 + .../go/v15/internal/utils/min_max_ppc64le.go | 30 + .../go/v15/internal/utils/min_max_s390x.go | 30 + .../v15/internal/utils/min_max_sse4_amd64.go | 88 + .../v15/internal/utils/min_max_sse4_amd64.s | 1044 + .../go/v15/internal/utils/transpose_ints.go | 407 + .../v15/internal/utils/transpose_ints.go.tmpl | 34 + .../internal/utils/transpose_ints.tmpldata | 34 + .../internal/utils/transpose_ints_amd64.go | 325 + .../utils/transpose_ints_amd64.go.tmpl | 75 + .../internal/utils/transpose_ints_arm64.go | 96 + .../utils/transpose_ints_avx2_amd64.go | 473 + .../utils/transpose_ints_avx2_amd64.s | 3074 ++ .../v15/internal/utils/transpose_ints_def.go | 227 + .../internal/utils/transpose_ints_noasm.go | 96 + .../utils/transpose_ints_noasm.go.tmpl | 34 + .../internal/utils/transpose_ints_ppc64le.go | 96 + .../internal/utils/transpose_ints_s390x.go | 96 + .../utils/transpose_ints_s390x.go.tmpl | 34 + .../utils/transpose_ints_simd.go.tmpl | 42 + .../utils/transpose_ints_sse4_amd64.go | 473 + .../utils/transpose_ints_sse4_amd64.s | 3074 ++ vendor/github.com/goccy/go-json/.codecov.yml | 32 + vendor/github.com/goccy/go-json/.gitignore | 2 + vendor/github.com/goccy/go-json/.golangci.yml | 83 + vendor/github.com/goccy/go-json/CHANGELOG.md | 425 + vendor/github.com/goccy/go-json/LICENSE | 21 + vendor/github.com/goccy/go-json/Makefile | 39 + vendor/github.com/goccy/go-json/README.md | 529 + vendor/github.com/goccy/go-json/color.go | 68 + vendor/github.com/goccy/go-json/decode.go | 263 + .../goccy/go-json/docker-compose.yml | 13 + vendor/github.com/goccy/go-json/encode.go | 326 + vendor/github.com/goccy/go-json/error.go | 41 + .../internal/decoder/anonymous_field.go | 41 + .../goccy/go-json/internal/decoder/array.go | 176 + .../goccy/go-json/internal/decoder/assign.go | 438 + .../goccy/go-json/internal/decoder/bool.go | 83 + .../goccy/go-json/internal/decoder/bytes.go | 118 + .../goccy/go-json/internal/decoder/compile.go | 487 + .../internal/decoder/compile_norace.go | 29 + .../go-json/internal/decoder/compile_race.go | 37 + .../goccy/go-json/internal/decoder/context.go | 254 + .../goccy/go-json/internal/decoder/float.go | 170 + .../goccy/go-json/internal/decoder/func.go | 146 + .../goccy/go-json/internal/decoder/int.go | 246 + .../go-json/internal/decoder/interface.go | 528 + .../goccy/go-json/internal/decoder/invalid.go | 55 + .../goccy/go-json/internal/decoder/map.go | 280 + .../goccy/go-json/internal/decoder/number.go | 123 + .../goccy/go-json/internal/decoder/option.go | 17 + .../goccy/go-json/internal/decoder/path.go | 670 + .../goccy/go-json/internal/decoder/ptr.go | 96 + .../goccy/go-json/internal/decoder/slice.go | 380 + .../goccy/go-json/internal/decoder/stream.go | 556 + .../goccy/go-json/internal/decoder/string.go | 452 + .../goccy/go-json/internal/decoder/struct.go | 845 + .../goccy/go-json/internal/decoder/type.go | 30 + .../goccy/go-json/internal/decoder/uint.go | 194 + .../internal/decoder/unmarshal_json.go | 104 + .../internal/decoder/unmarshal_text.go | 285 + .../internal/decoder/wrapped_string.go | 73 + .../goccy/go-json/internal/encoder/code.go | 1023 + .../goccy/go-json/internal/encoder/compact.go | 286 + .../go-json/internal/encoder/compiler.go | 935 + .../internal/encoder/compiler_norace.go | 32 + .../go-json/internal/encoder/compiler_race.go | 45 + .../goccy/go-json/internal/encoder/context.go | 105 + .../go-json/internal/encoder/decode_rune.go | 126 + .../goccy/go-json/internal/encoder/encoder.go | 596 + .../goccy/go-json/internal/encoder/indent.go | 211 + .../goccy/go-json/internal/encoder/int.go | 152 + .../goccy/go-json/internal/encoder/map112.go | 9 + .../goccy/go-json/internal/encoder/map113.go | 9 + .../goccy/go-json/internal/encoder/opcode.go | 752 + .../goccy/go-json/internal/encoder/option.go | 48 + .../goccy/go-json/internal/encoder/optype.go | 932 + .../goccy/go-json/internal/encoder/query.go | 135 + .../goccy/go-json/internal/encoder/string.go | 459 + .../go-json/internal/encoder/string_table.go | 415 + .../go-json/internal/encoder/vm/debug_vm.go | 41 + .../goccy/go-json/internal/encoder/vm/hack.go | 9 + .../goccy/go-json/internal/encoder/vm/util.go | 207 + .../goccy/go-json/internal/encoder/vm/vm.go | 4859 +++ .../internal/encoder/vm_color/debug_vm.go | 35 + .../go-json/internal/encoder/vm_color/hack.go | 9 + .../go-json/internal/encoder/vm_color/util.go | 274 + .../go-json/internal/encoder/vm_color/vm.go | 4859 +++ .../encoder/vm_color_indent/debug_vm.go | 35 + .../internal/encoder/vm_color_indent/util.go | 297 + .../internal/encoder/vm_color_indent/vm.go | 4859 +++ .../internal/encoder/vm_indent/debug_vm.go | 35 + .../internal/encoder/vm_indent/hack.go | 9 + .../internal/encoder/vm_indent/util.go | 230 + .../go-json/internal/encoder/vm_indent/vm.go | 4859 +++ .../goccy/go-json/internal/errors/error.go | 183 + .../goccy/go-json/internal/runtime/rtype.go | 263 + .../go-json/internal/runtime/struct_field.go | 91 + .../goccy/go-json/internal/runtime/type.go | 100 + vendor/github.com/goccy/go-json/json.go | 371 + vendor/github.com/goccy/go-json/option.go | 79 + vendor/github.com/goccy/go-json/path.go | 84 + vendor/github.com/goccy/go-json/query.go | 47 + vendor/github.com/google/flatbuffers/LICENSE | 202 + .../google/flatbuffers/go/BUILD.bazel | 23 + .../google/flatbuffers/go/builder.go | 856 + .../github.com/google/flatbuffers/go/doc.go | 3 + .../google/flatbuffers/go/encode.go | 238 + .../github.com/google/flatbuffers/go/grpc.go | 38 + .../github.com/google/flatbuffers/go/lib.go | 50 + .../github.com/google/flatbuffers/go/sizes.go | 55 + .../google/flatbuffers/go/struct.go | 8 + .../github.com/google/flatbuffers/go/table.go | 505 + .../github.com/klauspost/cpuid/v2/.gitignore | 24 + .../klauspost/cpuid/v2/.goreleaser.yml | 74 + .../klauspost/cpuid/v2/CONTRIBUTING.txt | 35 + vendor/github.com/klauspost/cpuid/v2/LICENSE | 22 + .../github.com/klauspost/cpuid/v2/README.md | 493 + vendor/github.com/klauspost/cpuid/v2/cpuid.go | 1427 + .../github.com/klauspost/cpuid/v2/cpuid_386.s | 47 + .../klauspost/cpuid/v2/cpuid_amd64.s | 72 + .../klauspost/cpuid/v2/cpuid_arm64.s | 26 + .../klauspost/cpuid/v2/detect_arm64.go | 247 + .../klauspost/cpuid/v2/detect_ref.go | 15 + .../klauspost/cpuid/v2/detect_x86.go | 36 + .../klauspost/cpuid/v2/featureid_string.go | 272 + .../klauspost/cpuid/v2/os_darwin_arm64.go | 121 + .../klauspost/cpuid/v2/os_linux_arm64.go | 130 + .../klauspost/cpuid/v2/os_other_arm64.go | 16 + .../klauspost/cpuid/v2/os_safe_linux_arm64.go | 8 + .../cpuid/v2/os_unsafe_linux_arm64.go | 11 + .../klauspost/cpuid/v2/test-architectures.sh | 15 + vendor/github.com/pierrec/lz4/v4/.gitignore | 36 + vendor/github.com/pierrec/lz4/v4/LICENSE | 28 + vendor/github.com/pierrec/lz4/v4/README.md | 92 + .../pierrec/lz4/v4/internal/lz4block/block.go | 481 + .../lz4/v4/internal/lz4block/blocks.go | 90 + .../lz4/v4/internal/lz4block/decode_amd64.s | 448 + .../lz4/v4/internal/lz4block/decode_arm.s | 231 + .../lz4/v4/internal/lz4block/decode_arm64.s | 241 + .../lz4/v4/internal/lz4block/decode_asm.go | 10 + .../lz4/v4/internal/lz4block/decode_other.go | 139 + .../lz4/v4/internal/lz4errors/errors.go | 19 + .../lz4/v4/internal/lz4stream/block.go | 350 + .../lz4/v4/internal/lz4stream/frame.go | 204 + .../lz4/v4/internal/lz4stream/frame_gen.go | 103 + .../lz4/v4/internal/xxh32/xxh32zero.go | 212 + .../lz4/v4/internal/xxh32/xxh32zero_arm.go | 11 + .../lz4/v4/internal/xxh32/xxh32zero_arm.s | 251 + .../lz4/v4/internal/xxh32/xxh32zero_other.go | 10 + vendor/github.com/pierrec/lz4/v4/lz4.go | 157 + vendor/github.com/pierrec/lz4/v4/options.go | 214 + .../github.com/pierrec/lz4/v4/options_gen.go | 92 + vendor/github.com/pierrec/lz4/v4/reader.go | 275 + vendor/github.com/pierrec/lz4/v4/state.go | 75 + vendor/github.com/pierrec/lz4/v4/state_gen.go | 28 + vendor/github.com/pierrec/lz4/v4/writer.go | 238 + vendor/github.com/zeebo/xxh3/.gitignore | 6 + vendor/github.com/zeebo/xxh3/LICENSE | 25 + vendor/github.com/zeebo/xxh3/Makefile | 27 + vendor/github.com/zeebo/xxh3/README.md | 38 + vendor/github.com/zeebo/xxh3/_compat.c | 39 + vendor/github.com/zeebo/xxh3/accum_generic.go | 542 + .../zeebo/xxh3/accum_stubs_amd64.go | 40 + .../zeebo/xxh3/accum_stubs_other.go | 25 + .../zeebo/xxh3/accum_vector_avx512_amd64.s | 379 + .../zeebo/xxh3/accum_vector_avx_amd64.s | 586 + .../zeebo/xxh3/accum_vector_sse_amd64.s | 1236 + vendor/github.com/zeebo/xxh3/consts.go | 97 + vendor/github.com/zeebo/xxh3/hash128.go | 253 + vendor/github.com/zeebo/xxh3/hash128_seed.go | 264 + vendor/github.com/zeebo/xxh3/hash64.go | 126 + vendor/github.com/zeebo/xxh3/hash64_seed.go | 134 + vendor/github.com/zeebo/xxh3/hasher.go | 239 + vendor/github.com/zeebo/xxh3/utils.go | 129 + .../x/exp/constraints/constraints.go | 52 + vendor/golang.org/x/telemetry/LICENSE | 27 + vendor/golang.org/x/telemetry/PATENTS | 22 + .../golang.org/x/telemetry/counter/counter.go | 146 + vendor/golang.org/x/telemetry/counter/doc.go | 58 + .../x/telemetry/internal/counter/counter.go | 401 + .../x/telemetry/internal/counter/file.go | 814 + .../x/telemetry/internal/counter/parse.go | 82 + .../internal/counter/stackcounter.go | 212 + .../x/telemetry/internal/mmap/mmap.go | 36 + .../x/telemetry/internal/mmap/mmap_other.go | 25 + .../x/telemetry/internal/mmap/mmap_unix.go | 47 + .../x/telemetry/internal/mmap/mmap_windows.go | 52 + .../telemetry/internal/telemetry/dateonly.go | 9 + .../x/telemetry/internal/telemetry/dir.go | 163 + .../telemetry/internal/telemetry/proginfo.go | 57 + .../x/telemetry/internal/telemetry/types.go | 51 + .../golang.org/x/tools/cmd/goimports/doc.go | 50 + .../x/tools/cmd/goimports/goimports.go | 383 + .../x/tools/cmd/goimports/goimports_gc.go | 26 + .../x/tools/cmd/goimports/goimports_not_gc.go | 11 + .../x/tools/cmd/stringer/stringer.go | 715 + .../api/bigquery/v2/bigquery-api.json | 10958 ++++++ .../api/bigquery/v2/bigquery-gen.go | 16359 +++++++++ vendor/modules.txt | 71 + 541 files changed, 211348 insertions(+), 88 deletions(-) create mode 100644 data/results/bquxjob_65df743f_19de556b6a3.json create mode 100644 pkg/bigquery/bigquery.go create mode 100644 pkg/bigquery/bigquery_test.go create mode 100644 pkg/bigquery/cached_client.go create mode 100644 pkg/bigquery/cached_client_test.go create mode 100644 pkg/bigquery/fake.go create mode 100644 pkg/bigquery/prowjobs.go create mode 100644 pkg/bigquery/prowjobs_test.go create mode 100644 pkg/cmd/release-payload-controller/jira_escalations_controller.go create mode 100644 pkg/cmd/release-payload-controller/jira_escalations_controller_test.go create mode 100644 pkg/cmd/release-payload-controller/qualifiers_summary_controller.go create mode 100644 pkg/cmd/release-payload-controller/qualifiers_summary_controller_test.go create mode 100644 pkg/releasepayload/qualifiers/helpers.go create mode 100644 pkg/releasepayload/qualifiers/helpers_test.go create mode 100644 pkg/releasequalifiers/config_loader.go create mode 100644 pkg/releasequalifiers/config_loader_test.go create mode 100644 pkg/releasequalifiers/merge.go create mode 100644 pkg/releasequalifiers/merge_test.go create mode 100644 pkg/releasequalifiers/notifications/jira/escalation_test.go create mode 100644 pkg/releasequalifiers/prettyprint.go create mode 100644 pkg/releasequalifiers/prettyprint_test.go create mode 100644 pkg/releasequalifiers/validation_test.go create mode 100644 vendor/cloud.google.com/go/bigquery/CHANGES.md create mode 100644 vendor/cloud.google.com/go/bigquery/LICENSE create mode 100644 vendor/cloud.google.com/go/bigquery/README.md create mode 100644 vendor/cloud.google.com/go/bigquery/arrow.go create mode 100644 vendor/cloud.google.com/go/bigquery/bigquery.go create mode 100644 vendor/cloud.google.com/go/bigquery/bigquery.replay create mode 100644 vendor/cloud.google.com/go/bigquery/copy.go create mode 100644 vendor/cloud.google.com/go/bigquery/dataset.go create mode 100644 vendor/cloud.google.com/go/bigquery/doc.go create mode 100644 vendor/cloud.google.com/go/bigquery/error.go create mode 100644 vendor/cloud.google.com/go/bigquery/external.go create mode 100644 vendor/cloud.google.com/go/bigquery/extract.go create mode 100644 vendor/cloud.google.com/go/bigquery/file.go create mode 100644 vendor/cloud.google.com/go/bigquery/gcs.go create mode 100644 vendor/cloud.google.com/go/bigquery/iam.go create mode 100644 vendor/cloud.google.com/go/bigquery/inserter.go create mode 100644 vendor/cloud.google.com/go/bigquery/internal/query/order.go create mode 100644 vendor/cloud.google.com/go/bigquery/internal/version.go create mode 100644 vendor/cloud.google.com/go/bigquery/intervalvalue.go create mode 100644 vendor/cloud.google.com/go/bigquery/iterator.go create mode 100644 vendor/cloud.google.com/go/bigquery/job.go create mode 100644 vendor/cloud.google.com/go/bigquery/load.go create mode 100644 vendor/cloud.google.com/go/bigquery/model.go create mode 100644 vendor/cloud.google.com/go/bigquery/nulls.go create mode 100644 vendor/cloud.google.com/go/bigquery/params.go create mode 100644 vendor/cloud.google.com/go/bigquery/query.go create mode 100644 vendor/cloud.google.com/go/bigquery/random.go create mode 100644 vendor/cloud.google.com/go/bigquery/rangevalue.go create mode 100644 vendor/cloud.google.com/go/bigquery/routine.go create mode 100644 vendor/cloud.google.com/go/bigquery/schema.go create mode 100644 vendor/cloud.google.com/go/bigquery/standardsql.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/auxiliary.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/auxiliary_go123.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/big_query_read_client.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/big_query_write_client.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/doc.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/helpers.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/info.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/storagepb/annotations.pb.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/storagepb/arrow.pb.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/storagepb/avro.pb.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/storagepb/protobuf.pb.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/storagepb/storage.pb.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/storagepb/stream.pb.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/storagepb/table.pb.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage/apiv1/version.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage_client.go create mode 100644 vendor/cloud.google.com/go/bigquery/storage_iterator.go create mode 100644 vendor/cloud.google.com/go/bigquery/table.go create mode 100644 vendor/cloud.google.com/go/bigquery/value.go create mode 100644 vendor/cloud.google.com/go/civil/civil.go create mode 100644 vendor/cloud.google.com/go/internal/detect/detect.go create mode 100644 vendor/cloud.google.com/go/internal/fields/fields.go create mode 100644 vendor/cloud.google.com/go/internal/fields/fold.go create mode 100644 vendor/cloud.google.com/go/internal/uid/uid.go create mode 100644 vendor/github.com/apache/arrow/go/v15/LICENSE.txt create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/.editorconfig create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/.gitignore create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/Gopkg.lock create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/Gopkg.toml create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/Makefile create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/array.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/binary.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/binarybuilder.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/boolean.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/booleanbuilder.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_byte.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_numeric.gen.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_numeric.gen.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/builder.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/compare.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/concat.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/data.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/decimal128.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/decimal256.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/dictionary.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/diff.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/doc.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/encoded.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/extension.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/extension_builder.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/fixed_size_list.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/fixedsize_binary.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/fixedsize_binarybuilder.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/float16.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/float16_builder.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/interval.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/json_reader.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/list.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/map.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/null.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/numeric.gen.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/numeric.gen.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen_test.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/record.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/string.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/struct.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/table.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/timestamp.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/union.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/array/util.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/arrio/arrio.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/Makefile create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_amd64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_arm64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_avx2_amd64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_avx2_amd64.s create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_noasm.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_ppc64le.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_s390x.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_sse4_amd64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_sse4_amd64.s create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmaps.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitutil.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/endian_default.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/bitutil/endian_s390x.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/compare.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_binary.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_encoded.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_extension.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_fixedwidth.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_nested.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_null.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go.tmpldata create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline_go1.19.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline_tinygo.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/decimal128/decimal128.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/decimal256/decimal256.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/doc.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/encoded/ree_utils.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/endian/big.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/endian/endian.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/endian/little.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/errors.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/float16/float16.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/assert_off.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/assert_on.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/doc.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/log_off.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/log_on.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/util.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/dictutils/dict.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Binary.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BinaryView.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Block.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BodyCompression.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BodyCompressionMethod.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Bool.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Buffer.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/CompressionType.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Date.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DateUnit.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Decimal.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryBatch.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryEncoding.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryKind.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Duration.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Endianness.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Feature.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Field.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FieldNode.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FixedSizeBinary.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FixedSizeList.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FloatingPoint.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Footer.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Int.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Interval.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/IntervalUnit.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/KeyValue.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeBinary.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeList.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeListView.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeUtf8.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/List.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/ListView.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Map.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Message.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/MessageHeader.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/MetadataVersion.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Null.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Precision.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RecordBatch.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RunEndEncoded.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RunLengthEncoded.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Schema.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixCompressedAxis.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixIndexCSR.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixIndexCSX.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensor.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndex.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndexCOO.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndexCSF.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Struct_.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Tensor.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/TensorDim.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Time.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/TimeUnit.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Timestamp.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Type.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Union.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/UnionMode.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Utf8.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Utf8View.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/internal/utils.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/ipc/compression.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/ipc/endian_swap.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/ipc/file_reader.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/ipc/file_writer.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/ipc/ipc.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/ipc/message.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/ipc/metadata.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/ipc/reader.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/ipc/writer.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/Makefile create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/allocator.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/buffer.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator_defaults.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator_logging.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/checked_allocator.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/default_allocator.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/default_mallocator.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/doc.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/go_allocator.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.cc create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.h create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/helpers.h create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/mallocator/doc.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/mallocator/mallocator.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/memory.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_amd64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_arm64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_avx2_amd64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_avx2_amd64.s create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_js_wasm.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_neon_arm64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_neon_arm64.s create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_noasm.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_sse4_amd64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_sse4_amd64.s create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/memory/util.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/numeric.schema.json create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/numeric.tmpldata create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/record.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/schema.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/table.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/tools.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/type_string.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/type_traits.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/type_traits_boolean.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/type_traits_decimal128.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/type_traits_decimal256.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/type_traits_float16.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/type_traits_interval.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen_test.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/type_traits_timestamp.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/type_traits_view.go create mode 100644 vendor/github.com/apache/arrow/go/v15/arrow/unionmode_string.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_block_counter.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_run_reader.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_set_run_reader.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/bitutils/bitmap_generate.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_funcs.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_string.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_string_go1.19.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/hashing/types.tmpldata create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.gen.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.gen.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/json/json.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/json/json_tinygo.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/Makefile create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/buf_reader.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/endians_default.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/endians_s390x.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/math.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/min_max.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_amd64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_arm64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_avx2_amd64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_avx2_amd64.s create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_neon_arm64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_neon_arm64.s create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_noasm.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_ppc64le.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_s390x.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_sse4_amd64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_sse4_amd64.s create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.tmpldata create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_amd64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_amd64.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_arm64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_avx2_amd64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_avx2_amd64.s create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_def.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_noasm.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_noasm.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_ppc64le.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_s390x.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_s390x.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_simd.go.tmpl create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_sse4_amd64.go create mode 100644 vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_sse4_amd64.s create mode 100644 vendor/github.com/goccy/go-json/.codecov.yml create mode 100644 vendor/github.com/goccy/go-json/.gitignore create mode 100644 vendor/github.com/goccy/go-json/.golangci.yml create mode 100644 vendor/github.com/goccy/go-json/CHANGELOG.md create mode 100644 vendor/github.com/goccy/go-json/LICENSE create mode 100644 vendor/github.com/goccy/go-json/Makefile create mode 100644 vendor/github.com/goccy/go-json/README.md create mode 100644 vendor/github.com/goccy/go-json/color.go create mode 100644 vendor/github.com/goccy/go-json/decode.go create mode 100644 vendor/github.com/goccy/go-json/docker-compose.yml create mode 100644 vendor/github.com/goccy/go-json/encode.go create mode 100644 vendor/github.com/goccy/go-json/error.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/anonymous_field.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/array.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/assign.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/bool.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/bytes.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/compile.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/compile_norace.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/compile_race.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/context.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/float.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/func.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/int.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/interface.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/invalid.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/map.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/number.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/option.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/path.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/ptr.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/slice.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/stream.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/string.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/struct.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/type.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/uint.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/unmarshal_json.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/unmarshal_text.go create mode 100644 vendor/github.com/goccy/go-json/internal/decoder/wrapped_string.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/code.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/compact.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/compiler.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/compiler_norace.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/compiler_race.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/context.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/decode_rune.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/encoder.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/indent.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/int.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/map112.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/map113.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/opcode.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/option.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/optype.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/query.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/string.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/string_table.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm/debug_vm.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm/hack.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm/util.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm/vm.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm_color/debug_vm.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm_color/hack.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm_color/util.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm_color/vm.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/debug_vm.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/util.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm_color_indent/vm.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm_indent/debug_vm.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm_indent/hack.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm_indent/util.go create mode 100644 vendor/github.com/goccy/go-json/internal/encoder/vm_indent/vm.go create mode 100644 vendor/github.com/goccy/go-json/internal/errors/error.go create mode 100644 vendor/github.com/goccy/go-json/internal/runtime/rtype.go create mode 100644 vendor/github.com/goccy/go-json/internal/runtime/struct_field.go create mode 100644 vendor/github.com/goccy/go-json/internal/runtime/type.go create mode 100644 vendor/github.com/goccy/go-json/json.go create mode 100644 vendor/github.com/goccy/go-json/option.go create mode 100644 vendor/github.com/goccy/go-json/path.go create mode 100644 vendor/github.com/goccy/go-json/query.go create mode 100644 vendor/github.com/google/flatbuffers/LICENSE create mode 100644 vendor/github.com/google/flatbuffers/go/BUILD.bazel create mode 100644 vendor/github.com/google/flatbuffers/go/builder.go create mode 100644 vendor/github.com/google/flatbuffers/go/doc.go create mode 100644 vendor/github.com/google/flatbuffers/go/encode.go create mode 100644 vendor/github.com/google/flatbuffers/go/grpc.go create mode 100644 vendor/github.com/google/flatbuffers/go/lib.go create mode 100644 vendor/github.com/google/flatbuffers/go/sizes.go create mode 100644 vendor/github.com/google/flatbuffers/go/struct.go create mode 100644 vendor/github.com/google/flatbuffers/go/table.go create mode 100644 vendor/github.com/klauspost/cpuid/v2/.gitignore create mode 100644 vendor/github.com/klauspost/cpuid/v2/.goreleaser.yml create mode 100644 vendor/github.com/klauspost/cpuid/v2/CONTRIBUTING.txt create mode 100644 vendor/github.com/klauspost/cpuid/v2/LICENSE create mode 100644 vendor/github.com/klauspost/cpuid/v2/README.md create mode 100644 vendor/github.com/klauspost/cpuid/v2/cpuid.go create mode 100644 vendor/github.com/klauspost/cpuid/v2/cpuid_386.s create mode 100644 vendor/github.com/klauspost/cpuid/v2/cpuid_amd64.s create mode 100644 vendor/github.com/klauspost/cpuid/v2/cpuid_arm64.s create mode 100644 vendor/github.com/klauspost/cpuid/v2/detect_arm64.go create mode 100644 vendor/github.com/klauspost/cpuid/v2/detect_ref.go create mode 100644 vendor/github.com/klauspost/cpuid/v2/detect_x86.go create mode 100644 vendor/github.com/klauspost/cpuid/v2/featureid_string.go create mode 100644 vendor/github.com/klauspost/cpuid/v2/os_darwin_arm64.go create mode 100644 vendor/github.com/klauspost/cpuid/v2/os_linux_arm64.go create mode 100644 vendor/github.com/klauspost/cpuid/v2/os_other_arm64.go create mode 100644 vendor/github.com/klauspost/cpuid/v2/os_safe_linux_arm64.go create mode 100644 vendor/github.com/klauspost/cpuid/v2/os_unsafe_linux_arm64.go create mode 100644 vendor/github.com/klauspost/cpuid/v2/test-architectures.sh create mode 100644 vendor/github.com/pierrec/lz4/v4/.gitignore create mode 100644 vendor/github.com/pierrec/lz4/v4/LICENSE create mode 100644 vendor/github.com/pierrec/lz4/v4/README.md create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/lz4block/block.go create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/lz4block/blocks.go create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/lz4block/decode_amd64.s create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/lz4block/decode_arm.s create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/lz4block/decode_arm64.s create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/lz4block/decode_asm.go create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/lz4block/decode_other.go create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/lz4errors/errors.go create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/lz4stream/block.go create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/lz4stream/frame.go create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/lz4stream/frame_gen.go create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/xxh32/xxh32zero.go create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/xxh32/xxh32zero_arm.go create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/xxh32/xxh32zero_arm.s create mode 100644 vendor/github.com/pierrec/lz4/v4/internal/xxh32/xxh32zero_other.go create mode 100644 vendor/github.com/pierrec/lz4/v4/lz4.go create mode 100644 vendor/github.com/pierrec/lz4/v4/options.go create mode 100644 vendor/github.com/pierrec/lz4/v4/options_gen.go create mode 100644 vendor/github.com/pierrec/lz4/v4/reader.go create mode 100644 vendor/github.com/pierrec/lz4/v4/state.go create mode 100644 vendor/github.com/pierrec/lz4/v4/state_gen.go create mode 100644 vendor/github.com/pierrec/lz4/v4/writer.go create mode 100644 vendor/github.com/zeebo/xxh3/.gitignore create mode 100644 vendor/github.com/zeebo/xxh3/LICENSE create mode 100644 vendor/github.com/zeebo/xxh3/Makefile create mode 100644 vendor/github.com/zeebo/xxh3/README.md create mode 100644 vendor/github.com/zeebo/xxh3/_compat.c create mode 100644 vendor/github.com/zeebo/xxh3/accum_generic.go create mode 100644 vendor/github.com/zeebo/xxh3/accum_stubs_amd64.go create mode 100644 vendor/github.com/zeebo/xxh3/accum_stubs_other.go create mode 100644 vendor/github.com/zeebo/xxh3/accum_vector_avx512_amd64.s create mode 100644 vendor/github.com/zeebo/xxh3/accum_vector_avx_amd64.s create mode 100644 vendor/github.com/zeebo/xxh3/accum_vector_sse_amd64.s create mode 100644 vendor/github.com/zeebo/xxh3/consts.go create mode 100644 vendor/github.com/zeebo/xxh3/hash128.go create mode 100644 vendor/github.com/zeebo/xxh3/hash128_seed.go create mode 100644 vendor/github.com/zeebo/xxh3/hash64.go create mode 100644 vendor/github.com/zeebo/xxh3/hash64_seed.go create mode 100644 vendor/github.com/zeebo/xxh3/hasher.go create mode 100644 vendor/github.com/zeebo/xxh3/utils.go create mode 100644 vendor/golang.org/x/exp/constraints/constraints.go create mode 100644 vendor/golang.org/x/telemetry/LICENSE create mode 100644 vendor/golang.org/x/telemetry/PATENTS create mode 100644 vendor/golang.org/x/telemetry/counter/counter.go create mode 100644 vendor/golang.org/x/telemetry/counter/doc.go create mode 100644 vendor/golang.org/x/telemetry/internal/counter/counter.go create mode 100644 vendor/golang.org/x/telemetry/internal/counter/file.go create mode 100644 vendor/golang.org/x/telemetry/internal/counter/parse.go create mode 100644 vendor/golang.org/x/telemetry/internal/counter/stackcounter.go create mode 100644 vendor/golang.org/x/telemetry/internal/mmap/mmap.go create mode 100644 vendor/golang.org/x/telemetry/internal/mmap/mmap_other.go create mode 100644 vendor/golang.org/x/telemetry/internal/mmap/mmap_unix.go create mode 100644 vendor/golang.org/x/telemetry/internal/mmap/mmap_windows.go create mode 100644 vendor/golang.org/x/telemetry/internal/telemetry/dateonly.go create mode 100644 vendor/golang.org/x/telemetry/internal/telemetry/dir.go create mode 100644 vendor/golang.org/x/telemetry/internal/telemetry/proginfo.go create mode 100644 vendor/golang.org/x/telemetry/internal/telemetry/types.go create mode 100644 vendor/golang.org/x/tools/cmd/goimports/doc.go create mode 100644 vendor/golang.org/x/tools/cmd/goimports/goimports.go create mode 100644 vendor/golang.org/x/tools/cmd/goimports/goimports_gc.go create mode 100644 vendor/golang.org/x/tools/cmd/goimports/goimports_not_gc.go create mode 100644 vendor/golang.org/x/tools/cmd/stringer/stringer.go create mode 100644 vendor/google.golang.org/api/bigquery/v2/bigquery-api.json create mode 100644 vendor/google.golang.org/api/bigquery/v2/bigquery-gen.go diff --git a/cmd/release-controller-api/controller.go b/cmd/release-controller-api/controller.go index d3525afd3..0dbf8ee12 100644 --- a/cmd/release-controller-api/controller.go +++ b/cmd/release-controller-api/controller.go @@ -4,6 +4,7 @@ import ( imagev1 "github.com/openshift/api/image/v1" releasepayloadlister "github.com/openshift/release-controller/pkg/client/listers/release/v1alpha1" releasecontroller "github.com/openshift/release-controller/pkg/release-controller" + "github.com/openshift/release-controller/pkg/releasequalifiers" lru "github.com/hashicorp/golang-lru" @@ -66,6 +67,9 @@ type Controller struct { releasePayloadNamespace string releasePayloadLister releasepayloadlister.ReleasePayloadLister + // configAccessor provides access to release qualifiers configuration (optional, may be nil) + configAccessor releasequalifiers.ConfigAccessor + // All image streams from app.ci cluster imageStreams []*imagev1.ImageStream } @@ -81,6 +85,7 @@ func NewController( artSuffix string, releasePayloadNamespace string, releasePayloadLister releasepayloadlister.ReleasePayloadLister, + configAccessor releasequalifiers.ConfigAccessor, ) *Controller { // log events at v2 and send them to the server broadcaster := record.NewBroadcaster() @@ -115,6 +120,8 @@ func NewController( releasePayloadNamespace: releasePayloadNamespace, releasePayloadLister: releasePayloadLister, + + configAccessor: configAccessor, } c.dashboards = []Dashboard{ diff --git a/cmd/release-controller-api/http.go b/cmd/release-controller-api/http.go index 066427086..442b61c28 100644 --- a/cmd/release-controller-api/http.go +++ b/cmd/release-controller-api/http.go @@ -21,6 +21,7 @@ import ( "time" "github.com/openshift/release-controller/pkg/apis/release/v1alpha1" + "github.com/openshift/release-controller/pkg/releasequalifiers" releasecontroller "github.com/openshift/release-controller/pkg/release-controller" "github.com/openshift/release-controller/pkg/rhcos" @@ -177,6 +178,7 @@ func (c *Controller) userInterfaceHandler() http.Handler { mux.HandleFunc("/releasestream/{release}/latest", c.httpReleaseLatest) mux.HandleFunc("/releasestream/{release}/latest/download", c.httpReleaseLatestDownload) mux.HandleFunc("/releasestream/{release}/candidates", c.httpReleaseCandidateList) + mux.HandleFunc("/releasestream/{release}/qualifier/{qualifier}", c.httpQualifierStatus) mux.HandleFunc("/dashboards/overview", c.httpDashboardOverview) mux.HandleFunc("/dashboards/compare", c.httpDashboardCompare) @@ -187,11 +189,14 @@ func (c *Controller) userInterfaceHandler() http.Handler { mux.HandleFunc("/api/v1/releasestream/{release}/candidate", c.apiReleaseCandidate) mux.HandleFunc("/api/v1/releasestream/{release}/release/{tag}", c.apiReleaseInfo) mux.HandleFunc("/api/v1/releasestream/{release}/config", c.apiReleaseConfig) + mux.HandleFunc("/api/v1/releasestream/{release}/qualifier/{qualifier}/config", c.apiQualifierConfig) mux.HandleFunc("/api/v1/releasestreams/accepted", c.apiAcceptedStreams) mux.HandleFunc("/api/v1/releasestreams/rejected", c.apiRejectedStreams) mux.HandleFunc("/api/v1/releasestreams/all", c.apiAllStreams) mux.HandleFunc("/api/v1/releasestreams/approvals", c.apiReleaseApprovals) + mux.HandleFunc("/api/v1/releasetag/{tag}/qualifiers", c.apiReleaseQualifiersSummaries) + //mux.HandleFunc("/api/v1/features/{tag}", c.apiFeatureInfo) //mux.HandleFunc("/features/{tag}", c.httpFeatureInfo) @@ -1432,12 +1437,22 @@ func (c *Controller) httpReleaseInfo(w http.ResponseWriter, req *http.Request) { renderInstallInstructions(w, tagInfo.Info.Tag, tagInfo.TagPullSpec, c.artifactsHost) } - fmt.Fprintf(w, "Team Approvals: ") - teamApprovedList := c.renderTeamApprovals(tagInfo.Tag, true) - if teamApprovedList == "" { - fmt.Fprintf(w, "None
") + qualifierStatusAPI := fmt.Sprintf(`(status api)`, template.HTMLEscapeString(url.PathEscape(tagInfo.Tag))) + qualifierBadges := c.renderQualifierBadges(tagInfo.Tag, true) + if qualifierBadges == "" { + fmt.Fprintf(w, `

Qualifiers %s: None

`, qualifierStatusAPI) } else { - fmt.Fprint(w, "
"+teamApprovedList+"
") + fmt.Fprintf(w, `

Qualifiers %s:

%s
`, qualifierStatusAPI, qualifierBadges) + } + + if payload := c.GetReleasePayload(tagInfo.Tag); payload != nil && + payload.Status.QualifiersSummary != nil && + len(payload.Status.QualifiersSummary.FailureLabels) > 0 { + fmt.Fprintf(w, `

Failure Labels:

`) } c.renderVerifyLinks(w, *tagInfo.Info.Tag, tagInfo.Info.Release) @@ -1764,7 +1779,7 @@ func (c *Controller) httpReleases(w http.ResponseWriter, req *http.Request) { "inc": func(i int) int { return i + 1 }, "upgradeCells": upgradeCells, "removeSpecialCharacters": removeSpecialCharacters, - "teamApprovals": c.renderTeamApprovals, + "qualifierBadges": c.renderQualifierBadges, "since": func(utcDate string) string { t, err := time.Parse(time.RFC3339, utcDate) if err != nil { @@ -1836,60 +1851,288 @@ func (c *Controller) httpReleases(w http.ResponseWriter, req *http.Request) { } } -func (c *Controller) renderTeamApprovals(tag string, asList bool) string { +func qualifierStateText(summary v1alpha1.ReleaseQualifierSummary) string { + if summary.Approval { + switch summary.AggregateState { + case v1alpha1.JobStateSuccess: + return "Accepted" + case v1alpha1.JobStateFailure: + return "Rejected" + default: + return "" + } + } + switch summary.AggregateState { + case v1alpha1.JobStateSuccess: + return "Passed" + case v1alpha1.JobStateFailure: + return "Failed" + default: + return "Pending" + } +} + +func (c *Controller) renderQualifierBadges(tag string, showAll bool) string { payload := c.GetReleasePayload(tag) if payload == nil { return "" } - acceptedLabels := []string{} - rejectedLabels := []string{} - for label, value := range payload.Labels { - if strings.HasSuffix(label, "_state") { - if value == "Accepted" { - acceptedLabels = append(acceptedLabels, label) - } - if value == "Rejected" { - rejectedLabels = append(rejectedLabels, label) + if payload.Status.QualifiersSummary == nil || len(payload.Status.QualifiersSummary.Qualifiers) == 0 { + return "" + } + + // Sort qualifier IDs for deterministic display order + qualifierIDs := make([]releasequalifiers.QualifierId, 0, len(payload.Status.QualifiersSummary.Qualifiers)) + for qID := range payload.Status.QualifiersSummary.Qualifiers { + qualifierIDs = append(qualifierIDs, qID) + } + sort.Slice(qualifierIDs, func(i, j int) bool { + return qualifierIDs[i] < qualifierIDs[j] + }) + + streamName := payload.Spec.PayloadCoordinates.StreamName + + var badges string + for _, qID := range qualifierIDs { + summary := payload.Status.QualifiersSummary.Qualifiers[qID] + if !showAll && !summary.BadgePropagated { + continue + } + + badgeName := summary.BadgeName + if badgeName == "" { + badgeName = string(qID) + } + + var badgeClass string + switch summary.AggregateState { + case v1alpha1.JobStateSuccess: + badgeClass = "badge-success" + case v1alpha1.JobStateFailure: + badgeClass = "badge-danger" + default: + badgeClass = "badge-warning" + } + + escapedBadgeName := template.HTMLEscapeString(badgeName) + stateText := qualifierStateText(summary) + linkURL := fmt.Sprintf("/releasestream/%s/qualifier/%s", + url.PathEscape(streamName), url.PathEscape(string(qID))) + badges += fmt.Sprintf(`%s `, + linkURL, escapedBadgeName, stateText, badgeClass, escapedBadgeName) + } + return badges +} + +func (c *Controller) httpQualifierStatus(w http.ResponseWriter, req *http.Request) { + start := time.Now() + defer func() { klog.V(4).Infof("rendered in %s", time.Since(start)) }() + + vars := mux.Vars(req) + streamName := vars["release"] + qualifierID := releasequalifiers.QualifierId(vars["qualifier"]) + + // Find the most recent payload in this stream that has this qualifier + payloads := c.GetReleasePayloads() + var payload *v1alpha1.ReleasePayload + for _, p := range payloads { + if p.Spec.PayloadCoordinates.StreamName != streamName { + continue + } + if p.Status.QualifiersSummary != nil { + if _, ok := p.Status.QualifiersSummary.Qualifiers[qualifierID]; ok { + if payload == nil || p.CreationTimestamp.After(payload.CreationTimestamp.Time) { + payload = p + } } } } - teamName := func(fullLabel string) string { - return strings.ToUpper(strings.Split(strings.TrimSuffix(fullLabel, "_state"), "/")[1]) + + if payload == nil { + http.Error(w, fmt.Sprintf("No payload found for qualifier %q in stream %q", qualifierID, streamName), http.StatusNotFound) + return + } + + summary := payload.Status.QualifiersSummary.Qualifiers[qualifierID] + + // Build a lookup of job name -> JobStatus from the payload results + jobStatusMap := make(map[string]*v1alpha1.JobStatus) + for i := range payload.Status.BlockingJobResults { + js := &payload.Status.BlockingJobResults[i] + jobStatusMap[js.CIConfigurationName] = js } - var approvals strings.Builder - if asList { - approvals.WriteString("") - } - return approvals.String() + } func (c *Controller) httpReleaseStreamTable(w http.ResponseWriter, req *http.Request) { @@ -2004,6 +2247,7 @@ func (c *Controller) httpReleaseStreamTable(w http.ResponseWriter, req *http.Req "inc": func(i int) int { return i + 1 }, "upgradeCells": upgradeCells, "removeSpecialCharacters": removeSpecialCharacters, + "qualifierBadges": c.renderQualifierBadges, "since": func(utcDate string) string { t, err := time.Parse(time.RFC3339, utcDate) if err != nil { @@ -2361,6 +2605,117 @@ func (c *Controller) apiReleaseConfig(w http.ResponseWriter, req *http.Request) fmt.Fprintln(w) } +func (c *Controller) apiQualifierConfig(w http.ResponseWriter, req *http.Request) { + start := time.Now() + defer func() { klog.V(4).Infof("rendered in %s", time.Since(start)) }() + + vars := mux.Vars(req) + streamName := vars["release"] + qualifierID := releasequalifiers.QualifierId(vars["qualifier"]) + + jobName := req.URL.Query().Get("job") + if jobName == "" { + http.Error(w, "error: job query parameter is required", http.StatusBadRequest) + return + } + + // Find the most recent payload in this stream that has this qualifier + payloads := c.GetReleasePayloads() + var payload *v1alpha1.ReleasePayload + for _, p := range payloads { + if p.Spec.PayloadCoordinates.StreamName != streamName { + continue + } + if p.Status.QualifiersSummary != nil { + if _, ok := p.Status.QualifiersSummary.Qualifiers[qualifierID]; ok { + if payload == nil || p.CreationTimestamp.After(payload.CreationTimestamp.Time) { + payload = p + } + } + } + } + + if payload == nil { + http.Error(w, fmt.Sprintf("No payload found for qualifier %q in stream %q", qualifierID, streamName), http.StatusNotFound) + return + } + + // Find the CIConfiguration for the specified job + var jobConfig *v1alpha1.CIConfiguration + for i := range payload.Spec.PayloadVerificationConfig.BlockingJobs { + if payload.Spec.PayloadVerificationConfig.BlockingJobs[i].CIConfigurationName == jobName { + jobConfig = &payload.Spec.PayloadVerificationConfig.BlockingJobs[i] + break + } + } + if jobConfig == nil { + for i := range payload.Spec.PayloadVerificationConfig.InformingJobs { + if payload.Spec.PayloadVerificationConfig.InformingJobs[i].CIConfigurationName == jobName { + jobConfig = &payload.Spec.PayloadVerificationConfig.InformingJobs[i] + break + } + } + } + if jobConfig == nil { + http.Error(w, fmt.Sprintf("Job %q not found in payload %q", jobName, payload.Name), http.StatusNotFound) + return + } + + // Start with the global config as the base + var mergedQualifier releasequalifiers.ReleaseQualifier + if c.configAccessor != nil { + globalConfig := c.configAccessor.Get() + if globalConfig != nil { + if gq, ok := globalConfig[qualifierID]; ok { + mergedQualifier = gq + } + } + } + + // Merge per-job override on top + if override, ok := jobConfig.Qualifiers[qualifierID]; ok { + mergedQualifier = mergedQualifier.Merge(override) + } + + data, err := json.MarshalIndent(&mergedQualifier, "", " ") + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + if _, err := w.Write(data); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + fmt.Fprintln(w) +} + +func (c *Controller) apiReleaseQualifiersSummaries(w http.ResponseWriter, req *http.Request) { + start := time.Now() + defer func() { klog.V(4).Infof("rendered in %s", time.Since(start)) }() + + vars := mux.Vars(req) + tag := vars["tag"] + + payload := c.GetReleasePayload(tag) + if payload == nil { + http.Error(w, fmt.Sprintf("No release payload found for tag %q", tag), http.StatusNotFound) + return + } + + data, err := json.MarshalIndent(payload.Status.QualifiersSummary, "", " ") + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + if _, err := w.Write(data); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + fmt.Fprintln(w) +} + func (c *Controller) apiAcceptedStreams(w http.ResponseWriter, req *http.Request) { data, err := c.filteredStreams(releasecontroller.ReleasePhaseAccepted) if err != nil { diff --git a/cmd/release-controller-api/http_helper.go b/cmd/release-controller-api/http_helper.go index 4ae2644a0..bd461f2e7 100644 --- a/cmd/release-controller-api/http_helper.go +++ b/cmd/release-controller-api/http_helper.go @@ -15,6 +15,7 @@ import ( "github.com/openshift/release-controller/pkg/apis/release/v1alpha1" "github.com/openshift/release-controller/pkg/releasepayload" + "github.com/openshift/release-controller/pkg/releasequalifiers" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/klog/v2" @@ -486,36 +487,76 @@ func (c *Controller) renderVerifyLinks(w io.Writer, tag imagev1.TagReference, re fmt.Fprint(w, msg) return } + + // Build reverse map: jobName -> []qualifierId for badge display + jobQualifiers := c.getJobQualifierMap(tag.Name) + buf := &bytes.Buffer{} final := tag.Annotations[releasecontroller.ReleaseAnnotationPhase] == releasecontroller.ReleasePhaseRejected || tag.Annotations[releasecontroller.ReleaseAnnotationPhase] == releasecontroller.ReleasePhaseAccepted if len(verificationJobs.BlockingJobs) > 0 { buf.WriteString("
  • Blocking jobs
  • ") } if len(verificationJobs.InformingJobs) > 0 { buf.WriteString("
  • Informing jobs
  • ") } if len(verificationJobs.AsyncJobs) > 0 { buf.WriteString("
  • Async jobs
  • ") } if len(verificationJobs.PendingJobs) > 0 { buf.WriteString("
  • Pending jobs
  • ") } if out := buf.String(); len(out) > 0 { - fmt.Fprintf(w, `

    Tests:

    `, out) + fmt.Fprintf(w, `

    Tests:

    `, out) } else { fmt.Fprintf(w, `

    No tests for this release`) } } -func (c *Controller) renderVerificationJobsList(jobs releasecontroller.VerificationStatusMap, release *releasecontroller.Release, tag imagev1.TagReference, final bool) string { +// getJobQualifierMap builds a reverse mapping from job CIConfigurationName to qualifier IDs +func (c *Controller) getJobQualifierMap(tagName string) map[string][]releasequalifiers.QualifierId { + payload := c.GetReleasePayload(tagName) + if payload == nil || payload.Status.QualifiersSummary == nil || len(payload.Status.QualifiersSummary.Qualifiers) == 0 { + return nil + } + result := make(map[string][]releasequalifiers.QualifierId) + for qID, summary := range payload.Status.QualifiersSummary.Qualifiers { + for _, job := range summary.Jobs { + result[job.CIConfigurationName] = append(result[job.CIConfigurationName], qID) + } + } + // Sort qualifier IDs for deterministic display + for _, qIDs := range result { + sort.Slice(qIDs, func(i, j int) bool { return qIDs[i] < qIDs[j] }) + } + return result +} + +// renderJobQualifierBadges renders small inline badge indicators for qualifiers associated with a job +func renderJobQualifierBadges(jobName string, jobQualifiers map[string][]releasequalifiers.QualifierId) string { + if jobQualifiers == nil { + return "" + } + qIDs, ok := jobQualifiers[jobName] + if !ok || len(qIDs) == 0 { + return "" + } + var buf bytes.Buffer + for _, qID := range qIDs { + fmt.Fprintf(&buf, ` %s`, + template.HTMLEscapeString(string(qID)), template.HTMLEscapeString(string(qID))) + } + return buf.String() +} + +func (c *Controller) renderVerificationJobsList(jobs releasecontroller.VerificationStatusMap, release *releasecontroller.Release, tag imagev1.TagReference, final bool, jobQualifiers map[string][]releasequalifiers.QualifierId) string { buf := &bytes.Buffer{} keys := make([]string, 0, len(jobs)) for k := range jobs { @@ -532,7 +573,9 @@ func (c *Controller) renderVerificationJobsList(jobs releasecontroller.Verificat if !verificationJobs[key].Disabled && !final { buf.WriteString("

  • ") buf.WriteString(template.HTMLEscapeString(key)) - buf.WriteString("
  • ") + buf.WriteString("") + buf.WriteString(renderJobQualifierBadges(key, jobQualifiers)) + buf.WriteString("") } continue } @@ -560,6 +603,7 @@ func (c *Controller) renderVerificationJobsList(jobs releasecontroller.Verificat buf.WriteString(" ") buf.WriteString(pj.Name) } + buf.WriteString(renderJobQualifierBadges(key, jobQualifiers)) buf.WriteString("