https://blueprints.launchpad.net/karbor/+spec/instances-extra-info
We can only query the id, name and type of protectable instance using the restful API of protectable instance. We can not get more info about the resource instance. Some other info about instance is also needed when we protect resources with different resources type. For example: database instance. only the name of database instance is not enough. The host ip, the database system name about the instance are also needed.
Scenario #1 User want get the extra info of resource instances from the response of protectable instances API. Now the protectable instances API only return the id, name and type of the resource instances.
Scenario #2 User uses the Protectable Instances API to query the info of instances from the vendor’s backup software. User also can save the extra_info of resource instances to the plan, not only the id, name, type of resources.
Protectable Instances API:
When return a protectable instance, a new field would be available called
extra-info
.
This field must be a dict in the format of:
{
"key1": "value1",
"key2": "value2",
}
Keys and values must both be strings. The extra-info of instances is only used for presentation to a user/tenant. The values in extra-info filed of a resource can not be used inside the protection service of karbor and protection plugins.
The UI about the extra-info of protectable instances Show the extra-info in resource tree page. Add a fa-chevron-right icon before the Logo of the resource. The extra-info of this resource is collapsed by default. If a user/tenant click the icon, The extra-info will be displayed under this resource. Click the icon again, the extra-info will be collapsed.
Add a new field extra_info to the response for Protectable Instances API:
/{project_id}/protectables/{protectable_type}/instances:
get:
summary: Resource Instances
description: |
Return all the available instances for the given protectable type.
examples:
application/json: {
"instances": [
{
"id": "cb4ef2ff-10f5-46c9-bce4-cf7a49c65a01",
"type": "OS::Nova::Server",
"name": "My VM",
"extra_info": {
"hostname": "KarborServer",
"availability_zone": "AZOne",
"cell_name": "CellOne"
}
"dependent_resources": [
{
"id": "99777fdd-8a5b-45ab-ba2c-52420008103f",
"type": "OS::Glance::Image",
"name": "cirros-0.3.4-x86_64-uec"
"extra_info": {
"availability_zone": "AZOne",
"cell_name": "CellOne"
}
}
]
}
]
}
Protectable Plugins can return the extra_info of resource Instances.
The extra_info field in resource database table is only for presentation to a user/tenant. The values in extra_info field can not be used and modified in karbor protection service. Add a new field extra_info to resources database table;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
id | Integer | NO | PRI | NULL | |
plan_id | varchar(255) | NO | FOR | NULL | |
resource_id | varchar(36) | NO | NULL | ||
resource_type | varchar(64) | NO | NULL | ||
resource_name | varchar(255) | NO | NULL | ||
resource_extra_info | Text | NO | NULL | ||
created_at | Datetime | YES | NULL | ||
updated_at | Datetime | YES | NULL | ||
deleted_at | Datetime | YES | NULL | ||
deleted | Boolean | NO | NULL |
Do nothing, this is not a mission critical feature.
None
Add a new field extra_info to the response for Protectable Instances API.
None
None
The new API will be exposed to users via the python-karborclient.
None
None
None
None
Unit tests in Karbor and the python-karborclient.
Add a usage example for API.
None
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.