...
The steps in this diagram link to the API reference guide resources and data entities sections.
Mermaid | ||||||
---|---|---|---|---|---|---|
| ||||||
{"diagramDefinition":"graph TD\r\n\r\nZ(( ))\r\n\r\nstyle Z fill:#g1g,stroke:#100,stroke-width:20px\r\n\r\nZ-->A(<font color=0052cc>Get enterprise by name and<br/>switch to the enterprise)\r\n\r\nclick A href \"https://wiki.abiquo.com/display/doc/How+to+switch+enterprises+via+API\"\r\n\r\nA -->B(Also keep the<br/>datacenterrepositories link)\r\n \r\nB -->C(<font color=0052cc>Get enterprise<br/>datacenter repositories)\r\n\r\nclick C href \"https://wiki.abiquo.com/api/latest/DatacenterRepositoriesResource.html#list-datacenter-repositories\"\r\n\r\nC-->D(<font color=0052cc>Refresh DC Apps library)\r\n\r\nclick D href \"https://wiki.abiquo.com/api/latest/DatacenterRepositoriesResource.html#refresh-a-datacenter-repository-to-detect-new-virtual-machine-templates\"\r\n\r\nD-->E(<font color=0052cc>Find a template<br/>in a remote repository)\r\n\r\nclick E href \"https://wiki.abiquo.com/api/latest/TemplateDefinitionListsResource.html#list-template-definition-lists\"\r\n\r\nE-->F(<font color=0052cc>Create a template in a DC from<br/>the template definition)\r\n\r\nclick F href \"https://wiki.abiquo.com/api/latest/VirtualMachineTemplatesResource.html#create-a-virtual-machine-template-in-a-datacenter-repository-by-download-promote-or-export]\"\r\n\r\nF-->G(<font color=0052cc>Get a compatible template<br/>from the DC Apps library)\r\n\r\nclick G href \"https://wiki.abiquo.com/api/latest/VirtualMachineTemplatesResource.html#list-virtual-machine-templates-in-a-datacenter-repository\"\r\n\r\nD-->G\r\n\r\nG-->Q((<fontcolour=f3efe6> * ))\r\n\tstyle Q fill:#f3efe6,stroke:#030300,stroke-width:7px,color:#f3efe6"} |
Detailed steps
Get the enterprise by name and switch to the enterprise
Reference: 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" },
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 datacenter repository to update the Apps library
Perform a PUT request to the refresh link.
cURL
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
Retrieve a compatible template
If a compatible template already exists, you can retrieve it now using the templates link and parameters.
cURL
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" },
Or download a template 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.
cURL
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
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
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" } ] }
cURL
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
This request will return a link. You can use the link to track the progress of the task.
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.
...