简体   繁体   中英

Softlayer API: How to do image capture with specify certain data disk?

I have a vm with disk 1,2,3,4, I want to do some image operations:

  • Q1: How can i capture the image only contain system disk and disk 3?
  • Q2: If I achieve the image production described in Q1, can I use this image install or reload a vm? How SL api to do with the disk 3 in the image ?
  • Q3: Can I make a snapshot image only for disk 3?
  • Q4: If I achieve the image described in Q3, how can I use this snapshot to init a disk ?

at moment to create the image template you can specify the block devices that you want in the image template you can do that using the API and the portal.

this is an example using the API

"""
Create image template.

The script creates a standard image template, it makes
a call to the SoftLayer_Virtual_Guest::createArchiveTransaction method
sending the IDs of the disks in the request.
For more information please see below.

Important manual pages:
https://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest
https://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/createArchiveTransaction
https://sldn.softlayer.com/reference/datatypes/SoftLayer_Virtual_Guest_Block_Device

License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer

# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'

# The virtual guest ID you want to create a template
virtualGuestId = 4058502
# The name of the image template
groupName = 'my image name'
# An optional note for the image template
note = 'an optional note'

"""
Build a skeleton SoftLayer_Virtual_Guest_Block_Device object
containing the disks you want to the image.
In this case we are going take an image template of 2 disks
from the virtual machine.
"""
blockDevices = [
    {
        "id": 4667098,
        "complexType": "SoftLayer_Virtual_Guest_Block_Device"
    },
    {
        "id": 4667094,
        "complexType": "SoftLayer_Virtual_Guest_Block_Device"
    }
]

# Declare a new API service object
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)

try:
    # Creating the transaction for the image template
    response = client['SoftLayer_Virtual_Guest'].createArchiveTransaction(groupName, blockDevices, note, id=virtualGuestId)
    print(response)
except SoftLayer.SoftLayerAPIError as e:
    """
    # If there was an error returned from the SoftLayer API then bomb out with the
    # error message.
    """
    print("Unable to create the image template. faultCode=%s, faultString=%s" % (e.faultCode, e.faultString))

You only need to get the block devices ID (or disks), for that you can call this method:

http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/getBlockDevices

There is some rules for the block devices:

  1. Only block devices of type disk can be captured.
  2. The block device of swap type cannot not be included in the list of block devices to capture.(this is is the disk number 1).
  3. The block device which contains the OS must be included (this is the disk number 0).
  4. The block devices which contain metadata cannot be included in the image.

When you are ordening a new device using this image template you need to keep in mind this:

  1. If you are using the placeOrder method you need to make sure that you are adding the prices for the extra disks.
  2. If you are using the createObject method, the number of disk will be taken from the image template, so it is not neccesary to specify the extra disks.

And also you can use the images templates in reloads, but the reload only afects to the disk wich contains the OS. so If you have a Vitrual machine which contains 3 disks and performs a reload only the disk which contains the OS is afected even if the image template has 3 disks.

In case there are errors in your order due to lack of disk capacity or other issues, at provisioning time there will be errors and the VSI will not be provisioned, likely a ticket will be opened and some softlayer employee will inform you about that.

Regards

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM