...

Source file src/github.com/xanzy/go-gitlab/geo_nodes.go

Documentation: github.com/xanzy/go-gitlab

     1  //
     2  // Copyright 2021, Sander van Harmelen
     3  //
     4  // Licensed under the Apache License, Version 2.0 (the "License");
     5  // you may not use this file except in compliance with the License.
     6  // You may obtain a copy of the License at
     7  //
     8  //     http://www.apache.org/licenses/LICENSE-2.0
     9  //
    10  // Unless required by applicable law or agreed to in writing, software
    11  // distributed under the License is distributed on an "AS IS" BASIS,
    12  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  // See the License for the specific language governing permissions and
    14  // limitations under the License.
    15  //
    16  
    17  package gitlab
    18  
    19  import (
    20  	"fmt"
    21  	"net/http"
    22  )
    23  
    24  // GeoNode represents a GitLab Geo Node.
    25  //
    26  // GitLab API docs: https://docs.gitlab.com/ee/api/geo_nodes.html
    27  type GeoNode struct {
    28  	ID                               int          `json:"id"`
    29  	Name                             string       `json:"name"`
    30  	URL                              string       `json:"url"`
    31  	InternalURL                      string       `json:"internal_url"`
    32  	Primary                          bool         `json:"primary"`
    33  	Enabled                          bool         `json:"enabled"`
    34  	Current                          bool         `json:"current"`
    35  	FilesMaxCapacity                 int          `json:"files_max_capacity"`
    36  	ReposMaxCapacity                 int          `json:"repos_max_capacity"`
    37  	VerificationMaxCapacity          int          `json:"verification_max_capacity"`
    38  	SelectiveSyncType                string       `json:"selective_sync_type"`
    39  	SelectiveSyncShards              []string     `json:"selective_sync_shards"`
    40  	SelectiveSyncNamespaceIds        []int        `json:"selective_sync_namespace_ids"`
    41  	MinimumReverificationInterval    int          `json:"minimum_reverification_interval"`
    42  	ContainerRepositoriesMaxCapacity int          `json:"container_repositories_max_capacity"`
    43  	SyncObjectStorage                bool         `json:"sync_object_storage"`
    44  	CloneProtocol                    string       `json:"clone_protocol"`
    45  	WebEditURL                       string       `json:"web_edit_url"`
    46  	WebGeoProjectsURL                string       `json:"web_geo_projects_url"`
    47  	Links                            GeoNodeLinks `json:"_links"`
    48  }
    49  
    50  // GeoNodeLinks represents links for GitLab GeoNode.
    51  //
    52  // GitLab API docs: https://docs.gitlab.com/ee/api/geo_nodes.html
    53  type GeoNodeLinks struct {
    54  	Self   string `json:"self"`
    55  	Status string `json:"status"`
    56  	Repair string `json:"repair"`
    57  }
    58  
    59  // GeoNodesService handles communication with Geo Nodes related methods
    60  // of GitLab API.
    61  //
    62  // GitLab API docs: https://docs.gitlab.com/ee/api/geo_nodes.html
    63  type GeoNodesService struct {
    64  	client *Client
    65  }
    66  
    67  // CreateGeoNodesOptions represents the available CreateGeoNode() options.
    68  //
    69  // GitLab API docs:
    70  // https://docs.gitlab.com/ee/api/geo_nodes.html#create-a-new-geo-node
    71  type CreateGeoNodesOptions struct {
    72  	Primary                          *bool     `url:"primary,omitempty" json:"primary,omitempty"`
    73  	Enabled                          *bool     `url:"enabled,omitempty" json:"enabled,omitempty"`
    74  	Name                             *string   `url:"name,omitempty" json:"name,omitempty"`
    75  	URL                              *string   `url:"url,omitempty" json:"url,omitempty"`
    76  	InternalURL                      *string   `url:"internal_url,omitempty" json:"internal_url,omitempty"`
    77  	FilesMaxCapacity                 *int      `url:"files_max_capacity,omitempty" json:"files_max_capacity,omitempty"`
    78  	ReposMaxCapacity                 *int      `url:"repos_max_capacity,omitempty" json:"repos_max_capacity,omitempty"`
    79  	VerificationMaxCapacity          *int      `url:"verification_max_capacity,omitempty" json:"verification_max_capacity,omitempty"`
    80  	ContainerRepositoriesMaxCapacity *int      `url:"container_repositories_max_capacity,omitempty" json:"container_repositories_max_capacity,omitempty"`
    81  	SyncObjectStorage                *bool     `url:"sync_object_storage,omitempty" json:"sync_object_storage,omitempty"`
    82  	SelectiveSyncType                *string   `url:"selective_sync_type,omitempty" json:"selective_sync_type,omitempty"`
    83  	SelectiveSyncShards              *[]string `url:"selective_sync_shards,omitempty" json:"selective_sync_shards,omitempty"`
    84  	SelectiveSyncNamespaceIds        *[]int    `url:"selective_sync_namespace_ids,omitempty" json:"selective_sync_namespace_ids,omitempty"`
    85  	MinimumReverificationInterval    *int      `url:"minimum_reverification_interval,omitempty" json:"minimum_reverification_interval,omitempty"`
    86  }
    87  
    88  // CreateGeoNode creates a new Geo Node.
    89  //
    90  // GitLab API docs:
    91  // https://docs.gitlab.com/ee/api/geo_nodes.html#create-a-new-geo-node
    92  func (s *GeoNodesService) CreateGeoNode(opt *CreateGeoNodesOptions, options ...RequestOptionFunc) (*GeoNode, *Response, error) {
    93  	req, err := s.client.NewRequest(http.MethodPost, "geo_nodes", opt, options)
    94  	if err != nil {
    95  		return nil, nil, err
    96  	}
    97  
    98  	g := new(GeoNode)
    99  	resp, err := s.client.Do(req, g)
   100  	if err != nil {
   101  		return nil, resp, err
   102  	}
   103  
   104  	return g, resp, nil
   105  }
   106  
   107  // ListGeoNodesOptions represents the available ListGeoNodes() options.
   108  //
   109  // GitLab API docs:
   110  // https://docs.gitlab.com/ee/api/geo_nodes.html#retrieve-configuration-about-all-geo-nodes
   111  type ListGeoNodesOptions ListOptions
   112  
   113  // ListGeoNodes gets a list of geo nodes.
   114  //
   115  // GitLab API docs:
   116  // https://docs.gitlab.com/ee/api/geo_nodes.html#retrieve-configuration-about-all-geo-nodes
   117  func (s *GeoNodesService) ListGeoNodes(opt *ListGeoNodesOptions, options ...RequestOptionFunc) ([]*GeoNode, *Response, error) {
   118  	req, err := s.client.NewRequest(http.MethodGet, "geo_nodes", opt, options)
   119  	if err != nil {
   120  		return nil, nil, err
   121  	}
   122  
   123  	var gs []*GeoNode
   124  	resp, err := s.client.Do(req, &gs)
   125  	if err != nil {
   126  		return nil, resp, err
   127  	}
   128  
   129  	return gs, resp, nil
   130  }
   131  
   132  // GetGeoNode gets a specific geo node.
   133  //
   134  // GitLab API docs:
   135  // https://docs.gitlab.com/ee/api/geo_nodes.html#retrieve-configuration-about-a-specific-geo-node
   136  func (s *GeoNodesService) GetGeoNode(id int, options ...RequestOptionFunc) (*GeoNode, *Response, error) {
   137  	u := fmt.Sprintf("geo_nodes/%d", id)
   138  
   139  	req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
   140  	if err != nil {
   141  		return nil, nil, err
   142  	}
   143  
   144  	g := new(GeoNode)
   145  	resp, err := s.client.Do(req, g)
   146  	if err != nil {
   147  		return nil, resp, err
   148  	}
   149  
   150  	return g, resp, nil
   151  }
   152  
   153  // UpdateGeoNodesOptions represents the available EditGeoNode() options.
   154  //
   155  // GitLab API docs:
   156  // https://docs.gitlab.com/ee/api/geo_nodes.html#edit-a-geo-node
   157  type UpdateGeoNodesOptions struct {
   158  	ID                               *int      `url:"primary,omitempty" json:"primary,omitempty"`
   159  	Enabled                          *bool     `url:"enabled,omitempty" json:"enabled,omitempty"`
   160  	Name                             *string   `url:"name,omitempty" json:"name,omitempty"`
   161  	URL                              *string   `url:"url,omitempty" json:"url,omitempty"`
   162  	InternalURL                      *string   `url:"internal_url,omitempty" json:"internal_url,omitempty"`
   163  	FilesMaxCapacity                 *int      `url:"files_max_capacity,omitempty" json:"files_max_capacity,omitempty"`
   164  	ReposMaxCapacity                 *int      `url:"repos_max_capacity,omitempty" json:"repos_max_capacity,omitempty"`
   165  	VerificationMaxCapacity          *int      `url:"verification_max_capacity,omitempty" json:"verification_max_capacity,omitempty"`
   166  	ContainerRepositoriesMaxCapacity *int      `url:"container_repositories_max_capacity,omitempty" json:"container_repositories_max_capacity,omitempty"`
   167  	SyncObjectStorage                *bool     `url:"sync_object_storage,omitempty" json:"sync_object_storage,omitempty"`
   168  	SelectiveSyncType                *string   `url:"selective_sync_type,omitempty" json:"selective_sync_type,omitempty"`
   169  	SelectiveSyncShards              *[]string `url:"selective_sync_shards,omitempty" json:"selective_sync_shards,omitempty"`
   170  	SelectiveSyncNamespaceIds        *[]int    `url:"selective_sync_namespace_ids,omitempty" json:"selective_sync_namespace_ids,omitempty"`
   171  	MinimumReverificationInterval    *int      `url:"minimum_reverification_interval,omitempty" json:"minimum_reverification_interval,omitempty"`
   172  }
   173  
   174  // EditGeoNode updates settings of an existing Geo node.
   175  //
   176  // GitLab API docs:
   177  // https://docs.gitlab.com/ee/api/geo_nodes.html#edit-a-geo-node
   178  func (s *GeoNodesService) EditGeoNode(id int, opt *UpdateGeoNodesOptions, options ...RequestOptionFunc) (*GeoNode, *Response, error) {
   179  	u := fmt.Sprintf("geo_nodes/%d", id)
   180  
   181  	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
   182  	if err != nil {
   183  		return nil, nil, err
   184  	}
   185  
   186  	g := new(GeoNode)
   187  	resp, err := s.client.Do(req, g)
   188  	if err != nil {
   189  		return nil, resp, err
   190  	}
   191  
   192  	return g, resp, nil
   193  }
   194  
   195  // DeleteGeoNode removes the Geo node.
   196  //
   197  // GitLab API docs:
   198  // https://docs.gitlab.com/ee/api/geo_nodes.html#delete-a-geo-node
   199  func (s *GeoNodesService) DeleteGeoNode(id int, options ...RequestOptionFunc) (*Response, error) {
   200  	u := fmt.Sprintf("geo_nodes/%d", id)
   201  
   202  	req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
   203  	if err != nil {
   204  		return nil, err
   205  	}
   206  
   207  	return s.client.Do(req, nil)
   208  }
   209  
   210  // RepairGeoNode to repair the OAuth authentication of a Geo node.
   211  //
   212  // GitLab API docs:
   213  // https://docs.gitlab.com/ee/api/geo_nodes.html#repair-a-geo-node
   214  func (s *GeoNodesService) RepairGeoNode(id int, options ...RequestOptionFunc) (*GeoNode, *Response, error) {
   215  	u := fmt.Sprintf("geo_nodes/%d/repair", id)
   216  
   217  	req, err := s.client.NewRequest(http.MethodPost, u, nil, options)
   218  	if err != nil {
   219  		return nil, nil, err
   220  	}
   221  
   222  	g := new(GeoNode)
   223  	resp, err := s.client.Do(req, g)
   224  	if err != nil {
   225  		return nil, resp, err
   226  	}
   227  
   228  	return g, resp, nil
   229  }
   230  
   231  // GeoNodeStatus represents the status of Geo Node.
   232  //
   233  // GitLab API docs:
   234  // https://docs.gitlab.com/ee/api/geo_nodes.html#retrieve-status-about-all-geo-nodes
   235  type GeoNodeStatus struct {
   236  	GeoNodeID                                     int    `json:"geo_node_id"`
   237  	Healthy                                       bool   `json:"healthy"`
   238  	Health                                        string `json:"health"`
   239  	HealthStatus                                  string `json:"health_status"`
   240  	MissingOauthApplication                       bool   `json:"missing_oauth_application"`
   241  	AttachmentsCount                              int    `json:"attachments_count"`
   242  	AttachmentsSyncedCount                        int    `json:"attachments_synced_count"`
   243  	AttachmentsFailedCount                        int    `json:"attachments_failed_count"`
   244  	AttachmentsSyncedMissingOnPrimaryCount        int    `json:"attachments_synced_missing_on_primary_count"`
   245  	AttachmentsSyncedInPercentage                 string `json:"attachments_synced_in_percentage"`
   246  	DbReplicationLagSeconds                       int    `json:"db_replication_lag_seconds"`
   247  	LfsObjectsCount                               int    `json:"lfs_objects_count"`
   248  	LfsObjectsSyncedCount                         int    `json:"lfs_objects_synced_count"`
   249  	LfsObjectsFailedCount                         int    `json:"lfs_objects_failed_count"`
   250  	LfsObjectsSyncedMissingOnPrimaryCount         int    `json:"lfs_objects_synced_missing_on_primary_count"`
   251  	LfsObjectsSyncedInPercentage                  string `json:"lfs_objects_synced_in_percentage"`
   252  	JobArtifactsCount                             int    `json:"job_artifacts_count"`
   253  	JobArtifactsSyncedCount                       int    `json:"job_artifacts_synced_count"`
   254  	JobArtifactsFailedCount                       int    `json:"job_artifacts_failed_count"`
   255  	JobArtifactsSyncedMissingOnPrimaryCount       int    `json:"job_artifacts_synced_missing_on_primary_count"`
   256  	JobArtifactsSyncedInPercentage                string `json:"job_artifacts_synced_in_percentage"`
   257  	ContainerRepositoriesCount                    int    `json:"container_repositories_count"`
   258  	ContainerRepositoriesSyncedCount              int    `json:"container_repositories_synced_count"`
   259  	ContainerRepositoriesFailedCount              int    `json:"container_repositories_failed_count"`
   260  	ContainerRepositoriesSyncedInPercentage       string `json:"container_repositories_synced_in_percentage"`
   261  	DesignRepositoriesCount                       int    `json:"design_repositories_count"`
   262  	DesignRepositoriesSyncedCount                 int    `json:"design_repositories_synced_count"`
   263  	DesignRepositoriesFailedCount                 int    `json:"design_repositories_failed_count"`
   264  	DesignRepositoriesSyncedInPercentage          string `json:"design_repositories_synced_in_percentage"`
   265  	ProjectsCount                                 int    `json:"projects_count"`
   266  	RepositoriesCount                             int    `json:"repositories_count"`
   267  	RepositoriesFailedCount                       int    `json:"repositories_failed_count"`
   268  	RepositoriesSyncedCount                       int    `json:"repositories_synced_count"`
   269  	RepositoriesSyncedInPercentage                string `json:"repositories_synced_in_percentage"`
   270  	WikisCount                                    int    `json:"wikis_count"`
   271  	WikisFailedCount                              int    `json:"wikis_failed_count"`
   272  	WikisSyncedCount                              int    `json:"wikis_synced_count"`
   273  	WikisSyncedInPercentage                       string `json:"wikis_synced_in_percentage"`
   274  	ReplicationSlotsCount                         int    `json:"replication_slots_count"`
   275  	ReplicationSlotsUsedCount                     int    `json:"replication_slots_used_count"`
   276  	ReplicationSlotsUsedInPercentage              string `json:"replication_slots_used_in_percentage"`
   277  	ReplicationSlotsMaxRetainedWalBytes           int    `json:"replication_slots_max_retained_wal_bytes"`
   278  	RepositoriesCheckedCount                      int    `json:"repositories_checked_count"`
   279  	RepositoriesCheckedFailedCount                int    `json:"repositories_checked_failed_count"`
   280  	RepositoriesCheckedInPercentage               string `json:"repositories_checked_in_percentage"`
   281  	RepositoriesChecksummedCount                  int    `json:"repositories_checksummed_count"`
   282  	RepositoriesChecksumFailedCount               int    `json:"repositories_checksum_failed_count"`
   283  	RepositoriesChecksummedInPercentage           string `json:"repositories_checksummed_in_percentage"`
   284  	WikisChecksummedCount                         int    `json:"wikis_checksummed_count"`
   285  	WikisChecksumFailedCount                      int    `json:"wikis_checksum_failed_count"`
   286  	WikisChecksummedInPercentage                  string `json:"wikis_checksummed_in_percentage"`
   287  	RepositoriesVerifiedCount                     int    `json:"repositories_verified_count"`
   288  	RepositoriesVerificationFailedCount           int    `json:"repositories_verification_failed_count"`
   289  	RepositoriesVerifiedInPercentage              string `json:"repositories_verified_in_percentage"`
   290  	RepositoriesChecksumMismatchCount             int    `json:"repositories_checksum_mismatch_count"`
   291  	WikisVerifiedCount                            int    `json:"wikis_verified_count"`
   292  	WikisVerificationFailedCount                  int    `json:"wikis_verification_failed_count"`
   293  	WikisVerifiedInPercentage                     string `json:"wikis_verified_in_percentage"`
   294  	WikisChecksumMismatchCount                    int    `json:"wikis_checksum_mismatch_count"`
   295  	RepositoriesRetryingVerificationCount         int    `json:"repositories_retrying_verification_count"`
   296  	WikisRetryingVerificationCount                int    `json:"wikis_retrying_verification_count"`
   297  	LastEventID                                   int    `json:"last_event_id"`
   298  	LastEventTimestamp                            int    `json:"last_event_timestamp"`
   299  	CursorLastEventID                             int    `json:"cursor_last_event_id"`
   300  	CursorLastEventTimestamp                      int    `json:"cursor_last_event_timestamp"`
   301  	LastSuccessfulStatusCheckTimestamp            int    `json:"last_successful_status_check_timestamp"`
   302  	Version                                       string `json:"version"`
   303  	Revision                                      string `json:"revision"`
   304  	MergeRequestDiffsCount                        int    `json:"merge_request_diffs_count"`
   305  	MergeRequestDiffsChecksumTotalCount           int    `json:"merge_request_diffs_checksum_total_count"`
   306  	MergeRequestDiffsChecksummedCount             int    `json:"merge_request_diffs_checksummed_count"`
   307  	MergeRequestDiffsChecksumFailedCount          int    `json:"merge_request_diffs_checksum_failed_count"`
   308  	MergeRequestDiffsSyncedCount                  int    `json:"merge_request_diffs_synced_count"`
   309  	MergeRequestDiffsFailedCount                  int    `json:"merge_request_diffs_failed_count"`
   310  	MergeRequestDiffsRegistryCount                int    `json:"merge_request_diffs_registry_count"`
   311  	MergeRequestDiffsVerificationTotalCount       int    `json:"merge_request_diffs_verification_total_count"`
   312  	MergeRequestDiffsVerifiedCount                int    `json:"merge_request_diffs_verified_count"`
   313  	MergeRequestDiffsVerificationFailedCount      int    `json:"merge_request_diffs_verification_failed_count"`
   314  	MergeRequestDiffsSyncedInPercentage           string `json:"merge_request_diffs_synced_in_percentage"`
   315  	MergeRequestDiffsVerifiedInPercentage         string `json:"merge_request_diffs_verified_in_percentage"`
   316  	PackageFilesCount                             int    `json:"package_files_count"`
   317  	PackageFilesChecksumTotalCount                int    `json:"package_files_checksum_total_count"`
   318  	PackageFilesChecksummedCount                  int    `json:"package_files_checksummed_count"`
   319  	PackageFilesChecksumFailedCount               int    `json:"package_files_checksum_failed_count"`
   320  	PackageFilesSyncedCount                       int    `json:"package_files_synced_count"`
   321  	PackageFilesFailedCount                       int    `json:"package_files_failed_count"`
   322  	PackageFilesRegistryCount                     int    `json:"package_files_registry_count"`
   323  	PackageFilesVerificationTotalCount            int    `json:"package_files_verification_total_count"`
   324  	PackageFilesVerifiedCount                     int    `json:"package_files_verified_count"`
   325  	PackageFilesVerificationFailedCount           int    `json:"package_files_verification_failed_count"`
   326  	PackageFilesSyncedInPercentage                string `json:"package_files_synced_in_percentage"`
   327  	PackageFilesVerifiedInPercentage              string `json:"package_files_verified_in_percentage"`
   328  	PagesDeploymentsCount                         int    `json:"pages_deployments_count"`
   329  	PagesDeploymentsChecksumTotalCount            int    `json:"pages_deployments_checksum_total_count"`
   330  	PagesDeploymentsChecksummedCount              int    `json:"pages_deployments_checksummed_count"`
   331  	PagesDeploymentsChecksumFailedCount           int    `json:"pages_deployments_checksum_failed_count"`
   332  	PagesDeploymentsSyncedCount                   int    `json:"pages_deployments_synced_count"`
   333  	PagesDeploymentsFailedCount                   int    `json:"pages_deployments_failed_count"`
   334  	PagesDeploymentsRegistryCount                 int    `json:"pages_deployments_registry_count"`
   335  	PagesDeploymentsVerificationTotalCount        int    `json:"pages_deployments_verification_total_count"`
   336  	PagesDeploymentsVerifiedCount                 int    `json:"pages_deployments_verified_count"`
   337  	PagesDeploymentsVerificationFailedCount       int    `json:"pages_deployments_verification_failed_count"`
   338  	PagesDeploymentsSyncedInPercentage            string `json:"pages_deployments_synced_in_percentage"`
   339  	PagesDeploymentsVerifiedInPercentage          string `json:"pages_deployments_verified_in_percentage"`
   340  	TerraformStateVersionsCount                   int    `json:"terraform_state_versions_count"`
   341  	TerraformStateVersionsChecksumTotalCount      int    `json:"terraform_state_versions_checksum_total_count"`
   342  	TerraformStateVersionsChecksummedCount        int    `json:"terraform_state_versions_checksummed_count"`
   343  	TerraformStateVersionsChecksumFailedCount     int    `json:"terraform_state_versions_checksum_failed_count"`
   344  	TerraformStateVersionsSyncedCount             int    `json:"terraform_state_versions_synced_count"`
   345  	TerraformStateVersionsFailedCount             int    `json:"terraform_state_versions_failed_count"`
   346  	TerraformStateVersionsRegistryCount           int    `json:"terraform_state_versions_registry_count"`
   347  	TerraformStateVersionsVerificationTotalCount  int    `json:"terraform_state_versions_verification_total_count"`
   348  	TerraformStateVersionsVerifiedCount           int    `json:"terraform_state_versions_verified_count"`
   349  	TerraformStateVersionsVerificationFailedCount int    `json:"terraform_state_versions_verification_failed_count"`
   350  	TerraformStateVersionsSyncedInPercentage      string `json:"terraform_state_versions_synced_in_percentage"`
   351  	TerraformStateVersionsVerifiedInPercentage    string `json:"terraform_state_versions_verified_in_percentage"`
   352  	SnippetRepositoriesCount                      int    `json:"snippet_repositories_count"`
   353  	SnippetRepositoriesChecksumTotalCount         int    `json:"snippet_repositories_checksum_total_count"`
   354  	SnippetRepositoriesChecksummedCount           int    `json:"snippet_repositories_checksummed_count"`
   355  	SnippetRepositoriesChecksumFailedCount        int    `json:"snippet_repositories_checksum_failed_count"`
   356  	SnippetRepositoriesSyncedCount                int    `json:"snippet_repositories_synced_count"`
   357  	SnippetRepositoriesFailedCount                int    `json:"snippet_repositories_failed_count"`
   358  	SnippetRepositoriesRegistryCount              int    `json:"snippet_repositories_registry_count"`
   359  	SnippetRepositoriesVerificationTotalCount     int    `json:"snippet_repositories_verification_total_count"`
   360  	SnippetRepositoriesVerifiedCount              int    `json:"snippet_repositories_verified_count"`
   361  	SnippetRepositoriesVerificationFailedCount    int    `json:"snippet_repositories_verification_failed_count"`
   362  	SnippetRepositoriesSyncedInPercentage         string `json:"snippet_repositories_synced_in_percentage"`
   363  	SnippetRepositoriesVerifiedInPercentage       string `json:"snippet_repositories_verified_in_percentage"`
   364  	GroupWikiRepositoriesCount                    int    `json:"group_wiki_repositories_count"`
   365  	GroupWikiRepositoriesChecksumTotalCount       int    `json:"group_wiki_repositories_checksum_total_count"`
   366  	GroupWikiRepositoriesChecksummedCount         int    `json:"group_wiki_repositories_checksummed_count"`
   367  	GroupWikiRepositoriesChecksumFailedCount      int    `json:"group_wiki_repositories_checksum_failed_count"`
   368  	GroupWikiRepositoriesSyncedCount              int    `json:"group_wiki_repositories_synced_count"`
   369  	GroupWikiRepositoriesFailedCount              int    `json:"group_wiki_repositories_failed_count"`
   370  	GroupWikiRepositoriesRegistryCount            int    `json:"group_wiki_repositories_registry_count"`
   371  	GroupWikiRepositoriesVerificationTotalCount   int    `json:"group_wiki_repositories_verification_total_count"`
   372  	GroupWikiRepositoriesVerifiedCount            int    `json:"group_wiki_repositories_verified_count"`
   373  	GroupWikiRepositoriesVerificationFailedCount  int    `json:"group_wiki_repositories_verification_failed_count"`
   374  	GroupWikiRepositoriesSyncedInPercentage       string `json:"group_wiki_repositories_synced_in_percentage"`
   375  	GroupWikiRepositoriesVerifiedInPercentage     string `json:"group_wiki_repositories_verified_in_percentage"`
   376  	PipelineArtifactsCount                        int    `json:"pipeline_artifacts_count"`
   377  	PipelineArtifactsChecksumTotalCount           int    `json:"pipeline_artifacts_checksum_total_count"`
   378  	PipelineArtifactsChecksummedCount             int    `json:"pipeline_artifacts_checksummed_count"`
   379  	PipelineArtifactsChecksumFailedCount          int    `json:"pipeline_artifacts_checksum_failed_count"`
   380  	PipelineArtifactsSyncedCount                  int    `json:"pipeline_artifacts_synced_count"`
   381  	PipelineArtifactsFailedCount                  int    `json:"pipeline_artifacts_failed_count"`
   382  	PipelineArtifactsRegistryCount                int    `json:"pipeline_artifacts_registry_count"`
   383  	PipelineArtifactsVerificationTotalCount       int    `json:"pipeline_artifacts_verification_total_count"`
   384  	PipelineArtifactsVerifiedCount                int    `json:"pipeline_artifacts_verified_count"`
   385  	PipelineArtifactsVerificationFailedCount      int    `json:"pipeline_artifacts_verification_failed_count"`
   386  	PipelineArtifactsSyncedInPercentage           string `json:"pipeline_artifacts_synced_in_percentage"`
   387  	PipelineArtifactsVerifiedInPercentage         string `json:"pipeline_artifacts_verified_in_percentage"`
   388  	UploadsCount                                  int    `json:"uploads_count"`
   389  	UploadsSyncedCount                            int    `json:"uploads_synced_count"`
   390  	UploadsFailedCount                            int    `json:"uploads_failed_count"`
   391  	UploadsRegistryCount                          int    `json:"uploads_registry_count"`
   392  	UploadsSyncedInPercentage                     string `json:"uploads_synced_in_percentage"`
   393  }
   394  
   395  // RetrieveStatusOfAllGeoNodes get the list of status of all Geo Nodes.
   396  //
   397  // GitLab API docs:
   398  // https://docs.gitlab.com/ee/api/geo_nodes.html#retrieve-status-about-all-geo-nodes
   399  func (s *GeoNodesService) RetrieveStatusOfAllGeoNodes(options ...RequestOptionFunc) ([]*GeoNodeStatus, *Response, error) {
   400  	req, err := s.client.NewRequest(http.MethodGet, "geo_nodes/status", nil, options)
   401  	if err != nil {
   402  		return nil, nil, err
   403  	}
   404  
   405  	var gnss []*GeoNodeStatus
   406  	resp, err := s.client.Do(req, &gnss)
   407  	if err != nil {
   408  		return nil, resp, err
   409  	}
   410  
   411  	return gnss, resp, nil
   412  }
   413  
   414  // RetrieveStatusOfGeoNode get the of status of a specific Geo Nodes.
   415  //
   416  // GitLab API docs:
   417  // https://docs.gitlab.com/ee/api/geo_nodes.html#retrieve-status-about-a-specific-geo-node
   418  func (s *GeoNodesService) RetrieveStatusOfGeoNode(id int, options ...RequestOptionFunc) (*GeoNodeStatus, *Response, error) {
   419  	u := fmt.Sprintf("geo_nodes/%d/status", id)
   420  
   421  	req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
   422  	if err != nil {
   423  		return nil, nil, err
   424  	}
   425  
   426  	gns := new(GeoNodeStatus)
   427  	resp, err := s.client.Do(req, gns)
   428  	if err != nil {
   429  		return nil, resp, err
   430  	}
   431  
   432  	return gns, resp, nil
   433  }
   434  

View as plain text