Geo Nodes API

原文:https://docs.gitlab.com/ee/api/geo_nodes.html

Geo Nodes API

为了与地理节点端点进行交互,您需要以管理员身份进行身份验证.

Create a new Geo node

创建一个新的地理节点.

POST /geo_nodes 
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes" \
     --request POST \
     -d "name=himynameissomething" \
     -d "url=https://another-node.example.com/" 
Attribute Type Required Description
primary boolean no 指定此节点是否为主节点. 默认为 false.
enabled boolean no 指示是否启用地理节点的标志. 默认为 true.
name string yes 地理节点的唯一标识符. 必须匹配geo_node_name如果在设定gitlab.rb ,否则必须匹配external_url
url string yes Geo 节点的面向用户的 URL.
internal_url string no 在主节点上定义的 URL,辅助节点应使用该 URL 与之联系. 如果未设置,则返回url .
files_max_capacity integer no 控制此辅助节点的 LFS /附件回填的最大并发性. 默认为 10
repos_max_capacity integer no 控制此辅助节点的存储库回填的最大并发性. 默认为 25.
verification_max_capacity integer no 控制此节点的存储库验证的最大并发性. 默认为 100.
container_repositories_max_capacity integer no 控制此节点的容器存储库同步的最大并发性. 默认为 10
sync_object_storage boolean no 指示辅助 Geo 节点是否将复制对象存储中的 Blob 的标志. 默认为 false.
selective_sync_type string no Limit syncing to only specific groups or shards. Valid values: "namespaces", "shards", or null.
selective_sync_shards array no 如果selective_sync_type == shards ,则同步项目的存储库存储.
selective_sync_namespace_ids array no 如果selective_sync_type == namespaces ,则应同步的组的 ID.
minimum_reverification_interval integer no 存储库验证有效的时间间隔(以天为单位). 一旦过期,它将被重新验证. 在辅助节点上进行设置时,这无效.

响应示例:

{  "id":  3,  "name":  "Test Node 1",  "url":  "https://secondary.example.com/",  "internal_url":  "https://secondary.example.com/",  "primary":  false,  "enabled":  true,  "current":  false,  "files_max_capacity":  10,  "repos_max_capacity":  25,  "verification_max_capacity":  100,  "selective_sync_type":  "namespaces",  "selective_sync_shards":  [],  "selective_sync_namespace_ids":  [1,  25],  "minimum_reverification_interval":  7,  "container_repositories_max_capacity":  10,  "sync_object_storage":  false,  "clone_protocol":  "http",  "web_edit_url":  "https://primary.example.com/admin/geo/nodes/3/edit",  "web_geo_projects_url":  "http://secondary.example.com/admin/geo/projects",  "_links":  {  "self":  "https://primary.example.com/api/v4/geo_nodes/3",  "status":  "https://primary.example.com/api/v4/geo_nodes/3/status",  "repair":  "https://primary.example.com/api/v4/geo_nodes/3/repair"  }  } 

Retrieve configuration about all Geo nodes

GET /geo_nodes 
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes" 

响应示例:

[  {  "id":  1,  "name":  "us-node",  "url":  "https://primary.example.com/",  "internal_url":  "https://internal.example.com/",  "primary":  true,  "enabled":  true,  "current":  true,  "files_max_capacity":  10,  "repos_max_capacity":  25,  "container_repositories_max_capacity":  10,  "verification_max_capacity":  100,  "selective_sync_type":  "namespaces",  "selective_sync_shards":  [],  "selective_sync_namespace_ids":  [1,  25],  "minimum_reverification_interval":  7,  "clone_protocol":  "http",  "web_edit_url":  "https://primary.example.com/admin/geo/nodes/1/edit",  "_links":  {  "self":  "https://primary.example.com/api/v4/geo_nodes/1",  "status":"https://primary.example.com/api/v4/geo_nodes/1/status",  "repair":"https://primary.example.com/api/v4/geo_nodes/1/repair"  }  },  {  "id":  2,  "name":  "cn-node",  "url":  "https://secondary.example.com/",  "internal_url":  "https://secondary.example.com/",  "primary":  false,  "enabled":  true,  "current":  false,  "files_max_capacity":  10,  "repos_max_capacity":  25,  "container_repositories_max_capacity":  10,  "verification_max_capacity":  100,  "selective_sync_type":  "namespaces",  "selective_sync_shards":  [],  "selective_sync_namespace_ids":  [1,  25],  "minimum_reverification_interval":  7,  "sync_object_storage":  true,  "clone_protocol":  "http",  "web_edit_url":  "https://primary.example.com/admin/geo/nodes/2/edit",  "web_geo_projects_url":  "https://secondary.example.com/admin/geo/projects",  "_links":  {  "self":"https://primary.example.com/api/v4/geo_nodes/2",  "status":"https://primary.example.com/api/v4/geo_nodes/2/status",  "repair":"https://primary.example.com/api/v4/geo_nodes/2/repair"  }  }  ] 

Retrieve configuration about a specific Geo node

GET /geo_nodes/:id 
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes/1" 

响应示例:

{  "id":  1,  "name":  "us-node",  "url":  "https://primary.example.com/",  "internal_url":  "https://primary.example.com/",  "primary":  true,  "enabled":  true,  "current":  true,  "files_max_capacity":  10,  "repos_max_capacity":  25,  "container_repositories_max_capacity":  10,  "verification_max_capacity":  100,  "selective_sync_type":  "namespaces",  "selective_sync_shards":  [],  "selective_sync_namespace_ids":  [1,  25],  "minimum_reverification_interval":  7,  "clone_protocol":  "http",  "web_edit_url":  "https://primary.example.com/admin/geo/nodes/1/edit",  "_links":  {  "self":  "https://primary.example.com/api/v4/geo_nodes/1",  "status":"https://primary.example.com/api/v4/geo_nodes/1/status",  "repair":"https://primary.example.com/api/v4/geo_nodes/1/repair"  }  } 

Edit a Geo node

更新现有地理节点的设置.

这只能在主要的地理节点上运行.

PUT /geo_nodes/:id 
Attribute Type Required Description
id integer yes 地理位置节点的 ID.
enabled boolean no 指示是否启用地理节点的标志.
name string yes 地理节点的唯一标识符. 必须匹配geo_node_name如果在设定gitlab.rb ,否则必须匹配external_url .
url string yes Geo 节点的面向用户的 URL.
internal_url string no 在主节点上定义的 URL,辅助节点应使用该 URL 与之联系. 如果未设置,则返回url .
files_max_capacity integer no 控制此辅助节点的 LFS /附件回填的最大并发性.
repos_max_capacity integer no 控制此辅助节点的存储库回填的最大并发性.
verification_max_capacity integer no 控制此节点的最大并发验证.
container_repositories_max_capacity integer no 控制此节点的容器存储库同步的最大并发性.
sync_object_storage boolean no 指示辅助 Geo 节点是否将复制对象存储中的 Blob 的标志.
selective_sync_type string no 将同步限制为仅特定的组或碎片. 有效值: "namespaces""shards"null .
selective_sync_shards array no 如果selective_sync_type == shards ,则同步项目的存储库存储.
selective_sync_namespace_ids array no 如果selective_sync_type == namespaces ,则应同步的组的 ID.
minimum_reverification_interval integer no 存储库验证有效的时间间隔(以天为单位). 一旦过期,它将被重新验证. 在辅助节点上进行设置时,这无效.

响应示例:

{  "id":  1,  "name":  "cn-node",  "url":  "https://secondary.example.com/",  "internal_url":  "https://secondary.example.com/",  "primary":  false,  "enabled":  true,  "current":  true,  "files_max_capacity":  10,  "repos_max_capacity":  25,  "container_repositories_max_capacity":  10,  "verification_max_capacity":  100,  "selective_sync_type":  "namespaces",  "selective_sync_shards":  [],  "selective_sync_namespace_ids":  [1,  25],  "minimum_reverification_interval":  7,  "sync_object_storage":  true,  "clone_protocol":  "http",  "web_edit_url":  "https://primary.example.com/admin/geo/nodes/2/edit",  "web_geo_projects_url":  "https://secondary.example.com/admin/geo/projects",  "_links":  {  "self":"https://primary.example.com/api/v4/geo_nodes/2",  "status":"https://primary.example.com/api/v4/geo_nodes/2/status",  "repair":"https://primary.example.com/api/v4/geo_nodes/2/repair"  }  } 

Delete a Geo node

删除地理节点.

注意:只有 Geo 主节点将接受此请求.

DELETE /geo_nodes/:id 
Attribute Type Required Description
id integer yes 地理位置节点的 ID.

Repair a Geo node

修复地理节点的 OAuth 身份验证.

这只能在主要的地理节点上运行.

POST /geo_nodes/:id/repair 

响应示例:

{  "id":  1,  "name":  "us-node",  "url":  "https://primary.example.com/",  "internal_url":  "https://primary.example.com/",  "primary":  true,  "enabled":  true,  "current":  true,  "files_max_capacity":  10,  "repos_max_capacity":  25,  "container_repositories_max_capacity":  10,  "verification_max_capacity":  100,  "clone_protocol":  "http",  "web_edit_url":  "https://primary.example.com/admin/geo/nodes/1/edit",  "_links":  {  "self":  "https://primary.example.com/api/v4/geo_nodes/1",  "status":"https://primary.example.com/api/v4/geo_nodes/1/status",  "repair":"https://primary.example.com/api/v4/geo_nodes/1/repair"  }  } 

Retrieve status about all Geo nodes

GET /geo_nodes/status 
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes/status" 

响应示例:

