github.com/sacloud/iaas-api-go@v1.12.0/fake/ops_cdrom.go (about) 1 // Copyright 2022-2023 The sacloud/iaas-api-go Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package fake 16 17 import ( 18 "context" 19 "fmt" 20 21 "github.com/sacloud/iaas-api-go" 22 "github.com/sacloud/iaas-api-go/types" 23 ) 24 25 // Find is fake implementation 26 func (o *CDROMOp) Find(ctx context.Context, zone string, conditions *iaas.FindCondition) (*iaas.CDROMFindResult, error) { 27 results, _ := find(o.key, zone, conditions) 28 var values []*iaas.CDROM 29 for _, res := range results { 30 dest := &iaas.CDROM{} 31 copySameNameField(res, dest) 32 values = append(values, dest) 33 } 34 return &iaas.CDROMFindResult{ 35 Total: len(results), 36 Count: len(results), 37 From: 0, 38 CDROMs: values, 39 }, nil 40 } 41 42 // Create is fake implementation 43 func (o *CDROMOp) Create(ctx context.Context, zone string, param *iaas.CDROMCreateRequest) (*iaas.CDROM, *iaas.FTPServer, error) { 44 result := &iaas.CDROM{} 45 copySameNameField(param, result) 46 fill(result, fillID, fillCreatedAt, fillAvailability, fillScope) 47 result.Availability = types.Availabilities.Uploading 48 49 putCDROM(zone, result) 50 return result, &iaas.FTPServer{ 51 HostName: fmt.Sprintf("sac-%s-ftp.example.jp", zone), 52 IPAddress: "192.0.2.1", 53 User: fmt.Sprintf("cdrom%d", result.ID), 54 Password: "password-is-not-a-password", 55 }, nil 56 } 57 58 // Read is fake implementation 59 func (o *CDROMOp) Read(ctx context.Context, zone string, id types.ID) (*iaas.CDROM, error) { 60 value := getCDROMByID(zone, id) 61 if value == nil { 62 return nil, newErrorNotFound(o.key, id) 63 } 64 dest := &iaas.CDROM{} 65 copySameNameField(value, dest) 66 return dest, nil 67 } 68 69 // Update is fake implementation 70 func (o *CDROMOp) Update(ctx context.Context, zone string, id types.ID, param *iaas.CDROMUpdateRequest) (*iaas.CDROM, error) { 71 value, err := o.Read(ctx, zone, id) 72 if err != nil { 73 return nil, err 74 } 75 copySameNameField(param, value) 76 fill(value, fillModifiedAt) 77 78 putCDROM(zone, value) 79 return value, nil 80 } 81 82 // Delete is fake implementation 83 func (o *CDROMOp) Delete(ctx context.Context, zone string, id types.ID) error { 84 _, err := o.Read(ctx, zone, id) 85 if err != nil { 86 return err 87 } 88 ds().Delete(o.key, zone, id) 89 return nil 90 } 91 92 // OpenFTP is fake implementation 93 func (o *CDROMOp) OpenFTP(ctx context.Context, zone string, id types.ID, openOption *iaas.OpenFTPRequest) (*iaas.FTPServer, error) { 94 value, err := o.Read(ctx, zone, id) 95 if err != nil { 96 return nil, err 97 } 98 99 value.SetAvailability(types.Availabilities.Uploading) 100 putCDROM(zone, value) 101 102 return &iaas.FTPServer{ 103 HostName: fmt.Sprintf("sac-%s-ftp.example.jp", zone), 104 IPAddress: "192.0.2.1", 105 User: fmt.Sprintf("cdrom%d", id), 106 Password: "password-is-not-a-password", 107 }, nil 108 } 109 110 // CloseFTP is fake implementation 111 func (o *CDROMOp) CloseFTP(ctx context.Context, zone string, id types.ID) error { 112 value, err := o.Read(ctx, zone, id) 113 if err != nil { 114 return err 115 } 116 if !value.Availability.IsUploading() { 117 value.SetAvailability(types.Availabilities.Available) 118 } 119 putCDROM(zone, value) 120 return nil 121 }