Help us shape the future of Go! Take the 2026 Go Developer Survey

platformmodules

package
v1.16.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 30, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Overview

Package platformmodules — ЕДИНСТВЕННОЕ объявление того, как один и тот же модуль платформы называется в трёх разных местах.

Написаний ТРИ, и они не выводятся друг из друга

короткое имя службы   каталог `services/<X>`, короткое имя SAN его mTLS
модуль каталога       сегмент пакета контрактов `proto/kacho/cloud/<Y>/`
домен типов объекта   приставка типов модели прав `<Z>_`

У большинства модулей все три совпадают. У балансировщика РАЗЛИЧНЫ ДВА из трёх: служба `nlb`, контракт `loadbalancer`, типы `nlb_listener`. Соответствие установлено решением, а не правилом, и вывести одно написание из другого нельзя ничем.

Почему это отдельное объявление в продукте, а не литерал у каждого читателя

Замер (#1885): в корпусе гейтов соответствие «служба ↔ модуль каталога» было выписано ПЯТЬЮ независимыми копиями, и каждая объясняла в комментарии, почему вывести его нельзя, — пять раз об одном предмете. В продуктовом дереве его не было НИ ОДНОГО, поэтому «чей это тип» отвечала приставка имени, то есть соглашение об именовании.

Повторённая величина расходится молча. Здесь она одна, и КАЖДАЯ ЕЁ КОЛОНКА — проверяемый факт, а не заявление: гейт дерева TestPlatformModuleVocabularyMatchesTheTree сверяет короткое имя с каталогом служб, модуль каталога — с деревом контрактов, домен типов — с моделью прав, и печатает объём осмотренного по каждой колонке.

Чего здесь НЕТ и почему

Отображения «тип объекта → модуль-владелец» здесь нет: полный перечень типов живёт в закрытой таблице `services/iam/internal/authzmap`, за границей видимости пакета, и вторая его копия разошлась бы с первой молча — ровно тот класс, ради которого пакет и заведён. Поэтому владение проверяется приставкой ОБЪЯВЛЕННОГО домена, а не полным словарём типов; переход на словарь держит задача #1816 — вместе с формой, которой личность вызывающего приезжает. Эпик #1087 — её основание, а не держатель: работы эпик не производит.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AliasesByCatalogModule

func AliasesByCatalogModule() map[string]string

AliasesByCatalogModule — та же карта в обратную сторону.

func AliasesByService

func AliasesByService() map[string]string

AliasesByService — расхождения «короткое имя службы → модуль каталога», картой. Совпадающие написания в карту НЕ ПОПАДАЮТ, и это часть контракта: читатели таких карт трактуют отсутствие записи как «написания совпали», то есть совпадающая запись изменила бы смысл карты, ничего к ней не добавив.

Отдана здесь, а не собирается у каждого читателя: собранная на месте, она была бы шестой копией того же соответствия — ровно тем, что пакет и снял.

func CatalogModuleOfService

func CatalogModuleOfService(service string) (string, bool)

CatalogModuleOfService — модуль каталога по короткому имени службы. ok=false — служба не объявлена.

func ObjectDomainOfService

func ObjectDomainOfService(service string) (string, bool)

ObjectDomainOfService — приставка типов объекта по короткому имени службы.

Различайте два «нет»: ok=false — службы в объявлении нет вовсе; ok=true с пустой строкой — служба объявлена и типов объекта у неё НЕТ. Схлопывать их в один ответ нельзя: вызывающий, решающий по нему о доступе, обязан отличать «не знаю такого» от «знаю, и типов у него нет».

func ServiceOfCatalogModule

func ServiceOfCatalogModule(catalogModule string) (string, bool)

ServiceOfCatalogModule — короткое имя службы по модулю каталога. ok=false — модуль не объявлен.

func Services

func Services() []string

Services — короткие имена всех объявленных служб, отсортированно.

Types

type Module

type Module struct {
	// Service — короткое имя службы: каталог `services/<Service>` и короткое
	// имя SAN её клиентского сертификата.
	Service string
	// CatalogModule — сегмент пакета контрактов: `proto/kacho/cloud/<CatalogModule>`.
	CatalogModule string
	// ObjectDomain — приставка типов объекта модели прав (`<ObjectDomain>_`).
	// ПУСТАЯ строка — не «неизвестно», а «модель не объявляет ни одного типа
	// этого модуля»; так у geo, и это проверяемый факт, а не пропуск.
	ObjectDomain string
}

Module — три написания одного модуля платформы.

func All

func All() []Module

All отдаёт КОПИЮ объявления, отсортированную по короткому имени службы.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL