github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/compute/v2/servers/doc.go (about) 1 /* 2 Package servers provides information and interaction with the server API 3 resource in the OpenStack Compute service. 4 5 A server is a virtual machine instance in the compute system. In order for 6 one to be provisioned, a valid flavor and image are required. 7 8 Example to List Servers 9 10 listOpts := servers.ListOpts{ 11 AllTenants: true, 12 } 13 14 allPages, err := servers.ListSimple(computeClient, listOpts).AllPages(context.TODO()) 15 if err != nil { 16 panic(err) 17 } 18 19 allServers, err := servers.ExtractServers(allPages) 20 if err != nil { 21 panic(err) 22 } 23 24 for _, server := range allServers { 25 fmt.Printf("%+v\n", server) 26 } 27 28 Example to List Detail Servers 29 30 listOpts := servers.ListOpts{ 31 AllTenants: true, 32 } 33 34 allPages, err := servers.List(computeClient, listOpts).AllPages(context.TODO()) 35 if err != nil { 36 panic(err) 37 } 38 39 allServers, err := servers.ExtractServers(allPages) 40 if err != nil { 41 panic(err) 42 } 43 44 for _, server := range allServers { 45 fmt.Printf("%+v\n", server) 46 } 47 48 Example to Create a Server 49 50 createOpts := servers.CreateOpts{ 51 Name: "server_name", 52 ImageRef: "image-uuid", 53 FlavorRef: "flavor-uuid", 54 } 55 56 server, err := servers.Create(context.TODO(), computeClient, createOpts, nil).Extract() 57 if err != nil { 58 panic(err) 59 } 60 61 Example to Add a Server to a Server Group 62 63 schedulerHintOpts := servers.SchedulerHintOpts{ 64 Group: "servergroup-uuid", 65 } 66 67 createOpts := servers.CreateOpts{ 68 Name: "server_name", 69 ImageRef: "image-uuid", 70 FlavorRef: "flavor-uuid", 71 } 72 73 server, err := servers.Create(context.TODO(), computeClient, createOpts, schedulerHintOpts).Extract() 74 if err != nil { 75 panic(err) 76 } 77 78 Example to Place Server B on a Different Host than Server A 79 80 schedulerHintOpts := servers.SchedulerHintOpts{ 81 DifferentHost: []string{ 82 "server-a-uuid", 83 } 84 } 85 86 createOpts := servers.CreateOpts{ 87 Name: "server_b", 88 ImageRef: "image-uuid", 89 FlavorRef: "flavor-uuid", 90 } 91 92 server, err := servers.Create(context.TODO(), computeClient, createOpts, schedulerHintOpts).Extract() 93 if err != nil { 94 panic(err) 95 } 96 97 Example to Place Server B on the Same Host as Server A 98 99 schedulerHintOpts := servers.SchedulerHintOpts{ 100 SameHost: []string{ 101 "server-a-uuid", 102 } 103 } 104 105 createOpts := servers.CreateOpts{ 106 Name: "server_b", 107 ImageRef: "image-uuid", 108 FlavorRef: "flavor-uuid", 109 } 110 111 server, err := servers.Create(context.TODO(), computeClient, createOpts, schedulerHintOpts).Extract() 112 if err != nil { 113 panic(err) 114 } 115 116 # Example to Create a Server From an Image 117 118 This example will boot a server from an image and use a standard ephemeral 119 disk as the server's root disk. This is virtually no different than creating 120 a server without using block device mappings. 121 122 blockDevices := []servers.BlockDevice{ 123 servers.BlockDevice{ 124 BootIndex: 0, 125 DeleteOnTermination: true, 126 DestinationType: servers.DestinationLocal, 127 SourceType: servers.SourceImage, 128 UUID: "image-uuid", 129 }, 130 } 131 132 createOpts := servers.CreateOpts{ 133 Name: "server_name", 134 FlavorRef: "flavor-uuid", 135 ImageRef: "image-uuid", 136 BlockDevice: blockDevices, 137 } 138 139 server, err := servers.Create(context.TODO(), client, createOpts, nil).Extract() 140 if err != nil { 141 panic(err) 142 } 143 144 # Example to Create a Server From a New Volume 145 146 This example will create a block storage volume based on the given Image. The 147 server will use this volume as its root disk. 148 149 blockDevices := []servers.BlockDevice{ 150 servers.BlockDevice{ 151 DeleteOnTermination: true, 152 DestinationType: servers.DestinationVolume, 153 SourceType: servers.SourceImage, 154 UUID: "image-uuid", 155 VolumeSize: 2, 156 }, 157 } 158 159 createOpts := servers.CreateOpts{ 160 Name: "server_name", 161 FlavorRef: "flavor-uuid", 162 BlockDevice: blockDevices, 163 } 164 165 server, err := servers.Create(context.TODO(), client, createOpts, nil).Extract() 166 if err != nil { 167 panic(err) 168 } 169 170 # Example to Create a Server From an Existing Volume 171 172 This example will create a server with an existing volume as its root disk. 173 174 blockDevices := []servers.BlockDevice{ 175 servers.BlockDevice{ 176 DeleteOnTermination: true, 177 DestinationType: servers.DestinationVolume, 178 SourceType: servers.SourceVolume, 179 UUID: "volume-uuid", 180 }, 181 } 182 183 createOpts := servers.CreateOpts{ 184 Name: "server_name", 185 FlavorRef: "flavor-uuid", 186 BlockDevice: blockDevices, 187 } 188 189 server, err := servers.Create(context.TODO(), client, createOpts, nil).Extract() 190 if err != nil { 191 panic(err) 192 } 193 194 # Example to Create a Server with Multiple Ephemeral Disks 195 196 This example will create a server with multiple ephemeral disks. The first 197 block device will be based off of an existing Image. Each additional 198 ephemeral disks must have an index of -1. 199 200 blockDevices := []servers.BlockDevice{ 201 servers.BlockDevice{ 202 BootIndex: 0, 203 DestinationType: servers.DestinationLocal, 204 DeleteOnTermination: true, 205 SourceType: servers.SourceImage, 206 UUID: "image-uuid", 207 VolumeSize: 5, 208 }, 209 servers.BlockDevice{ 210 BootIndex: -1, 211 DestinationType: servers.DestinationLocal, 212 DeleteOnTermination: true, 213 GuestFormat: "ext4", 214 SourceType: servers.SourceBlank, 215 VolumeSize: 1, 216 }, 217 servers.BlockDevice{ 218 BootIndex: -1, 219 DestinationType: servers.DestinationLocal, 220 DeleteOnTermination: true, 221 GuestFormat: "ext4", 222 SourceType: servers.SourceBlank, 223 VolumeSize: 1, 224 }, 225 } 226 227 CreateOpts := servers.CreateOpts{ 228 Name: "server_name", 229 FlavorRef: "flavor-uuid", 230 ImageRef: "image-uuid", 231 BlockDevice: blockDevices, 232 } 233 234 server, err := servers.Create(context.TODO(), client, createOpts, nil).Extract() 235 if err != nil { 236 panic(err) 237 } 238 239 Example to Delete a Server 240 241 serverID := "d9072956-1560-487c-97f2-18bdf65ec749" 242 err := servers.Delete(context.TODO(), computeClient, serverID).ExtractErr() 243 if err != nil { 244 panic(err) 245 } 246 247 Example to Force Delete a Server 248 249 serverID := "d9072956-1560-487c-97f2-18bdf65ec749" 250 err := servers.ForceDelete(context.TODO(), computeClient, serverID).ExtractErr() 251 if err != nil { 252 panic(err) 253 } 254 255 Example to Reboot a Server 256 257 rebootOpts := servers.RebootOpts{ 258 Type: servers.SoftReboot, 259 } 260 261 serverID := "d9072956-1560-487c-97f2-18bdf65ec749" 262 263 err := servers.Reboot(context.TODO(), computeClient, serverID, rebootOpts).ExtractErr() 264 if err != nil { 265 panic(err) 266 } 267 268 Example to Rebuild a Server 269 270 rebuildOpts := servers.RebuildOpts{ 271 Name: "new_name", 272 ImageID: "image-uuid", 273 } 274 275 serverID := "d9072956-1560-487c-97f2-18bdf65ec749" 276 277 server, err := servers.Rebuilt(computeClient, serverID, rebuildOpts).Extract() 278 if err != nil { 279 panic(err) 280 } 281 282 Example to Resize a Server 283 284 resizeOpts := servers.ResizeOpts{ 285 FlavorRef: "flavor-uuid", 286 } 287 288 serverID := "d9072956-1560-487c-97f2-18bdf65ec749" 289 290 err := servers.Resize(context.TODO(), computeClient, serverID, resizeOpts).ExtractErr() 291 if err != nil { 292 panic(err) 293 } 294 295 err = servers.ConfirmResize(context.TODO(), computeClient, serverID).ExtractErr() 296 if err != nil { 297 panic(err) 298 } 299 300 Example to Snapshot a Server 301 302 snapshotOpts := servers.CreateImageOpts{ 303 Name: "snapshot_name", 304 } 305 306 serverID := "d9072956-1560-487c-97f2-18bdf65ec749" 307 308 image, err := servers.CreateImage(context.TODO(), computeClient, serverID, snapshotOpts).ExtractImageID() 309 if err != nil { 310 panic(err) 311 } 312 */ 313 package servers