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