Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

This page describes how to replace a template disk directly in the repository file system and supply the correct template details for the new disk.

Requirements

  • This request requires direct access to the Appliance Manager API

  • Make a backup of your template folder before you begin

  • If you are replacing a disk that was created from an instance of a captured VM,
    before you upload your new disk, add an Abiquo OVF file to the original VM template folder .
    You may be able to copy the OVF file of another template and modify it

  • The Appliance Manager API does not validate the request

  • To avoid damage your file system, provide the correct path to your disk file!!

Example use case

Here is an example use case

  1. Upload or download a template

  2. Use it to create a VM 

  3. Update the template.  Abiquo supports changes to:

    1. file content

    2. size

    3. format

    4. capacity

    5. controller

    Update the disk using the Appliance manager API.

  4. When the user next deploys the VM, the platform will copy the updated disk

Create a data object

You will need a JSON file to describe the disk.
The steps below describe how to obtain the values of {TEMPLATE_URL}, {DISK_URL}, and {FOLDER_PATH} from the Abiquo UI.
You must set the correct requiredHDInMB for the deployed disk in Abiquo before you deploy the VM.
Try to complete the other disk data as best you can.

{ 
    "virtualMachineTemplateUrl":"{TEMPLATE_URL}",
    "diskUrl":"{DISK_URL}",
    "currentPath":"{FOLDER_PATH}",
    "diskController": "lsilogic",
    "diskControllerType": "SCSI",
    "diskFileFormat":"VMDK_STREAM_OPTIMIZED",
    "diskFilePath": "",
    "label": "Hard disk 1",
    "requiredHDInMB":120,    
    "sequence":0
}

  1. Log in to Abiquo and open developer tools in your browser

  2. Go to Network and record requests

  3. Select and edit the template.

  4. From the developer tools console, select the request to get the disks.
    Here you will find the:

    1. Template URL and disk URL

    2. Current path on the repository file system

  5. Complete the JSON object with the data from your API. For example, from the values above

    { 
        "virtualMachineTemplateUrl":"https://mjsabiquo.lab.abiquo.com/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates/72",
        "diskUrl":"https://mjsabiquo.lab.abiquo.com/admin/enterprises/1/datacenterrepositories/1/virtualmachinetemplates/72/disks/74",
        "currentPath":"1/bundle/e05785d2-b49a-4034-9bb9-3440e1693589-4ba3b6e1-6f06-47d9-8703-9e9/daf2f2fb-d3d0-4263-a466-d1b27a0d6864-new+dsl+disk.vmdk",
        "diskController": "lsilogic",
        "diskControllerType": "SCSI",
        "diskFileFormat":"VMDK_STREAM_OPTIMIZED",
        "diskFilePath": "",
        "label": "Hard disk 1",
        "requiredHDInMB":120,    
        "sequence":0
    }
  6. Save it to a file called diskReplace.json

Obtain the URL

  • To create the URL for the request, you will need:

    • The IP address of the remote services server

    • The folder part the path attribute

  • The basic URL format is as follows

{rs_url}/am/erepos/{enterpriseId}/templates/{folderPath}

  • So for the above example, this will be

{rs_url}/am/erepos/1/templates/1/bundle/e05785d2-b49a-4034-9bb9-3440e1693589-4ba3b6e1-6f06-47d9-8703-9e9

Obtain an authorization token

  • You will also need an authorization token, which you can get from any recent request.

  • Use this to replace the {api_token} in the following steps

Replace the file

This request is to the Appliance Manager remote service, so we need to use its URL, which may be the URL of the server or of a proxy.

In the following cURL, the base_url_NO_API is the URL of the AM, without any /api path. For example, https://remoteservices.example.com.

We recommend that you use double quotation marks around all the parameters, including the file parameters for diskInfo and diskFile.

curl -v -k -X POST 'https://mjsremoteservices.lab.abiquo.com/am/erepos/1/templates/1/bundle/e05785d2-b49a-4034-9bb9-3440e1693589-4ba3b6e1-6f06-47d9-8703-9e9' \
  -H 'Authorization: Token {api_token}' \
  -F "diskInfo=@diskReplace.json" -F "diskFile=@newdisk.vmdk"

Replace newdisk.vmdk  with the name of your disk file on the local file system.

Example request:

Use double quotation marks around all the parameters, including the file parameters for diskInfo and diskFile, especially if the disk file name contains spaces!

curl -v -k -X POST 'https://mjsremoteservices.lab.abiquo.com:443/am/erepos/1/templates/1/bundle/e05785d2-b49a-4034-9bb9-3440e1693589-4ba3b6e1-6f06-47d9-8703-9e9' \
  -H 'Authorization: Token {api_token}' \
  -F "diskInfo=@diskReplace.json" -F "diskFile=@newdisk.vmdk"

> POST /am/erepos/1/templates/1/bundle/e05785d2-b49a-4034-9bb9-3440e1693589-4ba3b6e1-6f06-47d9-8703-9e9 HTTP/1.1
> Host: abiquo.example.com
> User-Agent: curl/7.85.0
> Accept: */*
> Authorization: Token a2e19816735381c1d074441cbd002aa006febf2c4888bc2d79b9d2dfbcd9cbed84cbb0089197da8f0406f7a78ae2b25a64df188f10233541e5c45639b013b0c0
> Content-Length: 118752233
> Content-Type: multipart/form-data; boundary=------------------------bb8e15ec8adeba87
> Expect: 100-continue
> 

< HTTP/1.1 100 Continue
< HTTP/1.1 201 
< Date: Wed, 25 Jan 2023 14:44:47 GMT
< Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
< Location: https://mjsremoteservices.lab.abiquo.com/am/erepos/1/templates/1/bundle/e05785d2-b49a-4034-9bb9-3440e1693589-4ba3b6e1-6f06-47d9-8703-9e9/8611a4ed-adbd-49aa-a22e-81fd4b60e833-newdisk.vmdk
< Content-Length: 0
<

Success status code: 201 Created

  • No labels