How to create virtual datacenters and VMs via API

Introduction

This page describes how to create a virtual datacenter and deploy a VM.

This tutorial is suitable for a test environment only and it does not use proper authentication.

You will need the following resources.

Your user role must include the following privileges.

  • A user privilege, e.g. MANAGE_USERS, to retrieve enterprises
  • VDC_MANAGE
  • VDC_MANAGE_VAPP
  • VAPP_DEPLOY_UNDEPLOY

The following pages contain reference information for this tutorial:

Summary diagram

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



Detailed steps

  1. Get the link to the enterprise
    1. Get smaller result entity with the enterprises-id-name media type
    2. Specify the enterprise name with the "has" parameter to filter by name text
    3. Reference
      1. https://wiki.abiquo.com/api/latest/EnterprisesResource.html#list-enterprise-identifiers-and-names
    4. cURL

      curl -X GET https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises?has=video \ 
      	 -H 'Accept:application/vnd.abiquo.enterprises-id-name+json; version=4.7' \ 
      	 -u user:password --verbose
    5. Sample response. Success response code: 200
      Note: this request returns a collection of enterprises

       Click here to expand...
      {
          "totalSize": 1,
          "links": [
              {
                  "rel": "first",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises?limit=25&has=video"
              },
              {
                  "rel": "last",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises?startwith=0&limit=25&has=video"
              }
          ],
          "collection": [
              {
                  "id": 15,
                  "name": "Video_enterprise",
                  "vmsSoft": 0,
                  "vmsHard": 0,
                  "vlansSoft": 0,
                  "vlansHard": 0,
                  "publicIpsSoft": 0,
                  "publicIpsHard": 0,
                  "links": [
                      {
                          "title": "Video_enterprise",
                          "rel": "edit",
                          "type": "application/vnd.abiquo.enterprise+json",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15"
                      }
                  ],
                  "ramSoft": 0,
                  "ramHard": 0,
                  "cpuSoft": 0,
                  "cpuHard": 0
              }
          ]
      }
    6. You will need the edit link of the enterprise

                      {
                          "title": "Video_enterprise",
                          "rel": "edit",
                          "type": "application/vnd.abiquo.enterprise+json",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15"
                      }
  2. Get allowed locations for the current enterprise
    1. Specify datacenters or publiccloudregions using the media type in the Accept header
    2. Cloud admin can use the "enterprise" parameter to get locations for another enterprise by ID 
    3. References: 
      1. https://wiki.abiquo.com/api/latest/AllowedLocationsResource.html#list-location-of-allowed-datacenters
      2. https://wiki.abiquo.com/api/latest/AllowedLocationsResource.html#list-location-of-allowed-public-cloud-regions
    4. cURL

      curl -X GET https://abiquoapi.bcn.abiquo.com:443/api/cloud/locations?has=Abiquo \ 
      	 -H 'Accept:application/vnd.abiquo.datacenters+json; version=4.7' \ 
      	 -u user:password --verbose 
    5. Sample response. Success status code: 200
      Note: This request returns a collection of allowed locations

       Click here to expand...
      {
          "totalSize": 1,
          "links": [
              {
                  "rel": "first",
                  "href": "https://.bcn.abiquo.com:443/api/cloud/locations?limit=25&has=Abiquo&by=name&asc=true"
              },
              {
                  "rel": "last",
                  "href": "https://.bcn.abiquo.com:443/api/cloud/locations?startwith=0&limit=25&has=Abiquo&by=name&asc=true"
              }
          ],
          "collection": [
              {
                  "id": 1,
                  "name": "Abiquo-DC",
                  "location": "Teide",
                  "links": [
                      {
                          "title": "Abiquo-DC",
                          "rel": "edit",
                          "type": "application/vnd.abiquo.datacenter+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1"
                      },
                      {
                          "title": "racks",
                          "rel": "racks",
                          "type": "application/vnd.abiquo.racks+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/racks"
                      },
                      {
                          "title": "remote services",
                          "rel": "remoteservices",
                          "type": "application/vnd.abiquo.remoteservices+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/remoteservices"
                      },
                      {
                          "title": "update resources",
                          "rel": "updateusedresources",
                          "type": "",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/action/updateusedresources"
                      },
                      {
                          "title": "datastores",
                          "rel": "datastores",
                          "type": "application/vnd.abiquo.datastores+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/datastores"
                      },
                      {
                          "title": "hypervisors",
                          "rel": "hypervisors",
                          "type": "application/vnd.abiquo.hypervisortypes+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/hypervisors"
                      },
                      {
                          "title": "enterprises",
                          "rel": "enterprises",
                          "type": "application/vnd.abiquo.enterprises+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/action/enterprises"
                      },
                      {
                          "title": "discover",
                          "rel": "discover",
                          "type": "application/vnd.abiquo.machines+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/action/discover"
                      },
                      {
                          "title": "machines state",
                          "rel": "checkmachinestate",
                          "type": "application/vnd.abiquo.machinestate+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/action/checkmachinestate"
                      },
                      {
                          "title": "machines ipmi",
                          "rel": "checkmachineipmistate",
                          "type": "application/vnd.abiquo.machineipmistate+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/action/checkmachineipmistate"
                      },
                      {
                          "title": "tiers",
                          "rel": "tiers",
                          "type": "application/vnd.abiquo.tiers+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/storage/tiers"
                      },
                      {
                          "title": "storage devices",
                          "rel": "devices",
                          "type": "application/vnd.abiquo.storagedevices+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/storage/devices"
                      },
                      {
                          "title": "devices",
                          "rel": "devices",
                          "type": "application/vnd.abiquo.devices+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/devices"
                      },
                      {
                          "title": "network service types",
                          "rel": "networkservicetypes",
                          "type": "application/vnd.abiquo.networkservicetypes+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/networkservicetypes"
                      },
                      {
                          "title": "public networks",
                          "rel": "network",
                          "type": "application/vnd.abiquo.vlans+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/network"
                      },
                      {
                          "title": "external ips",
                          "rel": "externalips",
                          "type": "application/vnd.abiquo.externalips+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/network/action/externalips"
                      },
                      {
                          "title": "limits",
                          "rel": "getLimits",
                          "type": "application/vnd.abiquo.limits+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/action/getlimits"
                      },
                      {
                          "title": "excluded networks",
                          "rel": "excludednetworks",
                          "type": "application/vnd.abiquo.excludednetworks+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/excludednetworks"
                      },
                      {
                          "title": "NARS",
                          "rel": "remoteservice",
                          "type": "application/vnd.abiquo.remoteservice+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/remoteservices/4"
                      },
                      {
                          "title": "REMOTEACCESS",
                          "rel": "remoteservice",
                          "type": "application/vnd.abiquo.remoteservice+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/remoteservices/61"
                      },
                      {
                          "title": "VIRTUALSYSTEMMONITOR",
                          "rel": "remoteservice",
                          "type": "application/vnd.abiquo.remoteservice+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/remoteservices/2"
                      },
                      {
                          "title": "BPMSERVICE",
                          "rel": "remoteservice",
                          "type": "application/vnd.abiquo.remoteservice+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/remoteservices/6"
                      },
                      {
                          "title": "APPLIANCEMANAGER",
                          "rel": "remoteservice",
                          "type": "application/vnd.abiquo.remoteservice+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/remoteservices/3"
                      },
                      {
                          "title": "VIRTUALFACTORY",
                          "rel": "remoteservice",
                          "type": "application/vnd.abiquo.remoteservice+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/remoteservices/1"
                      },
                      {
                          "title": "metricsmetadata",
                          "rel": "metricsmetadata",
                          "type": "application/vnd.abiquo.metricsmetadata+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/metrics"
                      },
                      {
                          "title": "collectd",
                          "rel": "collectd",
                          "type": "application/json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/metrics/collectd"
                      },
                      {
                          "title": "alarmssearch",
                          "rel": "alarmssearch",
                          "type": "application/vnd.abiquo.alarms+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/alarms"
                      },
                      {
                          "title": "natnetworks",
                          "rel": "natnetworks",
                          "type": "application/vnd.abiquo.natnetworks+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/natnetworks"
                      },
                      {
                          "title": "Get nat ips",
                          "rel": "natips",
                          "type": "application/vnd.abiquo.natips+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/natnetworks/action/allips"
                      },
                      {
                          "title": "Get nat rules",
                          "rel": "natrules",
                          "type": "application/vnd.abiquo.natrules+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/datacenters/1/natnetworks/action/allrules"
                      },
                      {
                          "title": "repository",
                          "rel": "datacenterrepository",
                          "type": "application/vnd.abiquo.datacenterrepository+json",
                          "href": "https://.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1"
                      },
                      {
                          "title": "floating ips",
                          "rel": "ips",
                          "type": "application/vnd.abiquo.publicips+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/ips"
                      },
                      {
                          "title": "devices",
                          "rel": "devices",
                          "type": "application/vnd.abiquo.devices+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/devices"
                      },
                      {
                          "title": "available templates",
                          "rel": "templates",
                          "type": "application/vnd.abiquo.virtualmachinetemplates+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/templates"
                      },
                      {
                          "title": "remote vdcs",
                          "rel": "remotevirtualdatacenters",
                          "type": "application/vnd.abiquo.virtualdatacenters+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/action/remotevirtualdatacenters"
                      },
                      {
                          "title": "remote vms",
                          "rel": "remotevirtualmachines",
                          "type": "application/vnd.abiquo.virtualmachines+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/action/remotevirtualmachines"
                      },
                      {
                          "title": "available volumes",
                          "rel": "volumes",
                          "type": "application/vnd.abiquo.volumes+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/volumes"
                      },
                      {
                          "title": "available tiers",
                          "rel": "tiers",
                          "type": "application/vnd.abiquo.tiers+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/tiers"
                      },
                      {
                          "title": "Abiquo-DC",
                          "rel": "location",
                          "type": "application/vnd.abiquo.datacenter+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1"
                      },
                      {
                          "title": "backup policies",
                          "rel": "backuppolicies",
                          "type": "application/vnd.abiquo.backuppolicies+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/backuppolicies"
                      },
                      {
                          "title": "backup location properties",
                          "rel": "backupproperties",
                          "type": "application/vnd.abiquo.backupdatacenterproperties+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/backupproperties"
                      },
                      {
                          "title": "compatible datastore tiers",
                          "rel": "compatibles",
                          "type": "application/vnd.abiquo.links+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/datastoretiers/action/compatibles"
                      },
                      {
                          "title": "datastore tiers",
                          "rel": "datastoretiers",
                          "type": "application/vnd.abiquo.datastoretiers+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/datastoretiers"
                      },
                      {
                          "title": "metricsmetadata",
                          "rel": "metricsmetadata",
                          "type": "application/vnd.abiquo.metricsmetadata+json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/metrics"
                      },
                      {
                          "title": "collectd",
                          "rel": "collectd",
                          "type": "application/json",
                          "href": "https://.bcn.abiquo.com:443/api/cloud/locations/1/metrics/collectd"
                      },
                      {
                          "title": "VMware vCenter",
                          "rel": "hypervisortype",
                          "type": "application/vnd.abiquo.hypervisortype+json",
                          "href": "https://.bcn.abiquo.com:443/api/config/hypervisortypes/VMX_04"
                      }
                  ]
              }
          ]
      }
    6. You will need the edit, hypervisortype, and datacenterrepository links of the location.

      1. edit link

                        {
                            "title": "Abiquo-DC",
                            "rel": "edit",
                            "type": "application/vnd.abiquo.datacenter+json",
                            "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/datacenters/1"
                        },
      2. hypervisortype link for the hypervisor you would like to use in the virtual datacenter. The code of the hypervisor type is at the end of the link, for example, for VMware vCenter, the name is "VMX_04".

                        {
                            "title": "VMware vCenter",
                            "rel": "hypervisortype",
                            "type": "application/vnd.abiquo.hypervisortype+json",
                            "href": "https://abiquoapi.bcn.abiquo.com:443/api/config/hypervisortypes/VMX_04"
                        }
      3. datacenterrepository link to retrieve templates

                        {
                            "title": "repository",
                            "rel": "datacenterrepository",
                            "type": "application/vnd.abiquo.datacenterrepository+json",
                            "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1"
                        },
  3. Create a virtualdatacenter entity
    1. Reference: https://wiki.abiquo.com/api/latest/virtualdatacenter.html
    2. Add the links to the enterprise and the location and the hypervisorType attribute.
  4. Create a virtualdatacenter
    1. Reference: https://wiki.abiquo.com/api/latest/VirtualDatacentersResource.html#create-a-virtual-datacenter
    2. cURL

      curl -X POST https://abiquoapi.bcn.abiquo.com/api/cloud/virtualdatacenters \ 
      	 -H 'Accept:application/vnd.abiquo.asynctask+json; version=4.7' \ 
      	 -H 'Content-Type:application/vnd.abiquo.virtualdatacenter+json; version=4.7' \ 
      	 -d @virtualdatacentercreate.json \ 
      	 -u user:password --verbose 
    3. Virtual datacenter entity

       Click here to expand...
      {
        "hypervisorType" : "VMX_04",
        "name" : "vdc_test_create",
        "network" : {
          "name" : "Default Network",
          "address" : "192.168.0.0",
          "mask" : 24,
          "gateway" : "192.168.0.1",
          "primaryDNS" : "10.0.0.1",
          "secondaryDNS" : "10.0.0.1",
          "defaultNetwork" : false,
          "type" : "INTERNAL",
          "ipv6" : false,
          "strict" : false,
          "restricted" : false,
          "internetGatewayRole" : false,
          "ipRanges" : [ ],
          "excludedFromFirewall" : false,
          "notUsableLoadBalancers" : false,
          "notUsableVirtualMachines" : false,
          "links" : [ ]
        },
        "usersRole" : [ ],
        "vmsSoft" : 0,
        "vmsHard" : 0,
        "vlansSoft" : 0,
        "vlansHard" : 0,
        "publicIpsSoft" : 0,
        "publicIpsHard" : 0,
        "links" : [ {
          "rel" : "location",
          "href" : "https://.bcn.abiquo.com/api/cloud/locations/1"
        }, {
          "rel" : "enterprise",
          "href" : "https://.bcn.abiquo.com/api/admin/enterprises/15"
        } ],
        "ramSoft" : 0,
        "ramHard" : 0,
        "cpuSoft" : 0,
        "cpuHard" : 0
      }
    4. Sample response

       Click here to expand...
      {
          "creationTime": 1576592419286,
          "finished": true,
          "jobs": {
              "links": [],
              "collection": []
          },
          "links": [
              {
                  "rel": "self",
                  "type": "application/vnd.abiquo.asynctask+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/locations/1/asynctasks/1625"
              },
              {
                  "title": "vdc_test_create",
                  "rel": "owner",
                  "type": "application/vnd.abiquo.virtualdatacenter+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075"
              },
              {
                  "title": "Abiquo-DC",
                  "rel": "datacenter",
                  "type": "application/vnd.abiquo.datacenter+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/locations/1"
              },
              {
                  "title": "Video_enterprise",
                  "rel": "enterprise",
                  "type": "application/vnd.abiquo.enterprise+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15"
              }
          ]
      } 

      The "owner" link references the virtualdatacenter, so you can use it obtain the virtualdatacenter entity and you will also need it to create a virtual appliance.

              {
                  "title": "vdc_test_create",
                  "rel": "owner",
                  "type": "application/vnd.abiquo.virtualdatacenter+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075"
              },
  5. Create a virtual appliance
    1. Reference: https://wiki.abiquo.com/api/latest/VirtualAppliancesResource.html#create-a-virtual-appliance
    2. cURL

      curl -X POST https://abiquoapi.bcn.abiquo.com/api/cloud/virtualdatacenters/2075/virtualappliances \ 
      	 -H 'Accept:application/vnd.abiquo.virtualappliance+json; version=4.7' \ 
      	 -H 'Content-Type:application/vnd.abiquo.virtualappliance+json; version=4.7' \ 
      	 -d @virtualappliancecreate.json \ 
      	 -u user:password --verbose 
    3. Virtual appliance entity

      {
      	"name":"vapp_test_create"
      }
    4. Sample response. Success status code: 201

       Click here to expand...
      {
          "id": 2596,
          "error": 0,
          "highDisponibility": 0,
          "name": "vapp_test_create",
          "publicApp": 0,
          "state": "NOT_DEPLOYED",
          "restricted": false,
          "notAllocatedVirtualMachines": 0,
          "onVirtualMachines": 0,
          "offVirtualMachines": 0,
          "pausedVirtualMachines": 0,
          "allocatedVirtualMachines": 0,
          "configuredVirtualMachines": 0,
          "unknownVirtualMachines": 0,
          "lockedVirtualMachines": 0,
          "links": [
              {
                  "title": "vapp_test_create",
                  "rel": "edit",
                  "type": "application/vnd.abiquo.virtualappliance+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596"
              },
              {
                  "title": "vdc_test_create",
                  "rel": "virtualdatacenter",
                  "type": "application/vnd.abiquo.virtualdatacenter+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075"
              },
              {
                  "title": "Video_enterprise",
                  "rel": "enterprise",
                  "type": "application/vnd.abiquo.enterprise+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15"
              },
              {
                  "title": "virtual machines",
                  "rel": "virtualmachines",
                  "type": "application/vnd.abiquo.virtualmachines+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines"
              },
              {
                  "title": "virtual appliances state",
                  "rel": "state",
                  "type": "application/vnd.abiquo.virtualappliancestate+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/state"
              },
              {
                  "title": "undeploy",
                  "rel": "undeploy",
                  "type": "application/vnd.abiquo.acceptedrequest+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/action/undeploy"
              },
              {
                  "title": "deploy",
                  "rel": "deploy",
                  "type": "application/vnd.abiquo.acceptedrequest+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/action/deploy"
              },
              {
                  "title": "price",
                  "rel": "price",
                  "type": "text/plain",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/action/price"
              },
              {
                  "title": "layers",
                  "rel": "layers",
                  "type": "application/vnd.abiquo.layers+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/layers"
              },
              {
                  "title": "spec",
                  "rel": "spec",
                  "type": "application/vnd.abiquo.virtualappliancespec+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/action/spec"
              },
              {
                  "title": "tasks",
                  "rel": "tasks",
                  "type": "application/vnd.abiquo.tasks+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/tasks"
              },
              {
                  "title": "scalinggroups",
                  "rel": "scalinggroups",
                  "type": "application/vnd.abiquo.scalinggroups+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/scalinggroups"
              },
              {
                  "title": "metricsmetadata",
                  "rel": "metricsmetadata",
                  "type": "application/vnd.abiquo.metricsmetadata+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/metrics"
              },
              {
                  "title": "collectd",
                  "rel": "collectd",
                  "type": "application/json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/metrics/collectd"
              },
              {
                  "title": "alarmssearch",
                  "rel": "alarmssearch",
                  "type": "application/vnd.abiquo.alarms+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/alarms"
              }
          ]
      }
    5. You will need the virtualmachines link to create a VM

              {
                  "title": "virtual machines",
                  "rel": "virtualmachines",
                  "type": "application/vnd.abiquo.virtualmachines+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines"
              },      
  6. Get a compatible template from the Apps library
    1. Reference: https://wiki.abiquo.com/api/latest/VirtualMachineTemplatesResource.html#list-virtual-machine-templates-in-a-datacenter-repository
    2. Perform a GET request to the URL from the datacenterrepository link of the location. Get the virtualmachinetemplates link from the datacenterrepository.

    3. Get the VM templates using parameters including:

      1. hypervisorTypeName - for compatibility

      2. limit - for convenience
      3. has - filter template names by this text string
      See the above API Reference page for more details.
    4. cURL

      curl --verbose -X GET "https://abiquoapi.bcn.abiquo.com/api/admin/enterprises/15/datacenterrepositories/1/virtualmachinetemplates?hypervisorTypeName=VMX_04&limit=1&has=Core" \
      -H "Accept: application/vnd.abiquo.virtualmachinetemplates+json; version=4.7;" \
      -u user:password
    5. Sample response. Success status code: 201

       Click here to expand...
      {
          "totalSize": 2,
          "links": [
              {
                  "rel": "first",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1/virtualmachinetemplates?hypervisorTypeName=VMX_04&limit=1&has=Core&by=state&asc=true"
              },
              {
                  "rel": "next",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1/virtualmachinetemplates?hypervisorTypeName=VMX_04&startwith=1&limit=1&has=Core&by=state&asc=true"
              },
              {
                  "rel": "last",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1/virtualmachinetemplates?hypervisorTypeName=VMX_04&startwith=1&limit=1&has=Core&by=state&asc=true"
              }
          ],
          "collection": [
              {
                  "id": "3",
                  "name": "Core",
                  "description": "root : abiquo",
                  "osType": "LINUX_64",
                  "osVersion": "",
                  "cpuRequired": 1,
                  "ramRequired": 64,
                  "shared": true,
                  "state": "DONE",
                  "creationDate": "2017-02-06T23:37:41.000+0000",
                  "creationUser": "SYSTEM",
                  "chefEnabled": false,
                  "iconUrl": "https://upload.wikimedia.org/wikipedia/commons/a/af/Tux.png",
                  "loginUser": "user",
                  "loginPassword": "password",
                  "ethernetDriverType": "E1000",
                  "variables": {},
                  "enableCpuHotAdd": false,
                  "enableRamHotAdd": false,
                  "enableDisksHotReconfigure": false,
                  "enableNicsHotReconfigure": false,
                  "enableRemoteAccessHotReconfigure": false,
                  "enableOnlyHPRecommended": false,
                  "generateGuestInitialPassword": false,
                  "productCodes": [],
                  "links": [
                      {
                          "title": "Video_enterprise",
                          "rel": "enterprise",
                          "type": "application/vnd.abiquo.enterprise+json",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15"
                      },
                      {
                          "title": "Others",
                          "rel": "category",
                          "type": "application/vnd.abiquo.category+json",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/api/config/categories/1"
                      },
                      {
                          "title": "Core",
                          "rel": "edit",
                          "type": "application/vnd.abiquo.virtualmachinetemplate+json",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1/virtualmachinetemplates/3"
                      },
                      {
                          "title": "tasks",
                          "rel": "tasks",
                          "type": "application/vnd.abiquo.tasks+json",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1/virtualmachinetemplates/3/tasks"
                      },
                      {
                          "title": "repository",
                          "rel": "datacenterrepository",
                          "type": "application/vnd.abiquo.datacenterrepository+json",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1"
                      },
                      {
                          "title": "virtual machines",
                          "rel": "virtualmachines",
                          "type": "application/vnd.abiquo.virtualmachines+json",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1/virtualmachinetemplates/3/action/virtualmachines"
                      },
                      {
                          "title": "disks",
                          "rel": "disks",
                          "type": "application/vnd.abiquo.disks+json",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1/virtualmachinetemplates/3/disks"
                      },
                      {
                          "rel": "disk0",
                          "type": "application/vnd.abiquo.disk+json",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1/virtualmachinetemplates/3/disks/3"
                      },
                      {
                          "title": "template definition",
                          "rel": "templatedefinition",
                          "href": "http://rs.bcn.abiquo.com:9000/ovf/305/desc.ovf"
                      },
                      {
                          "title": "template path",
                          "rel": "templatePath",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/am/erepos/15/templates/1/rs.bcn.abiquo.com/abiport9000/ovf/305/"
                      },
                      {
                          "title": "Global scope",
                          "rel": "scope",
                          "type": "application/vnd.abiquo.scope+json",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/scopes/1"
                      }
                  ]
              }
          ]
      }
    6. Select the virtualmachinetemplate object you want to use and get the edit link

                      {
                          "title": "Core",
                          "rel": "edit",
                          "type": "application/vnd.abiquo.virtualmachinetemplate+json",
                          "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1/virtualmachinetemplates/3"
                      },
    7. Troubleshooting: if the request doesn't return any templates, you may need to refresh the datacenter repository. Reference: 

  7. Create a VM entity
    1. The link to specify the template is the only required attribute. In this case, we are also setting the friendly name of the VM and enabling remote access.

      {  
         "label":"Core_VM",
         "links":[  
            {  
               "title":"Core",
               "rel":"virtualmachinetemplate",
               "type":"application/vnd.abiquo.virtualmachinetemplate+json",
               "href":"https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1/virtualmachinetemplates/3"
            }
         ],
         "vdrpEnabled":true
      }


  8. Create a VM
    1. Perform a POST request to the URL of the virtualmachines link from the virtual appliance
    2. cURL

      curl -X POST https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines \ 
      	 -H 'Accept:application/vnd.abiquo.virtualmachine+json; version=4.7' \ 
      	 -H 'Content-Type:application/vnd.abiquo.virtualmachine+json; version=4.7' \ 
      	 -d @virtualmachineentity.json \ 
      	 -u user:password --verbose 
    3. The virtualmachineentity.json file to send with this request is shown in the previous step. 
    4. Sample response. Success status code: 201

       Click here to expand...
      {
          "id": 16644,
          "uuid": "6e28ff4d-207a-4299-9b52-a3bc6ced856a",
          "description": "root : abiquo",
          "coresPerSocket": 1,
          "idState": 1,
          "idType": 0,
          "type": "MANAGED",
          "highDisponibility": 0,
          "monitored": true,
          "protected": false,
          "variables": {},
          "backuppolicies": [],
          "generateGuestInitialPassword": false,
          "natrules": [],
          "vdrpEnabled": true,
          "vdrpPort": 0,
          "password": "h6JXpuku",
          "name": "ABQ_6e28ff4d-207a-4299-9b52-a3bc6ced856a",
          "label": "Core_VM",
          "ram": 64,
          "cpu": 1,
          "state": "NOT_ALLOCATED",
          "creationTimestamp": 1576606467000,
          "iconUrl": "https://upload.wikimedia.org/wikipedia/commons/a/af/Tux.png",
          "links": [
              {
                  "title": "Video_enterprise",
                  "rel": "enterprise",
                  "type": "application/vnd.abiquo.enterprise+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15"
              },
              {
                  "title": "ABQ_6e28ff4d-207a-4299-9b52-a3bc6ced856a",
                  "rel": "edit",
                  "type": "application/vnd.abiquo.virtualmachine+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644"
              },
              {
                  "title": "send mail",
                  "rel": "sendmail",
                  "type": "application/vnd.abiquo.mail+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/publiccloudregions/1/enterprises/15/virtualmachines/16644/action/sendmail"
              },
              {
                  "title": "cloudadmin cloudadmin",
                  "rel": "user",
                  "type": "application/vnd.abiquo.user+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/users/10"
              },
              {
                  "title": "vdc_test_create",
                  "rel": "virtualdatacenter",
                  "type": "application/vnd.abiquo.virtualdatacenter+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075"
              },
              {
                  "title": "vapp_test_create",
                  "rel": "virtualappliance",
                  "type": "application/vnd.abiquo.virtualappliance+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596"
              },
              {
                  "title": "metadata",
                  "rel": "metadata",
                  "type": "application/vnd.abiquo.metadata+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/metadata"
              },
              {
                  "title": "vlan network configurations",
                  "rel": "configurations",
                  "type": "application/vnd.abiquo.virtualmachinenetworkconfigurations+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/network/configurations"
              },
              {
                  "title": "nics",
                  "rel": "nics",
                  "type": "application/vnd.abiquo.nics+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/network/nics"
              },
              {
                  "title": "disks",
                  "rel": "harddisks",
                  "type": "application/vnd.abiquo.harddisks+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/storage/disks"
              },
              {
                  "title": "NOT_ALLOCATED",
                  "rel": "state",
                  "type": "application/vnd.abiquo.virtualmachinestate+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/state"
              },
              {
                  "title": "virtual machine undeploy",
                  "rel": "undeploy",
                  "type": "application/vnd.abiquo.acceptedrequest+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/action/undeploy"
              },
              {
                  "title": "virtual machine deploy",
                  "rel": "deploy",
                  "type": "application/vnd.abiquo.acceptedrequest+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/action/deploy"
              },
              {
                  "title": "virtual machine reset",
                  "rel": "reset",
                  "type": "application/vnd.abiquo.acceptedrequest+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/action/reset"
              },
              {
                  "title": "virtual machine snapshot",
                  "rel": "instance",
                  "type": "application/vnd.abiquo.acceptedrequest+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/action/instance"
              },
              {
                  "title": "remote access",
                  "rel": "rdpaccess",
                  "type": "application/vnd.abiquo.virtualmachineconsole+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/config/rdpaccess"
              },
              {
                  "title": "tasks",
                  "rel": "tasks",
                  "type": "application/vnd.abiquo.tasks+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/tasks"
              },
              {
                  "title": "firewalls",
                  "rel": "firewalls",
                  "type": "application/vnd.abiquo.links+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/firewalls"
              },
              {
                  "title": "load balancers",
                  "rel": "loadbalancers",
                  "type": "application/vnd.abiquo.loadbalancers+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/loadbalancers"
              },
              {
                  "title": "request on demand backup",
                  "rel": "requestbackup",
                  "type": "application/vnd.abiquo.ondemandbackup+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/backup/action/request"
              },
              {
                  "title": "request a restore of a backup",
                  "rel": "requestrestore",
                  "type": "application/vnd.abiquo.restore+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/backup/action/restore"
              },
              {
                  "title": "move VM to a virtual appliance",
                  "rel": "vappmove",
                  "type": "application/vnd.abiquo.links+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/action/vappmove"
              },
              {
                  "title": "move VM to another virtual datacenter",
                  "rel": "move",
                  "type": "application/vnd.abiquo.movevm+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/action/move"
              },
              {
                  "title": "volumes",
                  "rel": "volumes",
                  "type": "application/vnd.abiquo.volumes+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/storage/volumes"
              },
              {
                  "diskController": "lsilogic",
                  "diskControllerType": "SCSI",
                  "length": "100",
                  "title": "f693e374-e07e-4a94-99db-a7268a904484",
                  "rel": "disk0",
                  "type": "application/vnd.abiquo.harddisk+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/disks/15069"
              },
              {
                  "title": "datastoretierESXI6.0_2.29",
                  "rel": "datastoretier0",
                  "type": "application/vnd.abiquo.datastoretier+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/locations/1/datastoretiers/58"
              },
              {
                  "title": "protect",
                  "rel": "protect",
                  "type": "text/plain",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/action/protect"
              },
              {
                  "title": "unprotect",
                  "rel": "unprotect",
                  "type": "text/plain",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/action/unprotect"
              },
              {
                  "title": "metricsmetadata",
                  "rel": "metricsmetadata",
                  "type": "application/vnd.abiquo.metricsmetadata+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/metrics"
              },
              {
                  "title": "disablemonitoring",
                  "rel": "disablemonitoring",
                  "type": "",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/disablemonitoring"
              },
              {
                  "title": "collectd",
                  "rel": "collectd",
                  "type": "application/json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/metrics/collectd"
              },
              {
                  "title": "alarmssearch",
                  "rel": "alarmssearch",
                  "type": "application/vnd.abiquo.alarms+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/alarms"
              },
              {
                  "title": "clone",
                  "rel": "clone",
                  "type": "application/vnd.abiquo.virtualmachinecloneoptions+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/action/clone"
              },
              {
                  "title": "VMware vCenter",
                  "rel": "hypervisortype",
                  "type": "application/vnd.abiquo.hypervisortype+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/config/hypervisortypes/VMX_04"
              },
              {
                  "title": "Core",
                  "rel": "virtualmachinetemplate",
                  "type": "application/vnd.abiquo.virtualmachinetemplate+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/admin/enterprises/15/datacenterrepositories/1/virtualmachinetemplates/3"
              },
              {
                  "title": "Others",
                  "rel": "category",
                  "type": "application/vnd.abiquo.category+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/config/categories/1"
              }
          ],
          "usageStatistics": []
      }
    5. You will need the deploy link to launch the VM

              {
                  "title": "virtual machine deploy",
                  "rel": "deploy",
                  "type": "application/vnd.abiquo.acceptedrequest+json",
                  "href": "https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/action/deploy"
              },
  9. Deploy the VM
    1. Reference: https://wiki.abiquo.com/api/latest/VirtualMachinesResource.html#deploy-a-virtual-machine
    2. cURL

      curl -X POST https://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/action/deploy \ 
      	 -H 'Accept:application/vnd.abiquo.acceptedrequest+json;version=4.7' \ 
      	 -u user:password --verbose 
    3. Sample response. Success status code: 202
      This request returns an acceptedrequest object with a link to track the progress of the deploy.

       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://abiquoapi.bcn.abiquo.com:443/api/cloud/virtualdatacenters/2075/virtualappliances/2596/virtualmachines/16644/tasks/d49aedbe-cc20-4410-9e74-2de1243342aa"
              }
          ]
      }
    4. Alternatively, you can deploy all the VMs in the virtual appliance using the deploy link from the virtual appliance.

Your VM should now be deployed and powered on. Congratulations! You have completed this tutorial.


Copyright © 2006-2022, Abiquo Holdings SL. All rights reserved