...
The steps in this diagram link to the API reference guide resources and data entities sections.
Detailed steps
- Get the enterprise Get enterprises by name or get the enterprise ID and switch to the enterprise
- Reference:
- cURL
- Keep How to switch enterprises via API
- Also keep the datacenterrepositories link of the enterprise
Code Block { "title": "repositories", "rel": "datacenterrepositories", "type": "application/vnd.abiquo.datacenterrepositories+json", "href": "https://example.com:443/api/admin/enterprises/267/datacenterrepositories" },
- Reference: How to switch enterprises via API
- Add templates to the enterprise's Apps library
Get the datacenter repositories for the enterprise. From the enterprise entity, use the URL of the datacenter repositories link
Code Block { "title": "repositories", "rel": "datacenterrepositories", "type": "application/vnd.abiquo.datacenterrepositories+json", "href": "https://example.com:443/api/admin/enterprises/267/datacenterrepositories" },
Reference: https://wiki.abiquo.com/api/latest/DatacenterRepositoriesResource.html#list-datacenter-repositories
From each datacenter repository, you will need the refresh link
Code Block { "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.
Code Block { "title": "virtual machine templates", "rel": "virtualmachinetemplates", "type": "application/vnd.abiquo.virtualmachinetemplates+json", "href": "https://example.com:443/api/admin/enterprises/267/datacenterrepositories/1/virtualmachinetemplates" },
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
Code Block 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
The refresh is an asynchronous task, so wait until it has completed to go on to the next step
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
Expand Code Block 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
From a compatible template, you will need the edit link
Code Block { "title": "Core", "rel": "edit", "type": "application/vnd.abiquo.virtualmachinetemplate+json", "href": "https://example.com:443/api/admin/enterprises/267/datacenterrepositories/1/virtualmachinetemplates/3" },
- If there are no templates, you can download one from a remote repository. There is a default remote repository registered in Abiquo
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
Code Block 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
Sample response. Success status code: 200. From the response, search for a suitable template definition
Expand Code Block { "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": [] } ] },
From the template definition, keep the edit link
Code Block { "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" }
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
Code Block 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"
Code Block { "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.
Expand Code Block { "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.
...