geo

package
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package geo implements MCP tools for GitLab Geo site management, providing CRUD operations and status retrieval for Geo replication sites.

Package geo markdown.go provides human-readable Markdown formatters for Geo site tools.

Package geo register.go wires Geo site MCP tools to the MCP server.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Delete

func Delete(ctx context.Context, client *gitlabclient.Client, in IDInput) error

Delete removes a Geo site by ID.

func FormatListMarkdown

func FormatListMarkdown(o ListOutput) string

FormatListMarkdown formats a list of Geo sites as a Markdown table.

func FormatListStatusMarkdown

func FormatListStatusMarkdown(o ListStatusOutput) string

FormatListStatusMarkdown formats a list of Geo site statuses as a Markdown table.

func FormatOutputMarkdown

func FormatOutputMarkdown(o Output) string

FormatOutputMarkdown formats a single Geo site as a Markdown table.

func FormatStatusMarkdown

func FormatStatusMarkdown(o StatusOutput) string

FormatStatusMarkdown formats a single Geo site status as a Markdown table.

func RegisterTools

func RegisterTools(server *mcp.Server, client *gitlabclient.Client)

RegisterTools registers MCP tools for GitLab Geo site operations.

Types

type CreateInput

type CreateInput struct {
	Primary                          *bool     `json:"primary,omitempty"                            jsonschema:"Whether this is a primary site"`
	Enabled                          *bool     `json:"enabled,omitempty"                            jsonschema:"Whether the site is enabled"`
	Name                             *string   `json:"name,omitempty"                               jsonschema:"Unique name of the Geo site"`
	URL                              *string   `json:"url,omitempty"                                jsonschema:"External URL of the Geo site"`
	InternalURL                      *string   `json:"internal_url,omitempty"                       jsonschema:"Internal URL of the Geo site"`
	FilesMaxCapacity                 *int64    `json:"files_max_capacity,omitempty"                 jsonschema:"Max number of LFS/attachment backfill downloads"`
	ReposMaxCapacity                 *int64    `json:"repos_max_capacity,omitempty"                 jsonschema:"Max number of concurrent repository backfill syncs"`
	VerificationMaxCapacity          *int64    `json:"verification_max_capacity,omitempty"          jsonschema:"Max number of concurrent verification jobs"`
	ContainerRepositoriesMaxCapacity *int64    `json:"container_repositories_max_capacity,omitempty" jsonschema:"Max number of concurrent container repository syncs"`
	SyncObjectStorage                *bool     `json:"sync_object_storage,omitempty"                jsonschema:"Whether to sync object-stored data"`
	SelectiveSyncType                *string   `json:"selective_sync_type,omitempty"                jsonschema:"Selective sync type: namespaces or shards"`
	SelectiveSyncShards              *[]string `json:"selective_sync_shards,omitempty"              jsonschema:"Storage shards to sync (when selective_sync_type=shards)"`
	SelectiveSyncNamespaceIDs        *[]int64  `json:"selective_sync_namespace_ids,omitempty"       jsonschema:"Namespace IDs to sync (when selective_sync_type=namespaces)"`
	MinimumReverificationInterval    *int64    `json:"minimum_reverification_interval,omitempty"    jsonschema:"Minimum interval (days) before re-verification"`
}

CreateInput holds parameters for creating a new Geo site.

type EditInput

type EditInput struct {
	ID                               int64     `json:"id"                                           jsonschema:"Numeric ID of the Geo site,required"`
	Enabled                          *bool     `json:"enabled,omitempty"                            jsonschema:"Whether the site is enabled"`
	Name                             *string   `json:"name,omitempty"                               jsonschema:"Unique name of the Geo site"`
	URL                              *string   `json:"url,omitempty"                                jsonschema:"External URL of the Geo site"`
	InternalURL                      *string   `json:"internal_url,omitempty"                       jsonschema:"Internal URL of the Geo site"`
	FilesMaxCapacity                 *int64    `json:"files_max_capacity,omitempty"                 jsonschema:"Max number of LFS/attachment backfill downloads"`
	ReposMaxCapacity                 *int64    `json:"repos_max_capacity,omitempty"                 jsonschema:"Max number of concurrent repository backfill syncs"`
	VerificationMaxCapacity          *int64    `json:"verification_max_capacity,omitempty"          jsonschema:"Max number of concurrent verification jobs"`
	ContainerRepositoriesMaxCapacity *int64    `json:"container_repositories_max_capacity,omitempty" jsonschema:"Max number of concurrent container repository syncs"`
	SelectiveSyncType                *string   `json:"selective_sync_type,omitempty"                jsonschema:"Selective sync type: namespaces or shards"`
	SelectiveSyncShards              *[]string `json:"selective_sync_shards,omitempty"              jsonschema:"Storage shards to sync"`
	SelectiveSyncNamespaceIDs        *[]int64  `json:"selective_sync_namespace_ids,omitempty"       jsonschema:"Namespace IDs to sync"`
	MinimumReverificationInterval    *int64    `json:"minimum_reverification_interval,omitempty"    jsonschema:"Minimum interval (days) before re-verification"`
}

