@@ -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
9193type 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+ }
0 commit comments