1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package gitlab
18
19 import (
20 "fmt"
21 "net/http"
22 )
23
24
25
26
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
51
52
53 type GeoNodeLinks struct {
54 Self string `json:"self"`
55 Status string `json:"status"`
56 Repair string `json:"repair"`
57 }
58
59
60
61
62
63 type GeoNodesService struct {
64 client *Client
65 }
66
67
68
69
70
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
89
90
91
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
108
109
110
111 type ListGeoNodesOptions ListOptions
112
113
114
115
116
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
133
134
135
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
154
155
156
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
175
176
177
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
196
197
198
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
211
212
213
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
232
233
234
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
396
397
398
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
415
416
417
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