[  {  "geo_node_id":  1,  "healthy":  true,  "health":  "Healthy",  "health_status":  "Healthy",  "missing_oauth_application":  false,  "attachments_count":  1,  "attachments_synced_count":  nil,  "attachments_failed_count":  nil,  "attachments_synced_missing_on_primary_count":  0,  "attachments_synced_in_percentage":  "0.00%",  "db_replication_lag_seconds":  nil,  "lfs_objects_count":  0,  "lfs_objects_synced_count":  nil,  "lfs_objects_failed_count":  nil,  "lfs_objects_synced_missing_on_primary_count":  0,  "lfs_objects_synced_in_percentage":  "0.00%",  "job_artifacts_count":  2,  "job_artifacts_synced_count":  nil,  "job_artifacts_failed_count":  nil,  "job_artifacts_synced_missing_on_primary_count":  0,  "job_artifacts_synced_in_percentage":  "0.00%",  "container_repositories_count":  3,  "container_repositories_synced_count":  nil,  "container_repositories_failed_count":  nil,  "container_repositories_synced_in_percentage":  "0.00%",  "design_repositories_count":  3,  "design_repositories_synced_count":  nil,  "design_repositories_failed_count":  nil,  "design_repositories_synced_in_percentage":  "0.00%",  "projects_count":  41,  "repositories_failed_count":  nil,  "repositories_synced_count":  nil,  "repositories_synced_in_percentage":  "0.00%",  "wikis_failed_count":  nil,  "wikis_synced_count":  nil,  "wikis_synced_in_percentage":  "0.00%",  "replication_slots_count":  1,  "replication_slots_used_count":  1,  "replication_slots_used_in_percentage":  "100.00%",  "replication_slots_max_retained_wal_bytes":  0,  "repositories_checked_count":  20,  "repositories_checked_failed_count":  20,  "repositories_checked_in_percentage":  "100.00%",  "repositories_checksummed_count":  20,  "repositories_checksum_failed_count":  5,  "repositories_checksummed_in_percentage":  "48.78%",  "wikis_checksummed_count":  10,  "wikis_checksum_failed_count":  3,  "wikis_checksummed_in_percentage":  "24.39%",  "repositories_verified_count":  20,  "repositories_verification_failed_count":  5,  "repositories_verified_in_percentage":  "48.78%",  "repositories_checksum_mismatch_count":  3,  "wikis_verified_count":  10,  "wikis_verification_failed_count":  3,  "wikis_verified_in_percentage":  "24.39%",  "wikis_checksum_mismatch_count":  1,  "repositories_retrying_verification_count":  1,  "wikis_retrying_verification_count":  3,  "repositories_checked_count":  7,  "repositories_checked_failed_count":  2,  "repositories_checked_in_percentage":  "17.07%",  "last_event_id":  23,  "last_event_timestamp":  1509681166,  "cursor_last_event_id":  nil,  "cursor_last_event_timestamp":  0,  "last_successful_status_check_timestamp":  1510125024,  "version":  "10.3.0",  "revision":  "33d33a096a",  "package_files_count":  10,  "package_files_checksummed_count":  10,  "package_files_checksum_failed_count":  0,  "package_files_registry_count":  10,  "package_files_synced_count":  6,  "package_files_failed_count":  3  },  {  "geo_node_id":  2,  "healthy":  true,  "health":  "Healthy",  "health_status":  "Healthy",  "missing_oauth_application":  false,  "attachments_count":  1,  "attachments_synced_count":  1,  "attachments_failed_count":  0,  "attachments_synced_missing_on_primary_count":  0,  "attachments_synced_in_percentage":  "100.00%",  "db_replication_lag_seconds":  0,  "lfs_objects_count":  0,  "lfs_objects_synced_count":  0,  "lfs_objects_failed_count":  0,  "lfs_objects_synced_missing_on_primary_count":  0,  "lfs_objects_synced_in_percentage":  "0.00%",  "job_artifacts_count":  2,  "job_artifacts_synced_count":  1,  "job_artifacts_failed_count":  1,  "job_artifacts_synced_missing_on_primary_count":  0,  "job_artifacts_synced_in_percentage":  "50.00%",  "container_repositories_count":  3,  "container_repositories_synced_count":  nil,  "container_repositories_failed_count":  nil,  "container_repositories_synced_in_percentage":  "0.00%",  "design_repositories_count":  3,  "design_repositories_synced_count":  nil,  "design_repositories_failed_count":  nil,  "design_repositories_synced_in_percentage":  "0.00%",  "projects_count":  41,  "repositories_failed_count":  1,  "repositories_synced_count":  40,  "repositories_synced_in_percentage":  "97.56%",  "wikis_failed_count":  0,  "wikis_synced_count":  41,  "wikis_synced_in_percentage":  "100.00%",  "replication_slots_count":  nil,  "replication_slots_used_count":  nil,  "replication_slots_used_in_percentage":  "0.00%",  "replication_slots_max_retained_wal_bytes":  nil,  "repositories_checksummed_count":  20,  "repositories_checksum_failed_count":  5,  "repositories_checksummed_in_percentage":  "48.78%",  "wikis_checksummed_count":  10,  "wikis_checksum_failed_count":  3,  "wikis_checksummed_in_percentage":  "24.39%",  "repositories_verified_count":  20,  "repositories_verification_failed_count":  5,  "repositories_verified_in_percentage":  "48.78%",  "repositories_checksum_mismatch_count":  3,  "wikis_verified_count":  10,  "wikis_verification_failed_count":  3,  "wikis_verified_in_percentage":  "24.39%",  "wikis_checksum_mismatch_count":  1,  "repositories_retrying_verification_count":  4,  "wikis_retrying_verification_count":  2,  "repositories_checked_count":  5,  "repositories_checked_failed_count":  1,  "repositories_checked_in_percentage":  "12.20%",  "last_event_id":  23,  "last_event_timestamp":  1509681166,  "cursor_last_event_id":  23,  "cursor_last_event_timestamp":  1509681166,  "last_successful_status_check_timestamp":  1510125024,  "version":  "10.3.0",  "revision":  "33d33a096a",  "package_files_count":  10,  "package_files_checksummed_count":  10,  "package_files_checksum_failed_count":  0,  "package_files_registry_count":  10,  "package_files_synced_count":  6,  "package_files_failed_count":  3  }  ] 

