Skip to content

Commit 5365469

Browse files
committed
Add support for backup & recovery service
1 parent ee4d301 commit 5365469

8 files changed

Lines changed: 6066 additions & 0 deletions

File tree

cloudstack/BackupService.go

Lines changed: 4796 additions & 0 deletions
Large diffs are not rendered by default.

cloudstack/BackupService_mock.go

Lines changed: 791 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cloudstack/VolumeService.go

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ type VolumeServiceIface interface {
8686
GetVolumesUsageHistoryByID(id string, opts ...OptionFunc) (*VolumesUsageHistory, int, error)
8787
AssignVolume(p *AssignVolumeParams) (*AssignVolumeResponse, error)
8888
NewAssignVolumeParams(volumeid string) *AssignVolumeParams
89+
RestoreVolumeFromBackupAndAttachToVM(p *RestoreVolumeFromBackupAndAttachToVMParams) (*RestoreVolumeFromBackupAndAttachToVMResponse, error)
90+
NewRestoreVolumeFromBackupAndAttachToVMParams(backupid string, virtualmachineid string, volumeid string) *RestoreVolumeFromBackupAndAttachToVMParams
8991
}
9092

9193
type AttachVolumeParams struct {
@@ -6534,3 +6536,135 @@ type AssignVolumeResponse struct {
65346536
Zoneid string `json:"zoneid"`
65356537
Zonename string `json:"zonename"`
65366538
}
6539+
6540+
type RestoreVolumeFromBackupAndAttachToVMParams struct {
6541+
p map[string]interface{}
6542+
}
6543+
6544+
func (p *RestoreVolumeFromBackupAndAttachToVMParams) toURLValues() url.Values {
6545+
u := url.Values{}
6546+
if p.p == nil {
6547+
return u
6548+
}
6549+
if v, found := p.p["backupid"]; found {
6550+
u.Set("backupid", v.(string))
6551+
}
6552+
if v, found := p.p["virtualmachineid"]; found {
6553+
u.Set("virtualmachineid", v.(string))
6554+
}
6555+
if v, found := p.p["volumeid"]; found {
6556+
u.Set("volumeid", v.(string))
6557+
}
6558+
return u
6559+
}
6560+
6561+
func (p *RestoreVolumeFromBackupAndAttachToVMParams) SetBackupid(v string) {
6562+
if p.p == nil {
6563+
p.p = make(map[string]interface{})
6564+
}
6565+
p.p["backupid"] = v
6566+
}
6567+
6568+
func (p *RestoreVolumeFromBackupAndAttachToVMParams) ResetBackupid() {
6569+
if p.p != nil && p.p["backupid"] != nil {
6570+
delete(p.p, "backupid")
6571+
}
6572+
}
6573+
6574+
func (p *RestoreVolumeFromBackupAndAttachToVMParams) GetBackupid() (string, bool) {
6575+
if p.p == nil {
6576+
p.p = make(map[string]interface{})
6577+
}
6578+
value, ok := p.p["backupid"].(string)
6579+
return value, ok
6580+
}
6581+
6582+
func (p *RestoreVolumeFromBackupAndAttachToVMParams) SetVirtualmachineid(v string) {
6583+
if p.p == nil {
6584+
p.p = make(map[string]interface{})
6585+
}
6586+
p.p["virtualmachineid"] = v
6587+
}
6588+
6589+
func (p *RestoreVolumeFromBackupAndAttachToVMParams) ResetVirtualmachineid() {
6590+
if p.p != nil && p.p["virtualmachineid"] != nil {
6591+
delete(p.p, "virtualmachineid")
6592+
}
6593+
}
6594+
6595+
func (p *RestoreVolumeFromBackupAndAttachToVMParams) GetVirtualmachineid() (string, bool) {
6596+
if p.p == nil {
6597+
p.p = make(map[string]interface{})
6598+
}
6599+
value, ok := p.p["virtualmachineid"].(string)
6600+
return value, ok
6601+
}
6602+
6603+
func (p *RestoreVolumeFromBackupAndAttachToVMParams) SetVolumeid(v string) {
6604+
if p.p == nil {
6605+
p.p = make(map[string]interface{})
6606+
}
6607+
p.p["volumeid"] = v
6608+
}
6609+
6610+
func (p *RestoreVolumeFromBackupAndAttachToVMParams) ResetVolumeid() {
6611+
if p.p != nil && p.p["volumeid"] != nil {
6612+
delete(p.p, "volumeid")
6613+
}
6614+
}
6615+
6616+
func (p *RestoreVolumeFromBackupAndAttachToVMParams) GetVolumeid() (string, bool) {
6617+
if p.p == nil {
6618+
p.p = make(map[string]interface{})
6619+
}
6620+
value, ok := p.p["volumeid"].(string)
6621+
return value, ok
6622+
}
6623+
6624+
// You should always use this function to get a new RestoreVolumeFromBackupAndAttachToVMParams instance,
6625+
// as then you are sure you have configured all required params
6626+
func (s *VolumeService) NewRestoreVolumeFromBackupAndAttachToVMParams(backupid string, virtualmachineid string, volumeid string) *RestoreVolumeFromBackupAndAttachToVMParams {
6627+
p := &RestoreVolumeFromBackupAndAttachToVMParams{}
6628+
p.p = make(map[string]interface{})
6629+
p.p["backupid"] = backupid
6630+
p.p["virtualmachineid"] = virtualmachineid
6631+
p.p["volumeid"] = volumeid
6632+
return p
6633+
}
6634+
6635+
// Restore and attach a backed up volume to VM
6636+
func (s *VolumeService) RestoreVolumeFromBackupAndAttachToVM(p *RestoreVolumeFromBackupAndAttachToVMParams) (*RestoreVolumeFromBackupAndAttachToVMResponse, error) {
6637+
resp, err := s.cs.newPostRequest("restoreVolumeFromBackupAndAttachToVM", p.toURLValues())
6638+
if err != nil {
6639+
return nil, err
6640+
}
6641+
6642+
var r RestoreVolumeFromBackupAndAttachToVMResponse
6643+
if err := json.Unmarshal(resp, &r); err != nil {
6644+
return nil, err
6645+
}
6646+
6647+
// If we have a async client, we need to wait for the async result
6648+
if s.cs.async {
6649+
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
6650+
if err != nil {
6651+
if err == AsyncTimeoutErr {
6652+
return &r, err
6653+
}
6654+
return nil, err
6655+
}
6656+
6657+
if err := json.Unmarshal(b, &r); err != nil {
6658+
return nil, err
6659+
}
6660+
}
6661+
6662+
return &r, nil
6663+
}
6664+
6665+
type RestoreVolumeFromBackupAndAttachToVMResponse struct {
6666+
Displaytext string `json:"displaytext"`
6667+
JobID string `json:"jobid"`
6668+
Jobstatus int `json:"jobstatus"`
6669+
Success bool `json:"success"`
6670+
}

cloudstack/VolumeService_mock.go

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cloudstack/cloudstack.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ type CloudStackClient struct {
111111
Authentication AuthenticationServiceIface
112112
AutoScale AutoScaleServiceIface
113113
BGPPeer BGPPeerServiceIface
114+
Backup BackupServiceIface
114115
Baremetal BaremetalServiceIface
115116
BigSwitchBCF BigSwitchBCFServiceIface
116117
BrocadeVCS BrocadeVCSServiceIface
@@ -238,6 +239,7 @@ func newClient(apiurl string, apikey string, secret string, async bool, verifyss
238239
cs.Authentication = NewAuthenticationService(cs)
239240
cs.AutoScale = NewAutoScaleService(cs)
240241
cs.BGPPeer = NewBGPPeerService(cs)
242+
cs.Backup = NewBackupService(cs)
241243
cs.Baremetal = NewBaremetalService(cs)
242244
cs.BigSwitchBCF = NewBigSwitchBCFService(cs)
243245
cs.BrocadeVCS = NewBrocadeVCSService(cs)
@@ -338,6 +340,7 @@ func newMockClient(ctrl *gomock.Controller) *CloudStackClient {
338340
cs.Authentication = NewMockAuthenticationServiceIface(ctrl)
339341
cs.AutoScale = NewMockAutoScaleServiceIface(ctrl)
340342
cs.BGPPeer = NewMockBGPPeerServiceIface(ctrl)
343+
cs.Backup = NewMockBackupServiceIface(ctrl)
341344
cs.Baremetal = NewMockBaremetalServiceIface(ctrl)
342345
cs.BigSwitchBCF = NewMockBigSwitchBCFServiceIface(ctrl)
343346
cs.BrocadeVCS = NewMockBrocadeVCSServiceIface(ctrl)
@@ -900,6 +903,14 @@ func NewBGPPeerService(cs *CloudStackClient) BGPPeerServiceIface {
900903
return &BGPPeerService{cs: cs}
901904
}
902905

906+
type BackupService struct {
907+
cs *CloudStackClient
908+
}
909+
910+
func NewBackupService(cs *CloudStackClient) BackupServiceIface {
911+
return &BackupService{cs: cs}
912+
}
913+
903914
type BaremetalService struct {
904915
cs *CloudStackClient
905916
}

generate/layout.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,7 @@ var layout = apiInfo{
272272
"uploadVolume",
273273
"listVolumesUsageHistory",
274274
"assignVolume",
275+
"restoreVolumeFromBackupAndAttachToVM",
275276
},
276277
"VPCService": {
277278
"createPrivateGateway",
@@ -728,6 +729,26 @@ var layout = apiInfo{
728729
"resetConfiguration",
729730
"updateStorageCapabilities",
730731
},
732+
"BackupService": {
733+
"addBackupRepository",
734+
"createBackup",
735+
"createBackupSchedule",
736+
"createVMFromBackup",
737+
"deleteBackup",
738+
"deleteBackupOffering",
739+
"deleteBackupRepository",
740+
"deleteBackupSchedule",
741+
"importBackupOffering",
742+
"listBackupOfferings",
743+
"listBackupProviderOfferings",
744+
"listBackupProviders",
745+
"listBackupRepositories",
746+
"listBackupSchedule",
747+
"listBackups",
748+
"restoreBackup",
749+
"updateBackupOffering",
750+
"updateBackupSchedule",
751+
},
731752
"BrocadeVCSService": {
732753
"addBrocadeVcsDevice",
733754
"deleteBrocadeVcsDevice",

0 commit comments

Comments
 (0)