github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/cbr/v3/backups/results.go (about) 1 package backups 2 3 import ( 4 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 5 "github.com/opentelekomcloud/gophertelekomcloud/internal/extract" 6 "github.com/opentelekomcloud/gophertelekomcloud/pagination" 7 ) 8 9 type Backup struct { 10 CheckpointID string `json:"checkpoint_id"` 11 CreatedAt string `json:"created_at"` 12 Description string `json:"description"` 13 ExpiredAt string `json:"expired_at"` 14 ExtendInfo *BackupExtendInfo `json:"extend_info"` 15 ID string `json:"id"` 16 ImageType string `json:"image_type"` 17 Name string `json:"name"` 18 ParentID string `json:"parent_id"` 19 ProjectID string `json:"project_id"` 20 ProtectedAt string `json:"protected_at"` 21 ResourceAZ string `json:"resource_az"` 22 ResourceID string `json:"resource_id"` 23 ResourceName string `json:"resource_name"` 24 ResourceSize int `json:"resource_size"` 25 ResourceType string `json:"resource_type"` 26 Status string `json:"status"` 27 UpdatedAt string `json:"updated_at"` 28 VaultId string `json:"vault_id"` 29 ProviderID string `json:"provider_id"` 30 Children []BackupResp `json:"children"` 31 } 32 33 type BackupExtendInfo struct { 34 AutoTrigger bool `json:"auto_trigger"` 35 Bootable bool `json:"bootable"` 36 Incremental bool `json:"incremental"` 37 SnapshotID string `json:"snapshot_id"` 38 SupportLld bool `json:"support_lld"` 39 SupportedRestoreMode string `json:"supported_restore_mode"` 40 OsImagesData []ImageData `json:"os_images_data"` 41 ContainSystemDisk bool `json:"contain_system_disk"` 42 Encrypted bool `json:"encrypted"` 43 SystemDisk bool `json:"system_disk"` 44 } 45 46 type BackupResp struct { 47 CheckpointID string `json:"checkpoint_id"` 48 CreatedAt string `json:"created_at"` 49 Description string `json:"description"` 50 ExpiredAt string `json:"expired_at"` 51 ExtendInfo *BackupExtendInfo `json:"extend_info"` 52 ID string `json:"id"` 53 ImageType string `json:"image_type"` 54 Name string `json:"name"` 55 ParentID string `json:"parent_id"` 56 ProjectID string `json:"project_id"` 57 ProtectedAt string `json:"protected_at"` 58 ResourceAZ string `json:"resource_az"` 59 ResourceID string `json:"resource_id"` 60 ResourceName string `json:"resource_name"` 61 ResourceSize int `json:"resource_size"` 62 ResourceType string `json:"resource_type"` 63 Status string `json:"status"` 64 UpdatedAt string `json:"updated_at"` 65 VaultID string `json:"vault_id"` 66 ProviderID string `json:"provider_id"` 67 } 68 69 type ImageData struct { 70 ImageID string `json:"image_id"` 71 } 72 73 type BackupPage struct { 74 pagination.LinkedPageBase 75 } 76 77 func (r BackupPage) NextPageURL() (string, error) { 78 var res []golangsdk.Link 79 err := extract.IntoSlicePtr(r.Result.BodyReader(), &res, "backups_links") 80 if err != nil { 81 return "", err 82 } 83 return golangsdk.ExtractNextURL(res) 84 } 85 86 func (r BackupPage) IsEmpty() (bool, error) { 87 is, err := ExtractBackups(r) 88 return len(is) == 0, err 89 } 90 91 func ExtractBackups(r pagination.Page) ([]Backup, error) { 92 var res []Backup 93 err := extract.IntoSlicePtr(r.(BackupPage).Result.BodyReader(), &res, "backups") 94 if err != nil { 95 return nil, err 96 } 97 return res, nil 98 }