注意:在 GitLab 12.0 中,已弃用的字段wikis_countrepositories_count被删除. 请改用projects_count .

Retrieve status about a specific Geo node

GET /geo_nodes/:id/status 
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes/2/status" 

响应示例:

{  "geo_node_id":  2,  "healthy":  true,  "health":  "Healthy",  "health_status":  "Healthy",  "missing_oauth_application":  false,  "attachments_count":  1,  "attachments_synced_count":  1,  "attachments_failed_count":  0,  "attachments_synced_missing_on_primary_count":  0,  "attachments_synced_in_percentage":  "100.00%",  "db_replication_lag_seconds":  0,  "lfs_objects_count":  0,  "lfs_objects_synced_count":  0,  "lfs_objects_failed_count":  0,  "lfs_objects_synced_missing_on_primary_count":  0,  "lfs_objects_synced_in_percentage":  "0.00%",  "job_artifacts_count":  2,  "job_artifacts_synced_count":  1,  "job_artifacts_failed_count":  1,  "job_artifacts_synced_missing_on_primary_count":  0,  "job_artifacts_synced_in_percentage":  "50.00%",  "container_repositories_count":  3,  "container_repositories_synced_count":  nil,  "container_repositories_failed_count":  nil,  "container_repositories_synced_in_percentage":  "0.00%",  "design_repositories_count":  3,  "design_repositories_synced_count":  nil,  "design_repositories_failed_count":  nil,  "design_repositories_synced_in_percentage":  "0.00%",  "projects_count":  41,  "repositories_failed_count":  1,  "repositories_synced_count":  40,  "repositories_synced_in_percentage":  "97.56%",  "wikis_failed_count":  0,  "wikis_synced_count":  41,  "wikis_synced_in_percentage":  "100.00%",  "replication_slots_count":  nil,  "replication_slots_used_count":  nil,  "replication_slots_used_in_percentage":  "0.00%",  "replication_slots_max_retained_wal_bytes":  nil,  "last_event_id":  23,  "last_event_timestamp":  1509681166,  "cursor_last_event_id":  23,  "cursor_last_event_timestamp":  1509681166,  "last_successful_status_check_timestamp":  1510125268,  "version":  "10.3.0",  "revision":  "33d33a096a"  } 

注意: health_status参数只能处于"健康"或"不健康"状态,而health参数可以为空,"健康"或包含实际错误消息.

注意:在 GitLab 12.0 中,已弃用的字段wikis_countrepositories_count被删除. 请改用projects_count .

Retrieve project sync or verification failures that occurred on the current node

这仅适用于辅助节点.

GET /geo_nodes/current/failures 
Attribute Type Required Description
type string no 失败对象的类型( repository / wiki
failure_type string no 故障类型( sync / checksum_mismatch / verification

该端点使用分页 .

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/geo_nodes/current/failures" 

响应示例:

[  {  "project_id":  3,  "last_repository_synced_at":  "2017-10-31 14:25:55 UTC",  "last_repository_successful_sync_at":  "2017-10-31 14:26:04 UTC",  "last_wiki_synced_at":  "2017-10-31 14:26:04 UTC",  "last_wiki_successful_sync_at":  "2017-10-31 14:26:11 UTC",  "repository_retry_count":  null,  "wiki_retry_count":  1,  "last_repository_sync_failure":  null,  "last_wiki_sync_failure":  "Error syncing Wiki repository",  "last_repository_verification_failure":  "",  "last_wiki_verification_failure":  "",  "repository_verification_checksum_sha":  "da39a3ee5e6b4b0d32e5bfef9a601890afd80709",  "wiki_verification_checksum_sha":  "da39a3ee5e6b4b0d3255bfef9ef0189aafd80709",  "repository_checksum_mismatch":  false,  "wiki_checksum_mismatch":  false  }  ] 
Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2021-03-27 13:48:25

results matching ""

    No results matching ""