Skip to content

Commit ae80b39

Browse files
authored
Add support for backup & recovery service (#122)
* Add support for backup & recovery service * add additional apis to the vm service
1 parent c1e1874 commit ae80b39

11 files changed

Lines changed: 6368 additions & 0 deletions

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/VirtualMachineService.go

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ type VirtualMachineServiceIface interface {
104104
GetVMScheduleByID(id string, virtualmachineid string, opts ...OptionFunc) (*VMSchedule, int, error)
105105
DeleteVMSchedule(p *DeleteVMScheduleParams) (*DeleteVMScheduleResponse, error)
106106
NewDeleteVMScheduleParams(virtualmachineid string) *DeleteVMScheduleParams
107+
AssignVirtualMachineToBackupOffering(p *AssignVirtualMachineToBackupOfferingParams) (*AssignVirtualMachineToBackupOfferingResponse, error)
108+
NewAssignVirtualMachineToBackupOfferingParams(backupofferingid string, virtualmachineid string) *AssignVirtualMachineToBackupOfferingParams
109+
RemoveVirtualMachineFromBackupOffering(p *RemoveVirtualMachineFromBackupOfferingParams) (*RemoveVirtualMachineFromBackupOfferingResponse, error)
110+
NewRemoveVirtualMachineFromBackupOfferingParams(virtualmachineid string) *RemoveVirtualMachineFromBackupOfferingParams
107111
}
108112

109113
type AddNicToVirtualMachineParams struct {
@@ -14366,3 +14370,217 @@ func (r *DeleteVMScheduleResponse) UnmarshalJSON(b []byte) error {
1436614370
type alias DeleteVMScheduleResponse
1436714371
return json.Unmarshal(b, (*alias)(r))
1436814372
}
14373+
14374+
type AssignVirtualMachineToBackupOfferingParams struct {
14375+
p map[string]interface{}
14376+
}
14377+
14378+
func (p *AssignVirtualMachineToBackupOfferingParams) toURLValues() url.Values {
14379+
u := url.Values{}
14380+
if p.p == nil {
14381+
return u
14382+
}
14383+
if v, found := p.p["backupofferingid"]; found {
14384+
u.Set("backupofferingid", v.(string))
14385+
}
14386+
if v, found := p.p["virtualmachineid"]; found {
14387+
u.Set("virtualmachineid", v.(string))
14388+
}
14389+
return u
14390+
}
14391+
14392+
func (p *AssignVirtualMachineToBackupOfferingParams) SetBackupofferingid(v string) {
14393+
if p.p == nil {
14394+
p.p = make(map[string]interface{})
14395+
}
14396+
p.p["backupofferingid"] = v
14397+
}
14398+
14399+
func (p *AssignVirtualMachineToBackupOfferingParams) ResetBackupofferingid() {
14400+
if p.p != nil && p.p["backupofferingid"] != nil {
14401+
delete(p.p, "backupofferingid")
14402+
}
14403+
}
14404+
14405+
func (p *AssignVirtualMachineToBackupOfferingParams) GetBackupofferingid() (string, bool) {
14406+
if p.p == nil {
14407+
p.p = make(map[string]interface{})
14408+
}
14409+
value, ok := p.p["backupofferingid"].(string)
14410+
return value, ok
14411+
}
14412+
14413+
func (p *AssignVirtualMachineToBackupOfferingParams) SetVirtualmachineid(v string) {
14414+
if p.p == nil {
14415+
p.p = make(map[string]interface{})
14416+
}
14417+
p.p["virtualmachineid"] = v
14418+
}
14419+
14420+
func (p *AssignVirtualMachineToBackupOfferingParams) ResetVirtualmachineid() {
14421+
if p.p != nil && p.p["virtualmachineid"] != nil {
14422+
delete(p.p, "virtualmachineid")
14423+
}
14424+
}
14425+
14426+
func (p *AssignVirtualMachineToBackupOfferingParams) GetVirtualmachineid() (string, bool) {
14427+
if p.p == nil {
14428+
p.p = make(map[string]interface{})
14429+
}
14430+
value, ok := p.p["virtualmachineid"].(string)
14431+
return value, ok
14432+
}
14433+
14434+
// You should always use this function to get a new AssignVirtualMachineToBackupOfferingParams instance,
14435+
// as then you are sure you have configured all required params
14436+
func (s *VirtualMachineService) NewAssignVirtualMachineToBackupOfferingParams(backupofferingid string, virtualmachineid string) *AssignVirtualMachineToBackupOfferingParams {
14437+
p := &AssignVirtualMachineToBackupOfferingParams{}
14438+
p.p = make(map[string]interface{})
14439+
p.p["backupofferingid"] = backupofferingid
14440+
p.p["virtualmachineid"] = virtualmachineid
14441+
return p
14442+
}
14443+
14444+
// Assigns a VM to a backup offering
14445+
func (s *VirtualMachineService) AssignVirtualMachineToBackupOffering(p *AssignVirtualMachineToBackupOfferingParams) (*AssignVirtualMachineToBackupOfferingResponse, error) {
14446+
resp, err := s.cs.newPostRequest("assignVirtualMachineToBackupOffering", p.toURLValues())
14447+
if err != nil {
14448+
return nil, err
14449+
}
14450+
14451+
var r AssignVirtualMachineToBackupOfferingResponse
14452+
if err := json.Unmarshal(resp, &r); err != nil {
14453+
return nil, err
14454+
}
14455+
14456+
// If we have a async client, we need to wait for the async result
14457+
if s.cs.async {
14458+
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
14459+
if err != nil {
14460+
if err == AsyncTimeoutErr {
14461+
return &r, err
14462+
}
14463+
return nil, err
14464+
}
14465+
14466+
if err := json.Unmarshal(b, &r); err != nil {
14467+
return nil, err
14468+
}
14469+
}
14470+
14471+
return &r, nil
14472+
}
14473+
14474+
type AssignVirtualMachineToBackupOfferingResponse struct {
14475+
Displaytext string `json:"displaytext"`
14476+
JobID string `json:"jobid"`
14477+
Jobstatus int `json:"jobstatus"`
14478+
Success bool `json:"success"`
14479+
}
14480+
14481+
type RemoveVirtualMachineFromBackupOfferingParams struct {
14482+
p map[string]interface{}
14483+
}
14484+
14485+
func (p *RemoveVirtualMachineFromBackupOfferingParams) toURLValues() url.Values {
14486+
u := url.Values{}
14487+
if p.p == nil {
14488+
return u
14489+
}
14490+
if v, found := p.p["forced"]; found {
14491+
vv := strconv.FormatBool(v.(bool))
14492+
u.Set("forced", vv)
14493+
}
14494+
if v, found := p.p["virtualmachineid"]; found {
14495+
u.Set("virtualmachineid", v.(string))
14496+
}
14497+
return u
14498+
}
14499+
14500+
func (p *RemoveVirtualMachineFromBackupOfferingParams) SetForced(v bool) {
14501+
if p.p == nil {
14502+
p.p = make(map[string]interface{})
14503+
}
14504+
p.p["forced"] = v
14505+
}
14506+
14507+
func (p *RemoveVirtualMachineFromBackupOfferingParams) ResetForced() {
14508+
if p.p != nil && p.p["forced"] != nil {
14509+
delete(p.p, "forced")
14510+
}
14511+
}
14512+
14513+
func (p *RemoveVirtualMachineFromBackupOfferingParams) GetForced() (bool, bool) {
14514+
if p.p == nil {
14515+
p.p = make(map[string]interface{})
14516+
}
14517+
value, ok := p.p["forced"].(bool)
14518+
return value, ok
14519+
}
14520+
14521+
func (p *RemoveVirtualMachineFromBackupOfferingParams) SetVirtualmachineid(v string) {
14522+
if p.p == nil {
14523+
p.p = make(map[string]interface{})
14524+
}
14525+
p.p["virtualmachineid"] = v
14526+
}
14527+
14528+
func (p *RemoveVirtualMachineFromBackupOfferingParams) ResetVirtualmachineid() {
14529+
if p.p != nil && p.p["virtualmachineid"] != nil {
14530+
delete(p.p, "virtualmachineid")
14531+
}
14532+
}
14533+
14534+
func (p *RemoveVirtualMachineFromBackupOfferingParams) GetVirtualmachineid() (string, bool) {
14535+
if p.p == nil {
14536+
p.p = make(map[string]interface{})
14537+
}
14538+
value, ok := p.p["virtualmachineid"].(string)
14539+
return value, ok
14540+
}
14541+
14542+
// You should always use this function to get a new RemoveVirtualMachineFromBackupOfferingParams instance,
14543+
// as then you are sure you have configured all required params
14544+
func (s *VirtualMachineService) NewRemoveVirtualMachineFromBackupOfferingParams(virtualmachineid string) *RemoveVirtualMachineFromBackupOfferingParams {
14545+
p := &RemoveVirtualMachineFromBackupOfferingParams{}
14546+
p.p = make(map[string]interface{})
14547+
p.p["virtualmachineid"] = virtualmachineid
14548+
return p
14549+
}
14550+
14551+
// Removes a VM from any existing backup offering
14552+
func (s *VirtualMachineService) RemoveVirtualMachineFromBackupOffering(p *RemoveVirtualMachineFromBackupOfferingParams) (*RemoveVirtualMachineFromBackupOfferingResponse, error) {
14553+
resp, err := s.cs.newPostRequest("removeVirtualMachineFromBackupOffering", p.toURLValues())
14554+
if err != nil {
14555+
return nil, err
14556+
}
14557+
14558+
var r RemoveVirtualMachineFromBackupOfferingResponse
14559+
if err := json.Unmarshal(resp, &r); err != nil {
14560+
return nil, err
14561+
}
14562+
14563+
// If we have a async client, we need to wait for the async result
14564+
if s.cs.async {
14565+
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
14566+
if err != nil {
14567+
if err == AsyncTimeoutErr {
14568+
return &r, err
14569+
}
14570+
return nil, err
14571+
}
14572+
14573+
if err := json.Unmarshal(b, &r); err != nil {
14574+
return nil, err
14575+
}
14576+
}
14577+
14578+
return &r, nil
14579+
}
14580+
14581+
type RemoveVirtualMachineFromBackupOfferingResponse struct {
14582+
Displaytext string `json:"displaytext"`
14583+
JobID string `json:"jobid"`
14584+
Jobstatus int `json:"jobstatus"`
14585+
Success bool `json:"success"`
14586+
}

cloudstack/VirtualMachineService_mock.go

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

0 commit comments

Comments
 (0)