1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
package gitlab
import (
"net/http"
"time"
)
// BulkImportsService handles communication with GitLab's direct transfer API.
//
// GitLab API docs: https://docs.gitlab.com/ee/api/bulk_imports.html
type BulkImportsService struct {
client *Client
}
// BulkImportStartMigrationConfiguration represents the available configuration options to start a migration.
//
// GitLab API docs: https://docs.gitlab.com/ee/api/bulk_imports.html#start-a-new-group-or-project-migration
type BulkImportStartMigrationConfiguration struct {
URL *string `json:"url,omitempty"`
AccessToken *string `json:"access_token,omitempty"`
}
// BulkImportStartMigrationEntity represents the available entity options to start a migration.
//
// GitLab API docs: https://docs.gitlab.com/ee/api/bulk_imports.html#start-a-new-group-or-project-migration
type BulkImportStartMigrationEntity struct {
SourceType *string `json:"source_type,omitempty"`
SourceFullPath *string `json:"source_full_path,omitempty"`
DestinationSlug *string `json:"destination_slug,omitempty"`
DestinationNamespace *string `json:"destination_namespace,omitempty"`
MigrateProjects *bool `json:"migrate_projects,omitempty"`
MigrateMemberships *bool `json:"migrate_memberships,omitempty"`
}
// BulkImportStartMigrationOptions represents the available start migration options.
//
// GitLab API docs: https://docs.gitlab.com/ee/api/bulk_imports.html#start-a-new-group-or-project-migration
type BulkImportStartMigrationOptions struct {
Configuration *BulkImportStartMigrationConfiguration `json:"configuration,omitempty"`
Entities []BulkImportStartMigrationEntity `json:"entities,omitempty"`
}
// BulkImportStartMigrationResponse represents the start migration response.
//
// GitLab API docs: https://docs.gitlab.com/ee/api/bulk_imports.html#start-a-new-group-or-project-migration
type BulkImportStartMigrationResponse struct {
ID int `json:"id"`
Status string `json:"status"`
SourceType string `json:"source_type"`
SourceURL string `json:"source_url"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
HasFailures bool `json:"has_failures"`
}
// StartMigration starts a migration.
//
// GitLab API docs: https://docs.gitlab.com/ee/api/bulk_imports.html#start-a-new-group-or-project-migration
func (b *BulkImportsService) StartMigration(startMigrationOptions *BulkImportStartMigrationOptions, options ...RequestOptionFunc) (*BulkImportStartMigrationResponse, *Response, error) {
request, err := b.client.NewRequest(http.MethodPost, "bulk_imports", startMigrationOptions, options)
if err != nil {
return nil, nil, err
}
startMigrationResponse := new(BulkImportStartMigrationResponse)
response, err := b.client.Do(request, startMigrationResponse)
if err != nil {
return nil, response, err
}
return startMigrationResponse, response, nil
}
|