EditInput holds parameters for editing an existing Geo site.

type IDInput

type IDInput struct {
	ID int64 `json:"id" jsonschema:"Numeric ID of the Geo site,required"`
}

IDInput holds a Geo site ID for get/delete/repair operations.

type ListInput

type ListInput struct {
	toolutil.PaginationInput
}

ListInput holds pagination parameters for listing Geo sites.

type ListOutput

type ListOutput struct {
	toolutil.HintableOutput
	Sites      []Output                  `json:"sites"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

ListOutput represents a paginated list of Geo sites.

func List

func List(ctx context.Context, client *gitlabclient.Client, in ListInput) (ListOutput, error)

List retrieves all Geo sites.

type ListStatusInput

type ListStatusInput struct {
	toolutil.PaginationInput
}

ListStatusInput holds pagination parameters for listing all Geo site statuses.

type ListStatusOutput

type ListStatusOutput struct {
	toolutil.HintableOutput
	Statuses   []StatusOutput            `json:"statuses"`
	Pagination toolutil.PaginationOutput `json:"pagination"`
}

ListStatusOutput represents a paginated list of Geo site statuses.

func ListStatus

ListStatus retrieves the replication status of all Geo sites.

type Output

type Output struct {
	toolutil.HintableOutput
	ID                               int64    `json:"id"`
	Name                             string   `json:"name"`
	URL                              string   `json:"url"`
	InternalURL                      string   `json:"internal_url,omitempty"`
	Primary                          bool     `json:"primary"`
	Enabled                          bool     `json:"enabled"`
	Current                          bool     `json:"current"`
	FilesMaxCapacity                 int64    `json:"files_max_capacity"`
	ReposMaxCapacity                 int64    `json:"repos_max_capacity"`
	VerificationMaxCapacity          int64    `json:"verification_max_capacity"`
	ContainerRepositoriesMaxCapacity int64    `json:"container_repositories_max_capacity"`
	SelectiveSyncType                string   `json:"selective_sync_type,omitempty"`
	SelectiveSyncShards              []string `json:"selective_sync_shards,omitempty"`
	SelectiveSyncNamespaceIDs        []int64  `json:"selective_sync_namespace_ids,omitempty"`
	MinimumReverificationInterval    int64    `json:"minimum_reverification_interval"`
	SyncObjectStorage                bool     `json:"sync_object_storage"`
	WebEditURL                       string   `json:"web_edit_url,omitempty"`
}

Output represents a single Geo site.

func Create

func Create(ctx context.Context, client *gitlabclient.Client, in CreateInput) (Output, error)

Create creates a new Geo site.

func Edit

func Edit(ctx context.Context, client *gitlabclient.Client, in EditInput) (Output, error)

Edit updates an existing Geo site.

func Get

func Get(ctx context.Context, client *gitlabclient.Client, in IDInput) (Output, error)

Get retrieves a specific Geo site by ID.

func Repair

func Repair(ctx context.Context, client *gitlabclient.Client, in IDInput) (Output, error)

Repair triggers OAuth repair for a Geo site.

type StatusOutput

type StatusOutput struct {
	toolutil.HintableOutput
	GeoNodeID                      int64     `json:"geo_node_id"`
	Healthy                        bool      `json:"healthy"`
	Health                         string    `json:"health"`
	HealthStatus                   string    `json:"health_status"`
	MissingOAuthApplication        bool      `json:"missing_oauth_application"`
	DBReplicationLagSeconds        int64     `json:"db_replication_lag_seconds"`
	ProjectsCount                  int64     `json:"projects_count"`
	LFSObjectsSyncedInPercentage   string    `json:"lfs_objects_synced_in_percentage"`
	JobArtifactsSyncedInPercentage string    `json:"job_artifacts_synced_in_percentage"`
	UploadsSyncedInPercentage      string    `json:"uploads_synced_in_percentage"`
	Version                        string    `json:"version"`
	Revision                       string    `json:"revision"`
	StorageShardsMatch             bool      `json:"storage_shards_match"`
	UpdatedAt                      time.Time `json:"updated_at"`
}

StatusOutput represents the status of a Geo site (summary fields).

func GetStatus

func GetStatus(ctx context.Context, client *gitlabclient.Client, in IDInput) (StatusOutput, error)

GetStatus retrieves the replication status of a specific Geo site.

Jump to

Keyboard shortcuts

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