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  }