platformmodules

package
v1.3.1 Latest Latest
Warning

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

Go to latest
Published: Sep 10, 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