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 4 Next »

Introduction

This page describes how to refresh the datacenter repository.

The refresh will detect VM templates that you have manually added to the repository filesystem. See Importing Templates into the Appliance Library

This tutorial also describes how to download a VM template to the Apps library from a remote repository.

This tutorial does not describe how to upload an OVA or disk file from your local system in Abiquo. Here the easiest method is to use the UI, which will call the Appliance manage remote service to load the package or disk, and automatically process an OVA file. See Add VM Templates to the Apps Library

If you're still determined to use the API, see Appliance Manager Template API Upload and Download and see also Upload and replace template disks via API


You will need the following resources.

  • Datacenter or public cloud region
  • Remote repository (e.g. default remote repository).

Your user role must include the following privileges. 

  • ENTERPRISE_ADMINISTER_ALL
  • MANAGE_ENTERPRISES
  • APPLIB_ALLOW_MODIFY


The following pages describe the enterprise UI and Apps library functionality.

Summary diagram

The steps in this diagram link to the API reference guide resources and data entities sections.

Detailed steps

  1. Get the enterprise

    1. Get enterprises by name or get the enterprise ID and the enterprise

    2. Reference:

    3. cURL
    4. Keep the datacenterrepositories link

              {
                  "title": "repositories",
                  "rel": "datacenterrepositories",
                  "type": "application/vnd.abiquo.datacenterrepositories+json",
                  "href": "https://example.com:443/api/admin/enterprises/267/datacenterrepositories"
              },
  2. Switch to the enterprise
    1. Reference: How to switch enterprises via API
  3. Add templates to the enterprise's Apps library
    1. Get the datacenter repositories for the enterprise. From the enterprise entity, use the URL of the datacenter repositories link

              {
                  "title": "repositories",
                  "rel": "datacenterrepositories",
                  "type": "application/vnd.abiquo.datacenterrepositories+json",
                  "href": "https://example.com:443/api/admin/enterprises/267/datacenterrepositories"
              },
    2. Reference: https://wiki.abiquo.com/api/latest/DatacenterRepositoriesResource.html#list-datacenter-repositories

    3. From each datacenter repository, you will need the refresh link

                      {
                          "title": "refresh",
                          "rel": "refresh",
                          "type": "application/vnd.abiquo.acceptedrequest+json",
                          "href": "https://example.com:443/api/admin/enterprises/267/datacenterrepositories/1/actions/refresh"
                      },

      And the "virtualmachinetemplates" link.

              {
                  "title": "virtual machine templates",
                  "rel": "virtualmachinetemplates",
                  "type": "application/vnd.abiquo.virtualmachinetemplates+json",
                  "href": "https://example.com:443/api/admin/enterprises/267/datacenterrepositories/1/virtualmachinetemplates"
              },
    4. Refresh the repository by performing a PUT request to the refresh link. Reference: https://wiki.abiquo.com/api/latest/DatacenterRepositoriesResource.html#refresh-a-datacenter-repository-to-detect-new-virtual-machine-templates

      curl --verbose -X PUT https://example.com:443/api/admin/enterprises/267/datacenterrepositories/1/actions/refresh \
      	-H "Accept: application/vnd.abiquo.acceptedrequest+json; version=4.7;" \
      	-u user:password
    5. The refresh is an asynchronous task, so wait until it has completed to go on to the next step

    6. If a compatible template already exists, you can retrieve it now using the templates link and parameters. Reference: https://wiki.abiquo.com/api/latest/VirtualMachineTemplatesResource.html#list-virtual-machine-templates-in-a-datacenter-repository

       Click here to expand...
      curl --verbose -X GET https://example.com/api/admin/enterprises/267/datacenterrepositories/1/virtualmachinetemplates?hypervisorTypeName=VMX_04&limit=1&has=Core \
      	-H "Accept: application/vnd.abiquo.virtualmachinetemplates+json; version=4.7;" \
      	-u user:password   
    7. From a compatible template, you will need the edit link

                      {
                          "title": "Core",
                          "rel": "edit",
                          "type": "application/vnd.abiquo.virtualmachinetemplate+json",
                          "href": "https://example.com:443/api/admin/enterprises/267/datacenterrepositories/1/virtualmachinetemplates/3"
                      },
    8. If there are no templates, you can download one from a remote repository. There is a default remote repository registered in Abiquo
    9. To get a list of the templates available in the remote repository, use the Get template definition lists request. Reference: https://wiki.abiquo.com/api/latest/TemplateDefinitionListsResource.html#list-template-definition-lists

      curl --verbose -X GET https://example.com/api/admin/enterprises/267/appslib/templateDefinitionLists \
      	-H "Accept: application/vnd.abiquo.templatedefinitionslists+json; version=4.7;" \
      	-u user:password
    10. Sample response. Success status code: 200. From the response, search for a suitable template definition

       Click here to expand...
                         {
                              "id": 2083,
                              "url": "http://files.template-repository.abiquo.com/m0n0wall/m0n0wall-1.3b18-i386-monolithicFlat.1.5.ovf",
                              "name": "m0n0wall 1.3b18-i386",
                              "description": "m0n0wall is a project aimed at creating a complete, embedded firewall software package that, when used together with an embedded PC, provides \n            all the important features of commercial firewall boxes (including ease of use) at a fraction of the price (free software). https://PUBLIC:IP and use Username: admin, \n            password: abiquo. Configure MANUALLY the private IP of abicloud and it's done.",
                              "productName": "m0n0wall 1.3b18-i386",
                              "iconUrl": "http://files.template-repository.abiquo.com/m0n0wall/m0n0wall_logo.png",
                              "osType": "LINUX_2_6",
                              "ethernetDriverType": "E1000",
                              "links": [
                                  {
                                      "title": "Reseller enterprise",
                                      "rel": "enterprise",
                                      "type": "application/vnd.abiquo.enterprise+json",
                                      "href": "https://example.com:443/api/admin/enterprises/267"
                                  },
                                  {
                                      "title": "Firewall",
                                      "rel": "category",
                                      "type": "application/vnd.abiquo.category+json",
                                      "href": "https://example.com:443/api/config/categories/11"
                                  },
                                  {
                                      "title": "Repository 2.0",
                                      "rel": "templateDefinitionList",
                                      "type": "application/vnd.abiquo.templatedefinitionlist+json",
                                      "href": "https://example.com:443/api/admin/enterprises/267/appslib/templateDefinitionLists/87"
                                  },
                                  {
                                      "title": "m0n0wall 1.3b18-i386",
                                      "rel": "edit",
                                      "type": "application/vnd.abiquo.templatedefinition+json",
                                      "href": "https://example.com:443/api/admin/enterprises/267/appslib/templateDefinitions/2083"
                                  }
                              ],
                              "templatedefinitiondisks": [
                                  {
                                      "label": "scsi0:0",
                                      "diskFormatType": "VMDK_FLAT",
                                      "diskFileSize": 27262976,
                                      "hdRequired": 27262976,
                                      "diskControllerType": "SCSI",
                                      "diskController": "lsilogic",
                                      "links": []
                                  }
                              ]
                          },
    11. From the template definition, keep the edit link

                                  {
                                      "title": "m0n0wall 1.3b18-i386",
                                      "rel": "edit",
                                      "type": "application/vnd.abiquo.templatedefinition+json",
                                      "href": "https://example.com:443/api/admin/enterprises/267/appslib/templateDefinitions/2083"
                                  }
    12. Create a template from the template definition with the following request. Reference: https://wiki.abiquo.com/api/latest/VirtualMachineTemplatesResource.html#create-a-virtual-machine-template-in-a-datacenter-repository-by-download-promote-or-export

      curl -X POST https://example.com:443/api/admin/enterprises/267/datacenterrepositories/1/virtualmachinetemplates \ 
           -H 'Accept:application/vnd.abiquo.acceptedrequest+json;version=4.7' \ 
           -H 'Content-Type:application/vnd.abiquo.virtualmachinetemplaterequest+json;version=4.7' \ 
           -d @templatedefinition.json \ 
           -u user:password --verbose

      The templatedefinition.json file should contain the edit link to the template definition with the value of the "rel" attribute changed to "templatedefinition"

      {
        "links": [
          {
            "title": "m0n0wall 1.3b18-i386",
            "rel": "templateDefinition",
            "type": "application/vnd.abiquo.templatedefinition+json",
            "href": "https://example.com/api/admin/enterprises/267/appslib/templateDefinitions/2083/actions/repositoryInstall"
          }
        ]
      }

      This request will return a link. You can use the link to track the progress of the task.

       Click here to expand...
      {
          "message": "You can keep track of the progress in the link",
          "links": [
              {
                  "title": "status",
                  "rel": "status",
                  "type": "application/vnd.abiquo.task+json",
                  "href": "https://example.com:443/api/admin/enterprises/267/datacenterrepositories/1/virtualmachinetemplates/2251/tasks/de40272f-1e23-45c0-99ae-2255e5bc752f"
              }
          ]
      }

      The template ID is returned in the accepted request in the task link.

You can then use the VM template to create a VM. 

  • No labels