понедельник, 18 марта 2019 г.

Terraform не дает использовать символ подчеркивания в имени google cloud function

Зарепортил баг в Terraform провайдере google. Если использовать символ подчеркивания в имени cloud function, то не проходит валидация конфигурации

provider "google" {
  version = "~> 2.2"
  project = "${var.gcp_project}"
  region  = "${var.gcp_region}"
}

variable "gcp_project" {}

variable "gcp_region" {}

resource "google_cloudfunctions_function" "test_function" {
  name = "test_function"
}

$ terraform validate

Error: google_cloudfunctions_function.test_function: "name" can only contain letters, numbers and hyphens

В соответствии с документацией Google в имени функции допустимо использовать буквы, цифры, дефисы и подчеркивания.

Подготовил исправление для этой проблемы. Для тестирования пришлось использовать golang-1.12 (go version go1.12.1 linux/amd64) из Debian Unstable, т.к. в golang-1.11 (go version go1.11.5 linux/amd64) из stretch-backports есть ошибка при запуске тестов

$ make -f GNUmakefile test
==> Checking source code against gofmt...
==> Checking that code complies with gofmt requirements...
go test -i $(go list ./... |grep -v 'vendor') || exit 1
go test golang_org/x/net/dns/dnsmessage: open /usr/lib/go-1.11/pkg/linux_amd64/vendor/golang_org/x/net/dns/dnsmessage.a: permission denied
go test golang_org/x/crypto/cryptobyte/asn1: open /usr/lib/go-1.11/pkg/linux_amd64/vendor/golang_org/x/crypto/cryptobyte/asn1.a: permission denied
go test golang_org/x/crypto/curve25519: open /usr/lib/go-1.11/pkg/linux_amd64/vendor/golang_org/x/crypto/curve25519.a: permission denied
go test golang_org/x/crypto/poly1305: open /usr/lib/go-1.11/pkg/linux_amd64/vendor/golang_org/x/crypto/poly1305.a: permission denied
go test golang_org/x/text/transform: open /usr/lib/go-1.11/pkg/linux_amd64/vendor/golang_org/x/text/transform.a: permission denied
go test golang_org/x/crypto/internal/chacha20: open /usr/lib/go-1.11/pkg/linux_amd64/vendor/golang_org/x/crypto/internal/chacha20.a: permission denied
go test golang_org/x/text/unicode/bidi: open /usr/lib/go-1.11/pkg/linux_amd64/vendor/golang_org/x/text/unicode/bidi.a: permission denied
go test golang_org/x/net/http2/hpack: open /usr/lib/go-1.11/pkg/linux_amd64/vendor/golang_org/x/net/http2/hpack.a: permission denied
GNUmakefile:11: recipe for target 'test' failed
make: *** [test] Error 1

Похоже это известная регрессия в golang 1.11.

1 комментарий:

  1. "^[a-zA-Z0-9-_]+$"

    такая регулярка может оказаться некорректной, обычно само тире располагают последним в квадратных скобках, чтобы оно не воспринималось как диапазон.
    Возможно в данном случае, из-за того что там диапазон 0-9 впереди, оно и сработает, но это зависит от реализации и лучше не путать людей.

    PS: случайно мимо проходил.

    ОтветитьУдалить